Perl6::Grammar at 0
#commentNL say "hello";NL NL my $i = 10;NL print "hello $i" if :10<1>;NL NL if ( 1 + :2<1> == 2 ) {NL say 0 + 1 ~ 'a' ~ "b{$i}c";NL }NL NL say ">", 1+0, 1 == 2;NL NL say 1+2 + 3+4;NL
--> statement_block
Perl6::Grammar at 10
#comment
say "hello";NL NL my $i = 10;NL print "hello $i" if :10<1>;NL NL if ( 1 + :2<1> == 2 ) {NL say 0 + 1 ~ 'a' ~ "b{$i}c";NL }NL NL say ">", 1+0, 1 == 2;NL NL say 1+2 + 3+4;NL
--> statementlist
Perl6::Grammar at 10
--> statement
ResizablePMCArray (size:6)
[0] =>
Perl6::Grammar at 10
say "hello"
; my $i = 10; print "hello $i" if :10<1>; if ( 1 + :2<1> == 2 ) { say 0 + 1 ~ 'a' ~ "b{$i}c"; } say ">", 1+0, 1 == 2; say 1+2 + 3+4;
--> expr
Perl6::Grammar at 10
--> expr
Perl6::Grammar at 10
--> listop
Perl6::Grammar at 10
--> sym
Perl6::Grammar at 10
say
"hello"
--> arglist
Perl6::Grammar at 14
say
"hello"
--> EXPR
Perl6::Grammar at 14
--> expr
Perl6::Grammar at 14
--> noun
Perl6::Grammar at 14
--> value
Perl6::Grammar at 14
--> quote
Perl6::Grammar at 14
--> quote_expression
Perl6::Grammar at 14
--> quote_concat
ResizablePMCArray (size:1)
[0] =>
Perl6::Grammar at 15
"
hello
"
--> quote_term
ResizablePMCArray (size:1)
[0] =>
Perl6::Grammar at 15
--> quote_literal
Perl6::Grammar at 15
--> type
"term:"
--> top
--> type
"term:"
--> top
[1] =>
Perl6::Grammar at 26
say "hello";
my $i = 10
; print "hello $i" if :10<1>; if ( 1 + :2<1> == 2 ) { say 0 + 1 ~ 'a' ~ "b{$i}c"; } say ">", 1+0, 1 == 2; say 1+2 + 3+4;
--> expr
Perl6::Grammar at 26
--> expr
PGE::Match at 32
my $i
=
10
--> type
"infix:="
--> top
[0] =>
Perl6::Grammar at 26
my $i
= 10
--> noun
Perl6::Grammar at 26
--> scope_declarator
Perl6::Grammar at 26
--> declarator
Perl6::Grammar at 26
my
$i
--> variable
Perl6::Grammar at 29
my
$i
--> sigil
Perl6::Grammar at 29
$
i
--> name
Perl6::Grammar at 30
$
i
--> ident
ResizablePMCArray (size:1)
[0] =>
Perl6::Grammar at 30
--> type
"term:"
--> top
[1] =>
Perl6::Grammar at 34
my $i =
10
--> noun
Perl6::Grammar at 34
--> value
Perl6::Grammar at 34
--> number
Perl6::Grammar at 34
--> integer
Perl6::Grammar at 34
--> type
"term:"
--> top
[2] =>
Perl6::Grammar at 39
say "hello"; my $i = 10;
print "hello $i" if :10<1>
; if ( 1 + :2<1> == 2 ) { say 0 + 1 ~ 'a' ~ "b{$i}c"; } say ">", 1+0, 1 == 2; say 1+2 + 3+4;
--> expr
Perl6::Grammar at 39
print "hello $i"
if :10<1>
--> expr
Perl6::Grammar at 39
--> listop
Perl6::Grammar at 39
--> sym
Perl6::Grammar at 39
print
"hello $i"
--> arglist
Perl6::Grammar at 45
print
"hello $i"
--> EXPR
Perl6::Grammar at 45
--> expr
Perl6::Grammar at 45
--> noun
Perl6::Grammar at 45
--> value
Perl6::Grammar at 45
--> quote
Perl6::Grammar at 45
--> quote_expression
Perl6::Grammar at 45
--> quote_concat
ResizablePMCArray (size:1)
[0] =>
Perl6::Grammar at 46
"
hello $i
"
--> quote_term
ResizablePMCArray (size:2)
[0] =>
Perl6::Grammar at 46
hello
$i
--> quote_literal
Perl6::Grammar at 46
[1] =>
Perl6::Grammar at 52
hello
$i
--> variable
Perl6::Grammar at 52
--> sigil
Perl6::Grammar at 52
$
i
--> name
Perl6::Grammar at 53
$
i
--> ident
ResizablePMCArray (size:1)
[0] =>
Perl6::Grammar at 53
--> type
"term:"
--> top
--> type
"term:"
--> top
--> statement_mod_cond
Perl6::Grammar at 56
print "hello $i"
if :10<1>
--> sym
Perl6::Grammar at 56
if
:10<1>
--> EXPR
Perl6::Grammar at 59
if
:10<1>
--> expr
Perl6::Grammar at 59
--> noun
Perl6::Grammar at 59
--> value
Perl6::Grammar at 59
--> number
Perl6::Grammar at 59
--> rad_number
Perl6::Grammar at 59
--> radix
Perl6::Grammar at 60
:
10
<1>
--> intpart
Perl6::Grammar at 63
:10<
1
>
--> fracpart
Perl6::Grammar at 64
--> type
"term:"
--> top
[3] =>
Perl6::Grammar at 70
say "hello"; my $i = 10; print "hello $i" if :10<1>;
if ( 1 + :2<1> == 2 ) {NL say 0 + 1 ~ 'a' ~ "b{$i}c";NL }NL NL
say ">", 1+0, 1 == 2; say 1+2 + 3+4;
--> statement_control
Perl6::Grammar at 70
--> if_statement
Perl6::Grammar at 70
--> sym
Perl6::Grammar at 70
if
( 1 + :2<1> == 2 ) { say 0 + 1 ~ 'a' ~ "b{$i}c"; }
--> EXPR
ResizablePMCArray (size:1)
[0] =>
Perl6::Grammar at 73
if
( 1 + :2<1> == 2 )
{ say 0 + 1 ~ 'a' ~ "b{$i}c"; }
--> expr
Perl6::Grammar at 73
--> noun
Perl6::Grammar at 73
--> circumfix
Perl6::Grammar at 73
--> statementlist
Perl6::Grammar at 74
(
1 + :2<1> == 2
)
--> statement
ResizablePMCArray (size:1)
[0] =>
Perl6::Grammar at 75
1 + :2<1> == 2
--> expr
Perl6::Grammar at 75
1 + :2<1> == 2
--> expr
PGE::Match at 85
1 + :2<1>
==
2
--> type
"infix:=="
--> top
[0] =>
PGE::Match at 77
1
+
:2<1> == 2
--> type
"infix:+"
--> top
[0] =>
Perl6::Grammar at 75
1
+ :2<1> == 2
--> noun
Perl6::Grammar at 75
--> value
Perl6::Grammar at 75
--> number
Perl6::Grammar at 75
--> integer
Perl6::Grammar at 75
--> type
"term:"
--> top
[1] =>
Perl6::Grammar at 79
1 +
:2<1>
== 2
--> noun
Perl6::Grammar at 79
--> value
Perl6::Grammar at 79
--> number
Perl6::Grammar at 79
--> rad_number
Perl6::Grammar at 79
--> radix
Perl6::Grammar at 80
:
2
<1>
--> intpart
Perl6::Grammar at 82
:2<
1
>
--> fracpart
Perl6::Grammar at 83
--> type
"term:"
--> top
[1] =>
Perl6::Grammar at 88
1 + :2<1> ==
2
--> noun
Perl6::Grammar at 88
--> value
Perl6::Grammar at 88
--> number
Perl6::Grammar at 88
--> integer
Perl6::Grammar at 88
--> type
"term:"
--> top
--> type
"term:"
--> top
--> block
ResizablePMCArray (size:1)
[0] =>
Perl6::Grammar at 92
if ( 1 + :2<1> == 2 )
{NL say 0 + 1 ~ 'a' ~ "b{$i}c";NL }NL NL
--> statement_block
Perl6::Grammar at 93
{
NL say 0 + 1 ~ 'a' ~ "b{$i}c";NL
}
--> statementlist
Perl6::Grammar at 99
say 0 + 1 ~ 'a' ~ "b{$i}c";NL
--> statement
ResizablePMCArray (size:1)
[0] =>
Perl6::Grammar at 99
say 0 + 1 ~ 'a' ~ "b{$i}c"
;
--> expr
Perl6::Grammar at 99
--> expr
Perl6::Grammar at 99
--> listop
Perl6::Grammar at 99
--> sym
Perl6::Grammar at 99
say
0 + 1 ~ 'a' ~ "b{$i}c"
--> arglist
Perl6::Grammar at 103
say
0 + 1 ~ 'a' ~ "b{$i}c"
--> EXPR
Perl6::Grammar at 103
--> expr
PGE::Match at 115
0 + 1 ~ 'a'
~
"b{$i}c"
--> type
"infix:~"
--> top
[0] =>
PGE::Match at 109
0 + 1
~
'a' ~ "b{$i}c"
--> type
"infix:~"
--> top
[0] =>
PGE::Match at 105
0
+
1 ~ 'a' ~ "b{$i}c"
--> type
"infix:+"
--> top
[0] =>
Perl6::Grammar at 103
0
+ 1 ~ 'a' ~ "b{$i}c"
--> noun
Perl6::Grammar at 103
--> value
Perl6::Grammar at 103
--> number
Perl6::Grammar at 103
--> integer
Perl6::Grammar at 103
--> type
"term:"
--> top
[1] =>
Perl6::Grammar at 107
0 +
1
~ 'a' ~ "b{$i}c"
--> noun
Perl6::Grammar at 107
--> value
Perl6::Grammar at 107
--> number
Perl6::Grammar at 107
--> integer
Perl6::Grammar at 107
--> type
"term:"
--> top
[1] =>
Perl6::Grammar at 111
0 + 1 ~
'a'
~ "b{$i}c"
--> noun
Perl6::Grammar at 111
--> value
Perl6::Grammar at 111
--> quote
Perl6::Grammar at 111
--> quote_expression
Perl6::Grammar at 111
--> quote_concat
ResizablePMCArray (size:1)
[0] =>
Perl6::Grammar at 112
'
a
'
--> quote_term
ResizablePMCArray (size:1)
[0] =>
Perl6::Grammar at 112
--> quote_literal
Perl6::Grammar at 112
--> type
"term:"
--> top
[1] =>
Perl6::Grammar at 117
0 + 1 ~ 'a' ~
"b{$i}c"
--> noun
Perl6::Grammar at 117
--> value
Perl6::Grammar at 117
--> quote
Perl6::Grammar at 117
--> quote_expression
Perl6::Grammar at 117
--> quote_concat
ResizablePMCArray (size:1)
[0] =>
Perl6::Grammar at 118
"
b{$i}c
"
--> quote_term
ResizablePMCArray (size:3)
[0] =>
Perl6::Grammar at 118
b{
$i}c
--> quote_literal
Perl6::Grammar at 118
[1] =>
Perl6::Grammar at 120
b{
$i
}c
--> variable
Perl6::Grammar at 120
--> sigil
Perl6::Grammar at 120
$
i
--> name
Perl6::Grammar at 121
$
i
--> ident
ResizablePMCArray (size:1)
[0] =>
Perl6::Grammar at 121
[2] =>
Perl6::Grammar at 122
b{$i
}c
--> quote_literal
Perl6::Grammar at 122
--> type
"term:"
--> top
--> type
"term:"
--> top
[4] =>
Perl6::Grammar at 133
say "hello"; my $i = 10; print "hello $i" if :10<1>; if ( 1 + :2<1> == 2 ) { say 0 + 1 ~ 'a' ~ "b{$i}c"; }
say ">", 1+0, 1 == 2
; say 1+2 + 3+4;
--> expr
Perl6::Grammar at 133
--> expr
Perl6::Grammar at 133
--> listop
Perl6::Grammar at 133
--> sym
Perl6::Grammar at 133
say
">", 1+0, 1 == 2
--> arglist
Perl6::Grammar at 137
say
">", 1+0, 1 == 2
--> EXPR
Perl6::Grammar at 137
--> expr
PGE::Match at 140
">"
,
1+0, 1 == 2
--> type
"infix:,"
--> top
[0] =>
Perl6::Grammar at 137
">"
, 1+0, 1 == 2
--> noun
Perl6::Grammar at 137
--> value
Perl6::Grammar at 137
--> quote
Perl6::Grammar at 137
--> quote_expression
Perl6::Grammar at 137
--> quote_concat
ResizablePMCArray (size:1)
[0] =>
Perl6::Grammar at 138
"
>
"
--> quote_term
ResizablePMCArray (size:1)
[0] =>
Perl6::Grammar at 138
--> quote_literal
Perl6::Grammar at 138
--> type
"term:"
--> top
[1] =>
PGE::Match at 143
">", 1
+
0, 1 == 2
--> type
"infix:+"
--> top
[0] =>
Perl6::Grammar at 142
">",
1
+0, 1 == 2
--> noun
Perl6::Grammar at 142
--> value
Perl6::Grammar at 142
--> number
Perl6::Grammar at 142
--> integer
Perl6::Grammar at 142
--> type
"term:"
--> top
[1] =>
Perl6::Grammar at 144
">", 1+
0
, 1 == 2
--> noun
Perl6::Grammar at 144
--> value
Perl6::Grammar at 144
--> number
Perl6::Grammar at 144
--> integer
Perl6::Grammar at 144
--> type
"term:"
--> top
[2] =>
PGE::Match at 149
">", 1+0, 1
==
2
--> type
"infix:=="
--> top
[0] =>
Perl6::Grammar at 147
">", 1+0,
1
== 2
--> noun
Perl6::Grammar at 147
--> value
Perl6::Grammar at 147
--> number
Perl6::Grammar at 147
--> integer
Perl6::Grammar at 147
--> type
"term:"
--> top
[1] =>
Perl6::Grammar at 152
">", 1+0, 1 ==
2
--> noun
Perl6::Grammar at 152
--> value
Perl6::Grammar at 152
--> number
Perl6::Grammar at 152
--> integer
Perl6::Grammar at 152
--> type
"term:"
--> top
--> type
"term:"
--> top
[5] =>
Perl6::Grammar at 158
say "hello"; my $i = 10; print "hello $i" if :10<1>; if ( 1 + :2<1> == 2 ) { say 0 + 1 ~ 'a' ~ "b{$i}c"; } say ">", 1+0, 1 == 2;
say 1+2 + 3+4
;
--> expr
Perl6::Grammar at 158
--> expr
Perl6::Grammar at 158
--> listop
Perl6::Grammar at 158
--> sym
Perl6::Grammar at 158
say
1+2 + 3+4
--> arglist
Perl6::Grammar at 162
say
1+2 + 3+4
--> EXPR
Perl6::Grammar at 162
--> expr
PGE::Match at 169
1+2 + 3
+
4
--> type
"infix:+"
--> top
[0] =>
PGE::Match at 166
1+2
+
3+4
--> type
"infix:+"
--> top
[0] =>
PGE::Match at 163
1
+
2 + 3+4
--> type
"infix:+"
--> top
[0] =>
Perl6::Grammar at 162
1
+2 + 3+4
--> noun
Perl6::Grammar at 162
--> value
Perl6::Grammar at 162
--> number
Perl6::Grammar at 162
--> integer
Perl6::Grammar at 162
--> type
"term:"
--> top
[1] =>
Perl6::Grammar at 164
1+
2
+ 3+4
--> noun
Perl6::Grammar at 164
--> value
Perl6::Grammar at 164
--> number
Perl6::Grammar at 164
--> integer
Perl6::Grammar at 164
--> type
"term:"
--> top
[1] =>
Perl6::Grammar at 168
1+2 +
3
+4
--> noun
Perl6::Grammar at 168
--> value
Perl6::Grammar at 168
--> number
Perl6::Grammar at 168
--> integer
Perl6::Grammar at 168
--> type
"term:"
--> top
[1] =>
Perl6::Grammar at 170
1+2 + 3+
4
--> noun
Perl6::Grammar at 170
--> value
Perl6::Grammar at 170
--> number
Perl6::Grammar at 170
--> integer
Perl6::Grammar at 170
--> type
"term:"
--> top
--> type
"term:"
--> top

PAST::Block at 10
--> symtable
Hash
--> $_
Hash
--> scope
"lexical"
--> $/
Hash
--> scope
"lexical"
--> $!
Hash
--> scope
"lexical"
--> $i
Hash
--> scope
"lexical"
--> blocktype
"declaration"
[0] =>
PAST::Stmts
[1] =>
PAST::Stmts at 10
say "hello";NL NL my $i = 10;NL print "hello $i" if :10<1>;NL NL if ( 1 + :2<1> == 2 ) {NL say 0 + 1 ~ 'a' ~ "b{$i}c";NL }NL NL say ">", 1+0, 1 == 2;NL NL say 1+2 + 3+4;NL
[0] =>
PAST::Op at 10
say "hello"
; my $i = 10; print "hello $i" if :10<1>; if ( 1 + :2<1> == 2 ) { say 0 + 1 ~ 'a' ~ "b{$i}c"; } say ">", 1+0, 1 == 2; say 1+2 + 3+4;
--> name
"say"
[0] =>
PAST::Val at 15
say "
hello
"
--> value
"hello"
--> returns
"Perl6Str"
[1] =>
PAST::Op at 32
say "hello"; my $i
=
10; print "hello $i" if :10<1>; if ( 1 + :2<1> == 2 ) { say 0 + 1 ~ 'a' ~ "b{$i}c"; } say ">", 1+0, 1 == 2; say 1+2 + 3+4;
--> name
"infix:="
[0] =>
PAST::Var at 29
say "hello"; my
$i
= 10; print "hello $i" if :10<1>; if ( 1 + :2<1> == 2 ) { say 0 + 1 ~ 'a' ~ "b{$i}c"; } say ">", 1+0, 1 == 2; say 1+2 + 3+4;
--> name
"$i"
--> viviself
"Undef"
[1] =>
PAST::Val at 34
say "hello"; my $i =
10
; print "hello $i" if :10<1>; if ( 1 + :2<1> == 2 ) { say 0 + 1 ~ 'a' ~ "b{$i}c"; } say ">", 1+0, 1 == 2; say 1+2 + 3+4;
--> returns
"Integer"
[2] =>
PAST::Op at 56
say "hello"; my $i = 10; print "hello $i"
if :10<1>
; if ( 1 + :2<1> == 2 ) { say 0 + 1 ~ 'a' ~ "b{$i}c"; } say ">", 1+0, 1 == 2; say 1+2 + 3+4;
[0] =>
PAST::Val at 59
if
:10<1>
--> returns
"Integer"
[1] =>
PAST::Op at 39
say "hello"; my $i = 10;
print "hello $i"
if :10<1>; if ( 1 + :2<1> == 2 ) { say 0 + 1 ~ 'a' ~ "b{$i}c"; } say ">", 1+0, 1 == 2; say 1+2 + 3+4;
--> name
"print"
[0] =>
PAST::Op
--> pirop
"n_concat"
--> pasttype
"pirop"
[0] =>
PAST::Val at 46
print "
hello
$i"
--> value
"hello "
--> returns
"Perl6Str"
[1] =>
PAST::Var at 52
print "hello
$i
"
--> name
"$i"
--> viviself
"Undef"
[3] =>
PAST::Op at 70
say "hello"; my $i = 10; print "hello $i" if :10<1>;
if ( 1 + :2<1> == 2 ) {NL say 0 + 1 ~ 'a' ~ "b{$i}c";NL }NL NL
say ">", 1+0, 1 == 2; say 1+2 + 3+4;
[0] =>
PAST::Stmts at 74
if (
1 + :2<1> == 2
) { say 0 + 1 ~ 'a' ~ "b{$i}c"; }
[0] =>
PAST::Op at 85
1 + :2<1>
==
2
--> name
"infix:=="
--> pasttype
"chain"
[0] =>
PAST::Op at 77
1
+
:2<1> == 2
--> name
"infix:+"
[0] =>
PAST::Val at 75
1
+ :2<1> == 2
--> returns
"Integer"
[1] =>
PAST::Val at 79
1 +
:2<1>
== 2
--> returns
"Integer"
[1] =>
PAST::Val at 88
1 + :2<1> ==
2
--> returns
"Integer"
[1] =>
PAST::Block at 93
if ( 1 + :2<1> == 2 ) {
NL
say 0 + 1 ~ 'a' ~ "b{$i}c"; }
--> symtable
Hash
--> $_
Hash
--> scope
"lexical"
--> $/
Hash
--> scope
"lexical"
--> $!
Hash
--> scope
"lexical"
--> blocktype
"immediate"
[0] =>
PAST::Stmts
[1] =>
PAST::Stmts at 99
if ( 1 + :2<1> == 2 ) {
say 0 + 1 ~ 'a' ~ "b{$i}c";NL
}
[0] =>
PAST::Op at 99
say 0 + 1 ~ 'a' ~ "b{$i}c"
;
--> name
"say"
[0] =>
PAST::Op at 115
say 0 + 1 ~ 'a'
~
"b{$i}c"
--> name
"infix:~"
[0] =>
PAST::Op at 109
say 0 + 1
~
'a' ~ "b{$i}c"
--> name
"infix:~"
[0] =>
PAST::Op at 105
say 0
+
1 ~ 'a' ~ "b{$i}c"
--> name
"infix:+"
[0] =>
PAST::Val at 103
say
0
+ 1 ~ 'a' ~ "b{$i}c"
--> returns
"Integer"
[1] =>
PAST::Val at 107
say 0 +
1
~ 'a' ~ "b{$i}c"
--> returns
"Integer"
[1] =>
PAST::Val at 112
say 0 + 1 ~ '
a
' ~ "b{$i}c"
--> returns
"Perl6Str"
[1] =>
PAST::Op
--> pirop
"n_concat"
--> pasttype
"pirop"
[0] =>
PAST::Op
--> pirop
"n_concat"
--> pasttype
"pirop"
[0] =>
PAST::Val at 118
say 0 + 1 ~ 'a' ~ "
b{
$i}c"
--> returns
"Perl6Str"
[1] =>
PAST::Var at 120
say 0 + 1 ~ 'a' ~ "b{
$i
}c"
--> name
"$i"
--> viviself
"Undef"
[1] =>
PAST::Val at 122
say 0 + 1 ~ 'a' ~ "b{$i
}c
"
--> returns
"Perl6Str"
[4] =>
PAST::Op at 133
say "hello"; my $i = 10; print "hello $i" if :10<1>; if ( 1 + :2<1> == 2 ) { say 0 + 1 ~ 'a' ~ "b{$i}c"; }
say ">", 1+0, 1 == 2
; say 1+2 + 3+4;
--> name
"say"
[0] =>
PAST::Val at 138
say "
>
", 1+0, 1 == 2
--> returns
"Perl6Str"
[1] =>
PAST::Op at 143
say ">", 1
+
0, 1 == 2
--> name
"infix:+"
[0] =>
PAST::Val at 142
say ">",
1
+0, 1 == 2
--> returns
"Integer"
[1] =>
PAST::Val at 144
say ">", 1+
0
, 1 == 2
--> returns
"Integer"
[2] =>
PAST::Op at 149
say ">", 1+0, 1
==
2
--> name
"infix:=="
--> pasttype
"chain"
[0] =>
PAST::Val at 147
say ">", 1+0,
1
== 2
--> returns
"Integer"
[1] =>
PAST::Val at 152
say ">", 1+0, 1 ==
2
--> returns
"Integer"
[5] =>
PAST::Op at 158
say "hello"; my $i = 10; print "hello $i" if :10<1>; if ( 1 + :2<1> == 2 ) { say 0 + 1 ~ 'a' ~ "b{$i}c"; } say ">", 1+0, 1 == 2;
say 1+2 + 3+4
;
--> name
"say"
[0] =>
PAST::Op at 169
say 1+2 + 3
+
4
--> name
"infix:+"
[0] =>
PAST::Op at 166
say 1+2
+
3+4
--> name
"infix:+"
[0] =>
PAST::Op at 163
say 1
+
2 + 3+4
--> name
"infix:+"
[0] =>
PAST::Val at 162
say
1
+2 + 3+4
--> returns
"Integer"
[1] =>
PAST::Val at 164
say 1+
2
+ 3+4
--> returns
"Integer"
[1] =>
PAST::Val at 168
say 1+2 +
3
+4
--> returns
"Integer"
[1] =>
PAST::Val at 170
say 1+2 + 3+
4
--> returns
"Integer"