Don't do it on my account, but I think I would use it because it looks much more transparent and maintainable. As a new and occasional user, my biggest challenge is getting my head back in the game after some time away from the code. This would help.
Kyle Sent from my Verizon Wireless BlackBerry -----Original Message----- From: Terence Parr <[email protected]> Date: Tue, 9 Feb 2010 17:30:12 To: antlr-interest interest<[email protected]> Subject: [antlr-interest] anybody using dynamic scopes? Hi, Is anybody using scopes? E.g., here is the use C grammar: scope Symbols { Set types; // only track types in order to get parser working } Every rule that declares its usage of Symbols pushes a new copy on the stack effectively creating a new symbol scope. translation_unit scope Symbols; // entire file is a scope @init { $Symbols::types = new HashSet(); } : external_declaration+ ; Then rule declaration declares a rule scope that lets any invoked rule see isTypedef boolean. It's much easier than passing that info down as parameters: declaration scope { boolean isTypedef; } @init { $declaration::isTypedef = false; } : 'typedef' declaration_specifiers? {$declaration::isTypedef=true;} init_declarator_list ';' // special case, looking for typedef | declaration_specifiers init_declarator_list? ';' ; Rule direct_declarator can then easily determine whether the IDENTIFIER should be declared as a type name. direct_declarator : ( IDENTIFIER { if ($declaration.size()>0&&$declaration::isTypedef) { $Symbols::types.add($IDENTIFIER.text); System.out.println("define type "+$IDENTIFIER.text); } } | '(' declarator ')' ) declarator_suffix* ; Trying to decide if it's worth reimplementing for v4. Ter List: http://www.antlr.org/mailman/listinfo/antlr-interest Unsubscribe: http://www.antlr.org/mailman/options/antlr-interest/your-email-address 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.
