Skip to content

Instantly share code, notes, and snippets.

grammar Syntax {
token TOP { ^ <list> $ }
token list { <expression>+ % <.space>+ }
token expression {
<match=.atom>
| <match=.parens>
| <match=.squares>
}
@gerdr
gerdr / debugging
Created October 13, 2012 21:51
Parrot IO readline fail
$ gdb install/bin/perl6
[...]
(gdb) break Parrot_api_run_bytecode
Breakpoint 1 at 0x401778
(gdb) break Parrot_io_readline_s
Function "Parrot_io_readline_s" not defined.
Make breakpoint pending on future shared library load? (y or [n]) y
Breakpoint 2 (Parrot_io_readline_s) pending.
(gdb) run -e 'pir::print__is(pir::getstdin__P.readline)'
@gerdr
gerdr / gist:4182415
Created December 1, 2012 14:00
File::Spec fail
Obsolete use of | or \ with sigil on param $arr
Too many positional parameters passed; got 2 but expected 1
in method catfile at /home/gerdr/.perl6/lib/File/Spec/Cygwin.pm:10
in method catfile at /home/gerdr/.perl6/lib/File/Spec.pm:23
in method postcircumfix:<( )> at /home/gerdr/.perl6/lib/Inline/C.pm:117
in at src/gen/BOOTSTRAP.pm:852
in any at src/gen/BOOTSTRAP.pm:836
@gerdr
gerdr / gist:4216992
Created December 5, 2012 16:11
auto-detecting Perl source files

Language dialect:

  • --perl as a catch-all
  • --perl5 and --perl6 for files that can positively identified as one or the other

Criteria for the latter:

  • file extension: .p5, .pl5, .pm5 vs .p6, .pl6, .pm6
  • shebang
  • use v* in first (non-shebang or non-comment?) line for files with generic extension
@gerdr
gerdr / base62.pl
Last active December 10, 2015 01:58
use v6;
my @CHARS = '0'..'9', 'a'..'z', 'A'..'Z';
my %MAP = @CHARS.pairs.map(*.invert);
sub encode($string as Str, :$escape = '_', *@skip) {
my multi encode-char($_ where any(@CHARS, @skip)) { $_ }
my multi encode-char($_) {
my $cp = .ord;
$escape, reverse gather for ^4 {
/usr/local/bin/pbc_to_exe.exe nqp.pbc
[...]
Class '[ 'File' ]' not found
current instr.: 'link_file' pc 1768 (tools/dev/pbc_to_exe.pir:558)
called from Sub 'main' pc 240 (tools/dev/pbc_to_exe.pir:75)
Makefile:739: recipe for target `nqp.exe' failed
make: *** [nqp.exe] Error 1
/usr/local/bin/pbc_to_exe.exe perl6.pbc
[...]
@gerdr
gerdr / mangle.pl
Last active December 10, 2015 16:38
use v6;
# see http://catb.org/jargon/html/A/ASCII.html
# excludes _:. as these are allowed in HTML IDs
my %table = map &uc, qw{{
! bang
" dquote
# sharp
$ dollar
@gerdr
gerdr / gist:4492329
Created January 9, 2013 11:03
grammar-debugger bitrot
# Grammar::Debugger
Obsolete use of | or \ with sigil on param $args
===SORRY!===
Invalid BUILDALLPLAN
# Grammar::Tracer
TOP
| toprule-decl
| | name
| | | orig # <-- not user-defined
$ perl6 --version
This is perl6 version 2012.12-63-ge267037 built on parrot 4.11.0 revision RELEASE_4_11_0-135-g73c6d32
$ cat > Foo.pm
macro FOO { quasi { my $foo = { 42 } } }
$ perl6 --target=pir Foo.pm
===SORRY!===
Serialization Error: Unimplemented object type 'MDThunk' passed to write_ref
use v6;
sub largest-prime-factor($n is copy) {
for 2, 3, *+2 ... * {
while $n %% $_ {
$n div= $_;
return $_ if $_ > $n;
}
}
}