Gary R. Van Sickle wrote: > Here's a new one: My imaginary tokens aren't getting printable names now > unless I explicitly set them via a rule like this: > > struct_or_union_specifier > : [...whatever...] > | lc='struct' IDENTIFIER -> ^(STRUCT[$lc, "STRUCT"] IDENTIFIER) > .... > > If in my calling program I do this: > > printf((const char*)TheAST.tree->toStringTree(TheAST.tree)->chars); > > I get the following: > > ( ( int) (DIRECT_DECLARATOR abc (PARAM_TYPE_LIST ( ( ( int) > (DIRECT_DECLARATOR nothing))))) (COMPOUND_STATEMENT (RETURN 1))) ( ( int) > (DIRECT_DECLARATOR main (PARAM_TYPE_LIST ( ( ( int) (DIRECT_DECLARATOR > dummy))))) (COMPOUND_STATEMENT ( ( int) ( (DIRECT_DECLARATOR var))) > (FUNCTION_CALL call1 1.2 0) (FUNCTION_CALL CreateThread thread1) > (FUNCTION_CALL CreateThread thread2) (FUNCTION_CALL StartMultitasking) > (RETURN 0))) > > Every one of the "( "'s up there is an imaginary token that I can't do the > "$lc" thing to because they derive from nonterminals. Is there any reason that you can't do STRUCT["STRUCT"] (in the case where you don't have a token to derive from such as $lc)? Also, if you want to derive from a nonterminal such as the output of a rule, $rule.start can be derived from (the first token successfully matched by that rule).
Richard List: http://www.antlr.org/mailman/listinfo/antlr-interest Unsubscribe: http://www.antlr.org/mailman/options/antlr-interest/your-email-address --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "il-antlr-interest" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/il-antlr-interest?hl=en -~----------~----~----~----~------~----~------~--~---
