> BTW, to get the AST, I would guess you'd want to do $( $<parameters>[0] ).
Thanks - that was particularly helpful :) > --trace=4 may do what you want. Was there a command I could use in NQP to send output to the trace log? On 13 Feb, 22:52, Jonathan Worthington <[email protected]> wrote: > bsdz wrote: > > I am attempting to write a language and need to trace what is > > happening in my actions.pm methods. > > > I have tried writing 2 similar rules based on Squak: - > > > rule func_def { > > 'func' <identifier> <parameters>? > > ... > > > and > > > rule func_def2 { > > 'func' <identifier> <parameters> > > ... > > > When I compare the parse tree targets I noticed the first > > implementation wraps my <parameters> node into a ResizablePMCArray. > > So I am guessing if I leave out parameters in my code then I will > > still get an empty $<parameters> key in my $/. > > Yes - because you have a quantifier (?) there, you get an array. It will > in this case have either zero or one elements. > > > So I am wondering if I should test the existence of parameters in my > > action.pm with: - > > > if $<parameters> { ... > > This is fine - it gets if the ResizablePMCArray is true, which it is if > it has any elements. > > > or > > > if $($<parameters>) > 0 { ... > > This is probably an error. If you want to check the number of elements, > put it in array context and numify. > > if +@($<parameters>) > 0 { ... } > > But what you wrote above is shorter and clearer. BTW, to get the AST, I > would guess you'd want to do $( $<parameters>[0] ). > > > Is there any way I can get the compiler to send a trace statement to > > the console something along the lines of "say $/" or otherwise. I have > > noticed a "--trace" option but couldn't find the relevant docs. > > --trace=4 may do what you want. > > Hope this helps, > > Jonathan > > _______________________________________________http://lists.parrot.org/mailman/listinfo/parrot-dev _______________________________________________ http://lists.parrot.org/mailman/listinfo/parrot-dev
