Thanks for your words of encouragement. :) You can see a simple AST by running:
% perl -MO=Concise -e 'print "Hello, $world!"'
a <@> leave[1 ref] vKP/REFC ->(end)
1 <0> enter ->2
2 <;> nextstate(main 1 -e:1) v ->3
9 <@> print vK ->a
3 <0> pushmark s ->4
- <1> ex-stringify sK/1 ->9
- <0> ex-pushmark s ->4
8 <2> concat[t3] sKS/2 ->9
6 <2> concat[t2] sK/2 ->7
4 <$> const[PV "Hello, "] s ->5
- <1> ex-rv2sv sK/1 ->6
5 <#> gvsv[*world] s ->6
7 <$> const[PV "!"] s ->8
Compare it with Pugs (using r317 on svn.openfoundry.org, with some indenting):
% pugs -c -e 'print "Hello, $world!"'
{ Statements
[(
App "&prefix:print"
[App "&prefix:~"
[App "&infix:~"
[Val (VStr "Hello, ")
,App "&infix:~"
[Var "$world"
,Val (VStr "!")
] []
] []
] []
] []
,"<interactive>" (line 1, column 1)
)]
}
That should give you a pretty good idea of what an AST is. :) |