// $ANTLR 3.5 org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g 2014-03-25 07:04:53

package org.antlr.grammar.v3;

import org.antlr.analysis.*;
import org.antlr.misc.*;
import org.antlr.tool.*;
import org.antlr.codegen.*;

import java.util.HashSet;
import java.util.Set;
import java.util.Collection;
import org.antlr.runtime.BitSet;
import org.antlr.runtime.DFA;
import org.stringtemplate.v4.ST;
import org.stringtemplate.v4.STGroup;


import org.antlr.runtime.*;
import org.antlr.runtime.tree.*;
import java.util.Stack;
import java.util.List;
import java.util.ArrayList;
import java.util.Map;
import java.util.HashMap;

Walk a grammar and generate code by gradually building up a bigger and bigger ST. Terence Parr University of San Francisco June 15, 2004
/** Walk a grammar and generate code by gradually building up * a bigger and bigger ST. * * Terence Parr * University of San Francisco * June 15, 2004 */
@SuppressWarnings("all") public class CodeGenTreeWalker extends TreeParser { public static final String[] tokenNames = new String[] { "<invalid>", "<EOR>", "<DOWN>", "<UP>", "ACTION", "ACTION_CHAR_LITERAL", "ACTION_ESC", "ACTION_STRING_LITERAL", "ALT", "AMPERSAND", "ARG", "ARGLIST", "ARG_ACTION", "ASSIGN", "BACKTRACK_SEMPRED", "BANG", "BLOCK", "CATCH", "CHAR_LITERAL", "CHAR_RANGE", "CLOSE_ELEMENT_OPTION", "CLOSURE", "COLON", "COMBINED_GRAMMAR", "COMMA", "COMMENT", "DIGIT", "DOC_COMMENT", "DOLLAR", "DOT", "DOUBLE_ANGLE_STRING_LITERAL", "DOUBLE_QUOTE_STRING_LITERAL", "EOA", "EOB", "EOR", "EPSILON", "ESC", "ETC", "FINALLY", "FORCED_ACTION", "FRAGMENT", "GATED_SEMPRED", "GRAMMAR", "ID", "IMPLIES", "IMPORT", "INITACTION", "INT", "LABEL", "LEXER", "LEXER_GRAMMAR", "LPAREN", "ML_COMMENT", "NESTED_ACTION", "NESTED_ARG_ACTION", "NOT", "OPEN_ELEMENT_OPTION", "OPTIONAL", "OPTIONS", "OR", "PARSER", "PARSER_GRAMMAR", "PLUS", "PLUS_ASSIGN", "POSITIVE_CLOSURE", "PREC_RULE", "PRIVATE", "PROTECTED", "PUBLIC", "QUESTION", "RANGE", "RCURLY", "RECURSIVE_RULE_REF", "RET", "RETURNS", "REWRITE", "REWRITES", "ROOT", "RPAREN", "RULE", "RULE_REF", "SCOPE", "SEMI", "SEMPRED", "SL_COMMENT", "SRC", "STAR", "STRAY_BRACKET", "STRING_LITERAL", "SYNPRED", "SYN_SEMPRED", "TEMPLATE", "THROWS", "TOKENS", "TOKEN_REF", "TREE", "TREE_BEGIN", "TREE_GRAMMAR", "WILDCARD", "WS", "WS_LOOP", "WS_OPT", "XDIGIT" }; public static final int EOF=-1; public static final int ACTION=4; public static final int ACTION_CHAR_LITERAL=5; public static final int ACTION_ESC=6; public static final int ACTION_STRING_LITERAL=7; public static final int ALT=8; public static final int AMPERSAND=9; public static final int ARG=10; public static final int ARGLIST=11; public static final int ARG_ACTION=12; public static final int ASSIGN=13; public static final int BACKTRACK_SEMPRED=14; public static final int BANG=15; public static final int BLOCK=16; public static final int CATCH=17; public static final int CHAR_LITERAL=18; public static final int CHAR_RANGE=19; public static final int CLOSE_ELEMENT_OPTION=20; public static final int CLOSURE=21; public static final int COLON=22; public static final int COMBINED_GRAMMAR=23; public static final int COMMA=24; public static final int COMMENT=25; public static final int DIGIT=26; public static final int DOC_COMMENT=27; public static final int DOLLAR=28; public static final int DOT=29; public static final int DOUBLE_ANGLE_STRING_LITERAL=30; public static final int DOUBLE_QUOTE_STRING_LITERAL=31; public static final int EOA=32; public static final int EOB=33; public static final int EOR=34; public static final int EPSILON=35; public static final int ESC=36; public static final int ETC=37; public static final int FINALLY=38; public static final int FORCED_ACTION=39; public static final int FRAGMENT=40; public static final int GATED_SEMPRED=41; public static final int GRAMMAR=42; public static final int ID=43; public static final int IMPLIES=44; public static final int IMPORT=45; public static final int INITACTION=46; public static final int INT=47; public static final int LABEL=48; public static final int LEXER=49; public static final int LEXER_GRAMMAR=50; public static final int LPAREN=51; public static final int ML_COMMENT=52; public static final int NESTED_ACTION=53; public static final int NESTED_ARG_ACTION=54; public static final int NOT=55; public static final int OPEN_ELEMENT_OPTION=56; public static final int OPTIONAL=57; public static final int OPTIONS=58; public static final int OR=59; public static final int PARSER=60; public static final int PARSER_GRAMMAR=61; public static final int PLUS=62; public static final int PLUS_ASSIGN=63; public static final int POSITIVE_CLOSURE=64; public static final int PREC_RULE=65; public static final int PRIVATE=66; public static final int PROTECTED=67; public static final int PUBLIC=68; public static final int QUESTION=69; public static final int RANGE=70; public static final int RCURLY=71; public static final int RECURSIVE_RULE_REF=72; public static final int RET=73; public static final int RETURNS=74; public static final int REWRITE=75; public static final int REWRITES=76; public static final int ROOT=77; public static final int RPAREN=78; public static final int RULE=79; public static final int RULE_REF=80; public static final int SCOPE=81; public static final int SEMI=82; public static final int SEMPRED=83; public static final int SL_COMMENT=84; public static final int SRC=85; public static final int STAR=86; public static final int STRAY_BRACKET=87; public static final int STRING_LITERAL=88; public static final int SYNPRED=89; public static final int SYN_SEMPRED=90; public static final int TEMPLATE=91; public static final int THROWS=92; public static final int TOKENS=93; public static final int TOKEN_REF=94; public static final int TREE=95; public static final int TREE_BEGIN=96; public static final int TREE_GRAMMAR=97; public static final int WILDCARD=98; public static final int WS=99; public static final int WS_LOOP=100; public static final int WS_OPT=101; public static final int XDIGIT=102; // delegates public TreeParser[] getDelegates() { return new TreeParser[] {}; } // delegators public CodeGenTreeWalker(TreeNodeStream input) { this(input, new RecognizerSharedState()); } public CodeGenTreeWalker(TreeNodeStream input, RecognizerSharedState state) { super(input, state); } @Override public String[] getTokenNames() { return CodeGenTreeWalker.tokenNames; } @Override public String getGrammarFileName() { return "org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g"; } protected static final int RULE_BLOCK_NESTING_LEVEL = 0; protected static final int OUTER_REWRITE_NESTING_LEVEL = 0; private String currentRuleName = null; protected int blockNestingLevel = 0; protected int rewriteBlockNestingLevel = 0; private int outerAltNum = 0; protected ST currentBlockST = null; protected boolean currentAltHasASTRewrite = false; protected int rewriteTreeNestingLevel = 0; protected HashSet<Object> rewriteRuleRefs = null; public String getCurrentRuleName() { return currentRuleName; } public void setCurrentRuleName(String value) { currentRuleName = value; } public int getOuterAltNum() { return outerAltNum; } public void setOuterAltNum(int value) { outerAltNum = value; } @Override public void reportError(RecognitionException ex) { Token token = null; if (ex instanceof MismatchedTokenException) { token = ((MismatchedTokenException)ex).token; } else if (ex instanceof NoViableAltException) { token = ((NoViableAltException)ex).token; } ErrorManager.syntaxError( ErrorManager.MSG_SYNTAX_ERROR, grammar, token, "codegen: " + ex.toString(), ex ); } public final void reportError(String s) { System.out.println("codegen: error: " + s); } protected CodeGenerator generator; protected Grammar grammar; protected STGroup templates;
The overall lexer/parser template; simulate dynamically scoped attributes by making this an instance var of the walker.
/** The overall lexer/parser template; simulate dynamically scoped * attributes by making this an instance var of the walker. */
protected ST recognizerST; protected ST outputFileST; protected ST headerFileST; protected String outputOption = ""; protected final ST getWildcardST(GrammarAST elementAST, GrammarAST ast_suffix, String label) { String name = "wildcard"; if (grammar.type == Grammar.LEXER) { name = "wildcardChar"; } return getTokenElementST(name, name, elementAST, ast_suffix, label); } protected final ST getRuleElementST( String name, String ruleTargetName, GrammarAST elementAST, GrammarAST ast_suffix, String label ) { Rule r = grammar.getRule( currentRuleName ); String suffix = getSTSuffix(elementAST, ast_suffix, label); if ( !r.isSynPred ) { name += suffix; } // if we're building trees and there is no label, gen a label // unless we're in a synpred rule. if ( ( grammar.buildAST() || suffix.length() > 0 ) && label == null && ( r == null || !r.isSynPred ) ) { // we will need a label to do the AST or tracking, make one label = generator.createUniqueLabel( ruleTargetName ); CommonToken labelTok = new CommonToken( ANTLRParser.ID, label ); grammar.defineRuleRefLabel( currentRuleName, labelTok, elementAST ); } ST elementST = templates.getInstanceOf( name ); if ( label != null ) { elementST.add( "label", label ); } return elementST; } protected final ST getTokenElementST( String name, String elementName, GrammarAST elementAST, GrammarAST ast_suffix, String label ) { boolean tryUnchecked = false; if (name == "matchSet" && elementAST.enclosingRuleName != null && elementAST.enclosingRuleName.length() > 0 && Rule.getRuleType(elementAST.enclosingRuleName) == Grammar.LEXER) { if ( ( elementAST.getParent().getType() == ANTLRLexer.ALT && elementAST.getParent().getParent().getParent().getType() == RULE && elementAST.getParent().getParent().getChildCount() == 2 ) || ( elementAST.getParent().getType() == ANTLRLexer.NOT && elementAST.getParent().getParent().getParent().getParent().getType() == RULE && elementAST.getParent().getParent().getParent().getChildCount() == 2 ) ) { // single alt at the start of the rule needs to be checked } else { tryUnchecked = true; } } String suffix = getSTSuffix( elementAST, ast_suffix, label ); // if we're building trees and there is no label, gen a label // unless we're in a synpred rule. Rule r = grammar.getRule( currentRuleName ); if ( ( grammar.buildAST() || suffix.length() > 0 ) && label == null && ( r == null || !r.isSynPred ) ) { label = generator.createUniqueLabel( elementName ); CommonToken labelTok = new CommonToken( ANTLRParser.ID, label ); grammar.defineTokenRefLabel( currentRuleName, labelTok, elementAST ); } ST elementST = null; if ( tryUnchecked && templates.isDefined( name + "Unchecked" + suffix ) ) elementST = templates.getInstanceOf( name + "Unchecked" + suffix ); if ( elementST == null ) elementST = templates.getInstanceOf( name + suffix ); if ( label != null ) { elementST.add( "label", label ); } return elementST; } public final boolean isListLabel(String label) { boolean hasListLabel = false; if ( label != null ) { Rule r = grammar.getRule( currentRuleName ); //String stName = null; if ( r != null ) { Grammar.LabelElementPair pair = r.getLabel( label ); if ( pair != null && ( pair.type == Grammar.TOKEN_LIST_LABEL || pair.type == Grammar.RULE_LIST_LABEL || pair.type == Grammar.WILDCARD_TREE_LIST_LABEL ) ) { hasListLabel = true; } } } return hasListLabel; }
Return a non-empty template name suffix if the token is to be tracked, added to a tree, or both.
/** Return a non-empty template name suffix if the token is to be * tracked, added to a tree, or both. */
protected final String getSTSuffix(GrammarAST elementAST, GrammarAST ast_suffix, String label) { if ( grammar.type == Grammar.LEXER ) { return ""; } // handle list label stuff; make element use "Track" String operatorPart = ""; String rewritePart = ""; String listLabelPart = ""; Rule ruleDescr = grammar.getRule( currentRuleName ); if ( ast_suffix != null && !ruleDescr.isSynPred ) { if ( ast_suffix.getType() == ANTLRParser.ROOT ) { operatorPart = "RuleRoot"; } else if ( ast_suffix.getType() == ANTLRParser.BANG ) { operatorPart = "Bang"; } } if ( currentAltHasASTRewrite && elementAST.getType() != WILDCARD ) { rewritePart = "Track"; } if ( isListLabel( label ) ) { listLabelPart = "AndListLabel"; } String STsuffix = operatorPart + rewritePart + listLabelPart; //JSystem.@out.println("suffix = "+STsuffix); return STsuffix; }
Convert rewrite AST lists to target labels list
/** Convert rewrite AST lists to target labels list */
protected final List<String> getTokenTypesAsTargetLabels(Collection<GrammarAST> refs) { if ( refs == null || refs.size() == 0 ) return null; List<String> labels = new ArrayList<String>( refs.size() ); for ( GrammarAST t : refs ) { String label; if ( t.getType() == ANTLRParser.RULE_REF || t.getType() == ANTLRParser.TOKEN_REF || t.getType() == ANTLRParser.LABEL) { label = t.getText(); } else { // must be char or String literal label = generator.getTokenTypeAsTargetLabel(grammar.getTokenType(t.getText())); } labels.add( label ); } return labels; } public final void init( Grammar g ) { this.grammar = g; this.generator = grammar.getCodeGenerator(); this.templates = generator.getTemplates(); } // $ANTLR start "grammar_" // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:298:1: public grammar_[Grammar g,\r\n\t\tST recognizerST,\r\n\t\tST outputFileST,\r\n\t\tST headerFileST] : ( ^( LEXER_GRAMMAR grammarSpec ) | ^( PARSER_GRAMMAR grammarSpec ) | ^( TREE_GRAMMAR grammarSpec ) | ^( COMBINED_GRAMMAR grammarSpec ) ) ; public final void grammar_(Grammar g, ST recognizerST, ST outputFileST, ST headerFileST) throws RecognitionException { if ( state.backtracking == 0 ) { init(g); this.recognizerST = recognizerST; this.outputFileST = outputFileST; this.headerFileST = headerFileST; String superClass = (String)g.getOption("superClass"); outputOption = (String)g.getOption("output"); if ( superClass!=null ) recognizerST.add("superClass", superClass); if ( g.type!=Grammar.LEXER ) { Object lt = g.getOption("ASTLabelType"); if ( lt!=null ) recognizerST.add("ASTLabelType", lt); } if ( g.type==Grammar.TREE_PARSER && g.getOption("ASTLabelType")==null ) { ErrorManager.grammarWarning(ErrorManager.MSG_MISSING_AST_TYPE_IN_TREE_GRAMMAR, g, null, g.name); } if ( g.type!=Grammar.TREE_PARSER ) { Object lt = g.getOption("TokenLabelType"); if ( lt!=null ) recognizerST.add("labelType", lt); } recognizerST.add("numRules", grammar.getRules().size()); outputFileST.add("numRules", grammar.getRules().size()); headerFileST.add("numRules", grammar.getRules().size()); } try { // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:332:2: ( ( ^( LEXER_GRAMMAR grammarSpec ) | ^( PARSER_GRAMMAR grammarSpec ) | ^( TREE_GRAMMAR grammarSpec ) | ^( COMBINED_GRAMMAR grammarSpec ) ) ) // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:332:4: ( ^( LEXER_GRAMMAR grammarSpec ) | ^( PARSER_GRAMMAR grammarSpec ) | ^( TREE_GRAMMAR grammarSpec ) | ^( COMBINED_GRAMMAR grammarSpec ) ) { // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:332:4: ( ^( LEXER_GRAMMAR grammarSpec ) | ^( PARSER_GRAMMAR grammarSpec ) | ^( TREE_GRAMMAR grammarSpec ) | ^( COMBINED_GRAMMAR grammarSpec ) ) int alt1=4; switch ( input.LA(1) ) { case LEXER_GRAMMAR: { alt1=1; } break; case PARSER_GRAMMAR: { alt1=2; } break; case TREE_GRAMMAR: { alt1=3; } break; case COMBINED_GRAMMAR: { alt1=4; } break; default: if (state.backtracking>0) {state.failed=true; return;} NoViableAltException nvae = new NoViableAltException("", 1, 0, input); throw nvae; } switch (alt1) { case 1 : // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:332:6: ^( LEXER_GRAMMAR grammarSpec ) { match(input,LEXER_GRAMMAR,FOLLOW_LEXER_GRAMMAR_in_grammar_67); if (state.failed) return; match(input, Token.DOWN, null); if (state.failed) return; pushFollow(FOLLOW_grammarSpec_in_grammar_69); grammarSpec(); state._fsp--; if (state.failed) return; match(input, Token.UP, null); if (state.failed) return; } break; case 2 : // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:333:5: ^( PARSER_GRAMMAR grammarSpec ) { match(input,PARSER_GRAMMAR,FOLLOW_PARSER_GRAMMAR_in_grammar_79); if (state.failed) return; match(input, Token.DOWN, null); if (state.failed) return; pushFollow(FOLLOW_grammarSpec_in_grammar_81); grammarSpec(); state._fsp--; if (state.failed) return; match(input, Token.UP, null); if (state.failed) return; } break; case 3 : // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:334:5: ^( TREE_GRAMMAR grammarSpec ) { match(input,TREE_GRAMMAR,FOLLOW_TREE_GRAMMAR_in_grammar_91); if (state.failed) return; match(input, Token.DOWN, null); if (state.failed) return; pushFollow(FOLLOW_grammarSpec_in_grammar_93); grammarSpec(); state._fsp--; if (state.failed) return; match(input, Token.UP, null); if (state.failed) return; } break; case 4 : // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:335:5: ^( COMBINED_GRAMMAR grammarSpec ) { match(input,COMBINED_GRAMMAR,FOLLOW_COMBINED_GRAMMAR_in_grammar_103); if (state.failed) return; match(input, Token.DOWN, null); if (state.failed) return; pushFollow(FOLLOW_grammarSpec_in_grammar_105); grammarSpec(); state._fsp--; if (state.failed) return; match(input, Token.UP, null); if (state.failed) return; } break; } } } catch (RecognitionException re) { reportError(re); recover(input,re); } finally { // do for sure before leaving } } // $ANTLR end "grammar_" // $ANTLR start "attrScope" // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:339:1: attrScope : ^( 'scope' ID ( ^( AMPERSAND ( . )* ) )* ACTION ) ; public final void attrScope() throws RecognitionException { try { // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:340:2: ( ^( 'scope' ID ( ^( AMPERSAND ( . )* ) )* ACTION ) ) // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:340:4: ^( 'scope' ID ( ^( AMPERSAND ( . )* ) )* ACTION ) { match(input,SCOPE,FOLLOW_SCOPE_in_attrScope124); if (state.failed) return; match(input, Token.DOWN, null); if (state.failed) return; match(input,ID,FOLLOW_ID_in_attrScope126); if (state.failed) return; // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:340:18: ( ^( AMPERSAND ( . )* ) )* loop3: while (true) { int alt3=2; int LA3_0 = input.LA(1); if ( (LA3_0==AMPERSAND) ) { alt3=1; } switch (alt3) { case 1 : // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:340:20: ^( AMPERSAND ( . )* ) { match(input,AMPERSAND,FOLLOW_AMPERSAND_in_attrScope131); if (state.failed) return; if ( input.LA(1)==Token.DOWN ) { match(input, Token.DOWN, null); if (state.failed) return; // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:340:32: ( . )* loop2: while (true) { int alt2=2; int LA2_0 = input.LA(1); if ( ((LA2_0 >= ACTION && LA2_0 <= XDIGIT)) ) { alt2=1; } else if ( (LA2_0==UP) ) { alt2=2; } switch (alt2) { case 1 : // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:340:32: . { matchAny(input); if (state.failed) return; } break; default : break loop2; } } match(input, Token.UP, null); if (state.failed) return; } } break; default : break loop3; } } match(input,ACTION,FOLLOW_ACTION_in_attrScope140); if (state.failed) return; match(input, Token.UP, null); if (state.failed) return; } } catch (RecognitionException re) { reportError(re); recover(input,re); } finally { // do for sure before leaving } } // $ANTLR end "attrScope" // $ANTLR start "grammarSpec" // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:343:1: grammarSpec : name= ID (cmt= DOC_COMMENT )? ( ^( OPTIONS ( . )* ) )? ( ^( IMPORT ( . )* ) )? ( ^( TOKENS ( . )* ) )? ( attrScope )* ( ^( AMPERSAND ( . )* ) )* rules[recognizerST] ; public final void grammarSpec() throws RecognitionException { GrammarAST name=null; GrammarAST cmt=null; try { // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:344:2: (name= ID (cmt= DOC_COMMENT )? ( ^( OPTIONS ( . )* ) )? ( ^( IMPORT ( . )* ) )? ( ^( TOKENS ( . )* ) )? ( attrScope )* ( ^( AMPERSAND ( . )* ) )* rules[recognizerST] ) // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:344:6: name= ID (cmt= DOC_COMMENT )? ( ^( OPTIONS ( . )* ) )? ( ^( IMPORT ( . )* ) )? ( ^( TOKENS ( . )* ) )? ( attrScope )* ( ^( AMPERSAND ( . )* ) )* rules[recognizerST] { name=(GrammarAST)match(input,ID,FOLLOW_ID_in_grammarSpec157); if (state.failed) return; // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:345:3: (cmt= DOC_COMMENT )? int alt4=2; int LA4_0 = input.LA(1); if ( (LA4_0==DOC_COMMENT) ) { alt4=1; } switch (alt4) { case 1 : // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:345:5: cmt= DOC_COMMENT { cmt=(GrammarAST)match(input,DOC_COMMENT,FOLLOW_DOC_COMMENT_in_grammarSpec165); if (state.failed) return; if ( state.backtracking==0 ) { outputFileST.add("docComment", (cmt!=null?cmt.getText():null)); headerFileST.add("docComment", (cmt!=null?cmt.getText():null)); } } break; } if ( state.backtracking==0 ) { recognizerST.add("name", grammar.getRecognizerName()); outputFileST.add("name", grammar.getRecognizerName()); headerFileST.add("name", grammar.getRecognizerName()); recognizerST.add("scopes", grammar.getGlobalScopes()); headerFileST.add("scopes", grammar.getGlobalScopes()); } // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:358:3: ( ^( OPTIONS ( . )* ) )? int alt6=2; int LA6_0 = input.LA(1); if ( (LA6_0==OPTIONS) ) { alt6=1; } switch (alt6) { case 1 : // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:358:5: ^( OPTIONS ( . )* ) { match(input,OPTIONS,FOLLOW_OPTIONS_in_grammarSpec186); if (state.failed) return; if ( input.LA(1)==Token.DOWN ) { match(input, Token.DOWN, null); if (state.failed) return; // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:358:15: ( . )* loop5: while (true) { int alt5=2; int LA5_0 = input.LA(1); if ( ((LA5_0 >= ACTION && LA5_0 <= XDIGIT)) ) { alt5=1; } else if ( (LA5_0==UP) ) { alt5=2; } switch (alt5) { case 1 : // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:358:15: . { matchAny(input); if (state.failed) return; } break; default : break loop5; } } match(input, Token.UP, null); if (state.failed) return; } } break; } // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:359:3: ( ^( IMPORT ( . )* ) )? int alt8=2; int LA8_0 = input.LA(1); if ( (LA8_0==IMPORT) ) { alt8=1; } switch (alt8) { case 1 : // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:359:5: ^( IMPORT ( . )* ) { match(input,IMPORT,FOLLOW_IMPORT_in_grammarSpec200); if (state.failed) return; if ( input.LA(1)==Token.DOWN ) { match(input, Token.DOWN, null); if (state.failed) return; // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:359:14: ( . )* loop7: while (true) { int alt7=2; int LA7_0 = input.LA(1); if ( ((LA7_0 >= ACTION && LA7_0 <= XDIGIT)) ) { alt7=1; } else if ( (LA7_0==UP) ) { alt7=2; } switch (alt7) { case 1 : // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:359:14: . { matchAny(input); if (state.failed) return; } break; default : break loop7; } } match(input, Token.UP, null); if (state.failed) return; } } break; } // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:360:3: ( ^( TOKENS ( . )* ) )? int alt10=2; int LA10_0 = input.LA(1); if ( (LA10_0==TOKENS) ) { alt10=1; } switch (alt10) { case 1 : // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:360:5: ^( TOKENS ( . )* ) { match(input,TOKENS,FOLLOW_TOKENS_in_grammarSpec214); if (state.failed) return; if ( input.LA(1)==Token.DOWN ) { match(input, Token.DOWN, null); if (state.failed) return; // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:360:14: ( . )* loop9: while (true) { int alt9=2; int LA9_0 = input.LA(1); if ( ((LA9_0 >= ACTION && LA9_0 <= XDIGIT)) ) { alt9=1; } else if ( (LA9_0==UP) ) { alt9=2; } switch (alt9) { case 1 : // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:360:14: . { matchAny(input); if (state.failed) return; } break; default : break loop9; } } match(input, Token.UP, null); if (state.failed) return; } } break; } // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:361:3: ( attrScope )* loop11: while (true) { int alt11=2; int LA11_0 = input.LA(1); if ( (LA11_0==SCOPE) ) { alt11=1; } switch (alt11) { case 1 : // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:361:4: attrScope { pushFollow(FOLLOW_attrScope_in_grammarSpec226); attrScope(); state._fsp--; if (state.failed) return; } break; default : break loop11; } } // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:362:3: ( ^( AMPERSAND ( . )* ) )* loop13: while (true) { int alt13=2; int LA13_0 = input.LA(1); if ( (LA13_0==AMPERSAND) ) { alt13=1; } switch (alt13) { case 1 : // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:362:5: ^( AMPERSAND ( . )* ) { match(input,AMPERSAND,FOLLOW_AMPERSAND_in_grammarSpec235); if (state.failed) return; if ( input.LA(1)==Token.DOWN ) { match(input, Token.DOWN, null); if (state.failed) return; // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:362:17: ( . )* loop12: while (true) { int alt12=2; int LA12_0 = input.LA(1); if ( ((LA12_0 >= ACTION && LA12_0 <= XDIGIT)) ) { alt12=1; } else if ( (LA12_0==UP) ) { alt12=2; } switch (alt12) { case 1 : // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:362:17: . { matchAny(input); if (state.failed) return; } break; default : break loop12; } } match(input, Token.UP, null); if (state.failed) return; } } break; default : break loop13; } } pushFollow(FOLLOW_rules_in_grammarSpec246); rules(recognizerST); state._fsp--; if (state.failed) return; } } catch (RecognitionException re) { reportError(re); recover(input,re); } finally { // do for sure before leaving } } // $ANTLR end "grammarSpec" // $ANTLR start "rules" // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:366:1: rules[ST recognizerST] : ( ( options {k=1; } :{...}? =>rST= rule | ^( RULE ( . )* ) | ^( PREC_RULE ( . )* ) ) )+ ; public final void rules(ST recognizerST) throws RecognitionException { TreeRuleReturnScope rST =null; String ruleName = ((GrammarAST)input.LT(1)).getChild(0).getText(); boolean generated = grammar.generateMethodForRule(ruleName); try { // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:372:2: ( ( ( options {k=1; } :{...}? =>rST= rule | ^( RULE ( . )* ) | ^( PREC_RULE ( . )* ) ) )+ ) // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:372:4: ( ( options {k=1; } :{...}? =>rST= rule | ^( RULE ( . )* ) | ^( PREC_RULE ( . )* ) ) )+ { // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:372:4: ( ( options {k=1; } :{...}? =>rST= rule | ^( RULE ( . )* ) | ^( PREC_RULE ( . )* ) ) )+ int cnt17=0; loop17: while (true) { int alt17=2; int LA17_0 = input.LA(1); if ( (LA17_0==PREC_RULE||LA17_0==RULE) ) { alt17=1; } switch (alt17) { case 1 : // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:372:6: ( options {k=1; } :{...}? =>rST= rule | ^( RULE ( . )* ) | ^( PREC_RULE ( . )* ) ) { // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:372:6: ( options {k=1; } :{...}? =>rST= rule | ^( RULE ( . )* ) | ^( PREC_RULE ( . )* ) ) int alt16=3; int LA16_0 = input.LA(1); if ( (LA16_0==RULE) ) { int LA16_1 = input.LA(2); if ( ((generated)) ) { alt16=1; } else if ( (true) ) { alt16=2; } } else if ( (LA16_0==PREC_RULE) ) { alt16=3; } else { if (state.backtracking>0) {state.failed=true; return;} NoViableAltException nvae = new NoViableAltException("", 16, 0, input); throw nvae; } switch (alt16) { case 1 : // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:373:5: {...}? =>rST= rule { if ( !((generated)) ) { if (state.backtracking>0) {state.failed=true; return;} throw new FailedPredicateException(input, "rules", "generated"); } pushFollow(FOLLOW_rule_in_rules291); rST=rule(); state._fsp--; if (state.failed) return; if ( state.backtracking==0 ) { if ( (rST!=null?((CodeGenTreeWalker.rule_return)rST).code:null) != null ) { recognizerST.add("rules", (rST!=null?((CodeGenTreeWalker.rule_return)rST).code:null)); outputFileST.add("rules", (rST!=null?((CodeGenTreeWalker.rule_return)rST).code:null)); headerFileST.add("rules", (rST!=null?((CodeGenTreeWalker.rule_return)rST).code:null)); } } } break; case 2 : // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:383:6: ^( RULE ( . )* ) { match(input,RULE,FOLLOW_RULE_in_rules305); if (state.failed) return; if ( input.LA(1)==Token.DOWN ) { match(input, Token.DOWN, null); if (state.failed) return; // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:383:13: ( . )* loop14: while (true) { int alt14=2; int LA14_0 = input.LA(1); if ( ((LA14_0 >= ACTION && LA14_0 <= XDIGIT)) ) { alt14=1; } else if ( (LA14_0==UP) ) { alt14=2; } switch (alt14) { case 1 : // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:383:13: . { matchAny(input); if (state.failed) return; } break; default : break loop14; } } match(input, Token.UP, null); if (state.failed) return; } } break; case 3 : // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:384:6: ^( PREC_RULE ( . )* ) { match(input,PREC_RULE,FOLLOW_PREC_RULE_in_rules317); if (state.failed) return; if ( input.LA(1)==Token.DOWN ) { match(input, Token.DOWN, null); if (state.failed) return; // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:384:18: ( . )* loop15: while (true) { int alt15=2; int LA15_0 = input.LA(1); if ( ((LA15_0 >= ACTION && LA15_0 <= XDIGIT)) ) { alt15=1; } else if ( (LA15_0==UP) ) { alt15=2; } switch (alt15) { case 1 : // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:384:18: . { matchAny(input); if (state.failed) return; } break; default : break loop15; } } match(input, Token.UP, null); if (state.failed) return; } } break; } if ( input.LA(1) == RULE ) { ruleName = ((GrammarAST)input.LT(1)).getChild(0).getText(); //System.Diagnostics.Debug.Assert( ruleName == ((GrammarAST)input.LT(1)).enclosingRuleName ); generated = grammar.generateMethodForRule(ruleName); } } break; default : if ( cnt17 >= 1 ) break loop17; if (state.backtracking>0) {state.failed=true; return;} EarlyExitException eee = new EarlyExitException(17, input); throw eee; } cnt17++; } } } catch (RecognitionException re) { reportError(re); recover(input,re); } finally { // do for sure before leaving } } // $ANTLR end "rules" public static class rule_return extends TreeRuleReturnScope { public ST code=null; }; // $ANTLR start "rule" // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:397:1: rule returns [ST code=null] : ^( RULE id= ID (mod= modifier )? ^( ARG ( ARG_ACTION )? ) ^( RET ( ARG_ACTION )? ) ( throwsSpec )? ( ^( OPTIONS ( . )* ) )? ( ruleScopeSpec )? ( ^( AMPERSAND ( . )* ) )* b= block[\"ruleBlock\", dfa, null] ( exceptionGroup[$code] )? EOR ) ; public final CodeGenTreeWalker.rule_return rule() throws RecognitionException { CodeGenTreeWalker.rule_return retval = new CodeGenTreeWalker.rule_return(); retval.start = input.LT(1); GrammarAST id=null; TreeRuleReturnScope mod =null; TreeRuleReturnScope b =null; String initAction = null; // get the dfa for the BLOCK GrammarAST block2=(GrammarAST)((GrammarAST)retval.start).getFirstChildWithType(BLOCK); org.antlr.analysis.DFA dfa = block2.getLookaheadDFA(); // init blockNestingLevel so it's block level RULE_BLOCK_NESTING_LEVEL // for alts of rule blockNestingLevel = RULE_BLOCK_NESTING_LEVEL-1; Rule ruleDescr = grammar.getRule(((GrammarAST)retval.start).getChild(0).getText()); currentRuleName = ((GrammarAST)retval.start).getChild(0).getText(); // For syn preds, we don't want any AST code etc... in there. // Save old templates ptr and restore later. Base templates include Dbg. STGroup saveGroup = templates; if ( ruleDescr.isSynPred && generator.target.useBaseTemplatesForSynPredFragments() ) { templates = generator.getBaseTemplates(); } String description = ""; try { // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:420:2: ( ^( RULE id= ID (mod= modifier )? ^( ARG ( ARG_ACTION )? ) ^( RET ( ARG_ACTION )? ) ( throwsSpec )? ( ^( OPTIONS ( . )* ) )? ( ruleScopeSpec )? ( ^( AMPERSAND ( . )* ) )* b= block[\"ruleBlock\", dfa, null] ( exceptionGroup[$code] )? EOR ) ) // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:420:4: ^( RULE id= ID (mod= modifier )? ^( ARG ( ARG_ACTION )? ) ^( RET ( ARG_ACTION )? ) ( throwsSpec )? ( ^( OPTIONS ( . )* ) )? ( ruleScopeSpec )? ( ^( AMPERSAND ( . )* ) )* b= block[\"ruleBlock\", dfa, null] ( exceptionGroup[$code] )? EOR ) { match(input,RULE,FOLLOW_RULE_in_rule359); if (state.failed) return retval; match(input, Token.DOWN, null); if (state.failed) return retval; id=(GrammarAST)match(input,ID,FOLLOW_ID_in_rule363); if (state.failed) return retval; if ( state.backtracking==0 ) {assert currentRuleName == (id!=null?id.getText():null);} // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:422:4: (mod= modifier )? int alt18=2; int LA18_0 = input.LA(1); if ( (LA18_0==FRAGMENT||(LA18_0 >= PRIVATE && LA18_0 <= PUBLIC)) ) { alt18=1; } switch (alt18) { case 1 : // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:422:5: mod= modifier { pushFollow(FOLLOW_modifier_in_rule376); mod=modifier(); state._fsp--; if (state.failed) return retval; } break; } match(input,ARG,FOLLOW_ARG_in_rule384); if (state.failed) return retval; if ( input.LA(1)==Token.DOWN ) { match(input, Token.DOWN, null); if (state.failed) return retval; // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:423:10: ( ARG_ACTION )? int alt19=2; int LA19_0 = input.LA(1); if ( (LA19_0==ARG_ACTION) ) { alt19=1; } switch (alt19) { case 1 : // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:423:11: ARG_ACTION { match(input,ARG_ACTION,FOLLOW_ARG_ACTION_in_rule387); if (state.failed) return retval; } break; } match(input, Token.UP, null); if (state.failed) return retval; } match(input,RET,FOLLOW_RET_in_rule396); if (state.failed) return retval; if ( input.LA(1)==Token.DOWN ) { match(input, Token.DOWN, null); if (state.failed) return retval; // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:424:10: ( ARG_ACTION )? int alt20=2; int LA20_0 = input.LA(1); if ( (LA20_0==ARG_ACTION) ) { alt20=1; } switch (alt20) { case 1 : // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:424:11: ARG_ACTION { match(input,ARG_ACTION,FOLLOW_ARG_ACTION_in_rule399); if (state.failed) return retval; } break; } match(input, Token.UP, null); if (state.failed) return retval; } // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:425:4: ( throwsSpec )? int alt21=2; int LA21_0 = input.LA(1); if ( (LA21_0==THROWS) ) { alt21=1; } switch (alt21) { case 1 : // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:425:5: throwsSpec { pushFollow(FOLLOW_throwsSpec_in_rule408); throwsSpec(); state._fsp--; if (state.failed) return retval; } break; } // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:426:4: ( ^( OPTIONS ( . )* ) )? int alt23=2; int LA23_0 = input.LA(1); if ( (LA23_0==OPTIONS) ) { alt23=1; } switch (alt23) { case 1 : // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:426:6: ^( OPTIONS ( . )* ) { match(input,OPTIONS,FOLLOW_OPTIONS_in_rule418); if (state.failed) return retval; if ( input.LA(1)==Token.DOWN ) { match(input, Token.DOWN, null); if (state.failed) return retval; // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:426:16: ( . )* loop22: while (true) { int alt22=2; int LA22_0 = input.LA(1); if ( ((LA22_0 >= ACTION && LA22_0 <= XDIGIT)) ) { alt22=1; } else if ( (LA22_0==UP) ) { alt22=2; } switch (alt22) { case 1 : // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:426:16: . { matchAny(input); if (state.failed) return retval; } break; default : break loop22; } } match(input, Token.UP, null); if (state.failed) return retval; } } break; } // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:427:4: ( ruleScopeSpec )? int alt24=2; int LA24_0 = input.LA(1); if ( (LA24_0==SCOPE) ) { alt24=1; } switch (alt24) { case 1 : // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:427:5: ruleScopeSpec { pushFollow(FOLLOW_ruleScopeSpec_in_rule431); ruleScopeSpec(); state._fsp--; if (state.failed) return retval; } break; } // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:428:4: ( ^( AMPERSAND ( . )* ) )* loop26: while (true) { int alt26=2; int LA26_0 = input.LA(1); if ( (LA26_0==AMPERSAND) ) { alt26=1; } switch (alt26) { case 1 : // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:428:6: ^( AMPERSAND ( . )* ) { match(input,AMPERSAND,FOLLOW_AMPERSAND_in_rule441); if (state.failed) return retval; if ( input.LA(1)==Token.DOWN ) { match(input, Token.DOWN, null); if (state.failed) return retval; // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:428:18: ( . )* loop25: while (true) { int alt25=2; int LA25_0 = input.LA(1); if ( ((LA25_0 >= ACTION && LA25_0 <= XDIGIT)) ) { alt25=1; } else if ( (LA25_0==UP) ) { alt25=2; } switch (alt25) { case 1 : // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:428:18: . { matchAny(input); if (state.failed) return retval; } break; default : break loop25; } } match(input, Token.UP, null); if (state.failed) return retval; } } break; default : break loop26; } } pushFollow(FOLLOW_block_in_rule455); b=block("ruleBlock", dfa, null); state._fsp--; if (state.failed) return retval; if ( state.backtracking==0 ) { description = grammar.grammarTreeToString((GrammarAST)((GrammarAST)retval.start).getFirstChildWithType(BLOCK), false); description = generator.target.getTargetStringLiteralFromString(description); (b!=null?((CodeGenTreeWalker.block_return)b).code:null).add("description", description); // do not generate lexer rules in combined grammar String stName = null; if ( ruleDescr.isSynPred ) { stName = "synpredRule"; } else if ( grammar.type==Grammar.LEXER ) { if ( currentRuleName.equals(Grammar.ARTIFICIAL_TOKENS_RULENAME) ) { stName = "tokensRule"; } else { stName = "lexerRule"; } } else { if ( !(grammar.type==Grammar.COMBINED && Rule.getRuleType(currentRuleName) == Grammar.LEXER) ) { stName = "rule"; } } retval.code = templates.getInstanceOf(stName); if ( retval.code.getName().equals("/rule") ) { retval.code.add("emptyRule", grammar.isEmptyRule(block2)); } retval.code.add("ruleDescriptor", ruleDescr); String memo = (String)grammar.getBlockOption(((GrammarAST)retval.start),"memoize"); if ( memo==null ) { memo = (String)grammar.getOption("memoize"); } if ( memo!=null && memo.equals("true") && (stName.equals("rule")||stName.equals("lexerRule")) ) { retval.code.add("memoize", memo!=null && memo.equals("true")); } } // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:480:4: ( exceptionGroup[$code] )? int alt27=2; int LA27_0 = input.LA(1); if ( (LA27_0==CATCH||LA27_0==FINALLY) ) { alt27=1; } switch (alt27) { case 1 : // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:480:5: exceptionGroup[$code] { pushFollow(FOLLOW_exceptionGroup_in_rule468); exceptionGroup(retval.code); state._fsp--; if (state.failed) return retval; } break; } match(input,EOR,FOLLOW_EOR_in_rule476); if (state.failed) return retval; match(input, Token.UP, null); if (state.failed) return retval; if ( state.backtracking==0 ) { if ( retval.code!=null ) { if ( grammar.type==Grammar.LEXER ) { boolean naked = currentRuleName.equals(Grammar.ARTIFICIAL_TOKENS_RULENAME) || ((mod!=null?((GrammarAST)mod.start):null)!=null&&(mod!=null?((GrammarAST)mod.start):null).getText().equals(Grammar.FRAGMENT_RULE_MODIFIER)); retval.code.add("nakedBlock", naked); } else { description = grammar.grammarTreeToString(((GrammarAST)retval.start),false); description = generator.target.getTargetStringLiteralFromString(description); retval.code.add("description", description); } Rule theRule = grammar.getRule(currentRuleName); generator.translateActionAttributeReferencesForSingleScope( theRule, theRule.getActions() ); retval.code.add("ruleName", currentRuleName); retval.code.add("block", (b!=null?((CodeGenTreeWalker.block_return)b).code:null)); if ( initAction!=null ) { retval.code.add("initAction", initAction); } } } } } catch (RecognitionException re) { reportError(re); recover(input,re); } finally { // do for sure before leaving templates = saveGroup; } return retval; } // $ANTLR end "rule" public static class modifier_return extends TreeRuleReturnScope { }; // $ANTLR start "modifier" // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:515:1: modifier : ( 'protected' | 'public' | 'private' | 'fragment' ); public final CodeGenTreeWalker.modifier_return modifier() throws RecognitionException { CodeGenTreeWalker.modifier_return retval = new CodeGenTreeWalker.modifier_return(); retval.start = input.LT(1); try { // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:516:2: ( 'protected' | 'public' | 'private' | 'fragment' ) // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g: { if ( input.LA(1)==FRAGMENT||(input.LA(1) >= PRIVATE && input.LA(1) <= PUBLIC) ) { input.consume(); state.errorRecovery=false; state.failed=false; } else { if (state.backtracking>0) {state.failed=true; return retval;} MismatchedSetException mse = new MismatchedSetException(null,input); throw mse; } } } catch (RecognitionException re) { reportError(re); recover(input,re); } finally { // do for sure before leaving } return retval; } // $ANTLR end "modifier" // $ANTLR start "throwsSpec" // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:522:1: throwsSpec : ^( 'throws' ( ID )+ ) ; public final void throwsSpec() throws RecognitionException { try { // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:523:2: ( ^( 'throws' ( ID )+ ) ) // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:523:4: ^( 'throws' ( ID )+ ) { match(input,THROWS,FOLLOW_THROWS_in_throwsSpec526); if (state.failed) return; match(input, Token.DOWN, null); if (state.failed) return; // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:523:15: ( ID )+ int cnt28=0; loop28: while (true) { int alt28=2; int LA28_0 = input.LA(1); if ( (LA28_0==ID) ) { alt28=1; } switch (alt28) { case 1 : // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:523:15: ID { match(input,ID,FOLLOW_ID_in_throwsSpec528); if (state.failed) return; } break; default : if ( cnt28 >= 1 ) break loop28; if (state.backtracking>0) {state.failed=true; return;} EarlyExitException eee = new EarlyExitException(28, input); throw eee; } cnt28++; } match(input, Token.UP, null); if (state.failed) return; } } catch (RecognitionException re) { reportError(re); recover(input,re); } finally { // do for sure before leaving } } // $ANTLR end "throwsSpec" // $ANTLR start "ruleScopeSpec" // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:526:1: ruleScopeSpec : ^( 'scope' ( ^( AMPERSAND ( . )* ) )* ( ACTION )? ( ID )* ) ; public final void ruleScopeSpec() throws RecognitionException { try { // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:527:2: ( ^( 'scope' ( ^( AMPERSAND ( . )* ) )* ( ACTION )? ( ID )* ) ) // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:527:4: ^( 'scope' ( ^( AMPERSAND ( . )* ) )* ( ACTION )? ( ID )* ) { match(input,SCOPE,FOLLOW_SCOPE_in_ruleScopeSpec543); if (state.failed) return; if ( input.LA(1)==Token.DOWN ) { match(input, Token.DOWN, null); if (state.failed) return; // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:527:15: ( ^( AMPERSAND ( . )* ) )* loop30: while (true) { int alt30=2; int LA30_0 = input.LA(1); if ( (LA30_0==AMPERSAND) ) { alt30=1; } switch (alt30) { case 1 : // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:527:17: ^( AMPERSAND ( . )* ) { match(input,AMPERSAND,FOLLOW_AMPERSAND_in_ruleScopeSpec548); if (state.failed) return; if ( input.LA(1)==Token.DOWN ) { match(input, Token.DOWN, null); if (state.failed) return; // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:527:29: ( . )* loop29: while (true) { int alt29=2; int LA29_0 = input.LA(1); if ( ((LA29_0 >= ACTION && LA29_0 <= XDIGIT)) ) { alt29=1; } else if ( (LA29_0==UP) ) { alt29=2; } switch (alt29) { case 1 : // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:527:29: . { matchAny(input); if (state.failed) return; } break; default : break loop29; } } match(input, Token.UP, null); if (state.failed) return; } } break; default : break loop30; } } // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:527:36: ( ACTION )? int alt31=2; int LA31_0 = input.LA(1); if ( (LA31_0==ACTION) ) { alt31=1; } switch (alt31) { case 1 : // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:527:37: ACTION { match(input,ACTION,FOLLOW_ACTION_in_ruleScopeSpec558); if (state.failed) return; } break; } // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:527:46: ( ID )* loop32: while (true) { int alt32=2; int LA32_0 = input.LA(1); if ( (LA32_0==ID) ) { alt32=1; } switch (alt32) { case 1 : // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:527:48: ID { match(input,ID,FOLLOW_ID_in_ruleScopeSpec564); if (state.failed) return; } break; default : break loop32; } } match(input, Token.UP, null); if (state.failed) return; } } } catch (RecognitionException re) { reportError(re); recover(input,re); } finally { // do for sure before leaving } } // $ANTLR end "ruleScopeSpec" public static class block_return extends TreeRuleReturnScope { public ST code=null; }; // $ANTLR start "block" // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:530:1: block[String blockTemplateName, org.antlr.analysis.DFA dfa, GrammarAST label] returns [ST code=null] options {k=1; } : ({...}? => setBlock | ^( BLOCK ( ^( OPTIONS ( . )* ) )? (alt= alternative[$label] rew= rewrite )+ EOB ) ); public final CodeGenTreeWalker.block_return block(String blockTemplateName, org.antlr.analysis.DFA dfa, GrammarAST label) throws RecognitionException { CodeGenTreeWalker.block_return retval = new CodeGenTreeWalker.block_return(); retval.start = input.LT(1); TreeRuleReturnScope alt =null; TreeRuleReturnScope rew =null; TreeRuleReturnScope setBlock1 =null; int altNum = 0; blockNestingLevel++; if ( state.backtracking == 0 ) { ST decision = null; if ( dfa != null ) { retval.code = templates.getInstanceOf(blockTemplateName); decision = generator.genLookaheadDecision(recognizerST,dfa); retval.code.add("decision", decision); retval.code.add("decisionNumber", dfa.getDecisionNumber()); retval.code.add("maxK",dfa.getMaxLookaheadDepth()); retval.code.add("maxAlt",dfa.getNumberOfAlts()); } else { retval.code = templates.getInstanceOf(blockTemplateName+"SingleAlt"); } retval.code.add("blockLevel", blockNestingLevel); retval.code.add("enclosingBlockLevel", blockNestingLevel-1); altNum = 1; if ( this.blockNestingLevel==RULE_BLOCK_NESTING_LEVEL ) { this.outerAltNum=1; } } try { // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:562:2: ({...}? => setBlock | ^( BLOCK ( ^( OPTIONS ( . )* ) )? (alt= alternative[$label] rew= rewrite )+ EOB ) ) int alt36=2; int LA36_0 = input.LA(1); if ( (LA36_0==BLOCK) ) { int LA36_1 = input.LA(2); if ( ((((GrammarAST)retval.start).getSetValue()!=null)) ) { alt36=1; } else if ( (true) ) { alt36=2; } } else { if (state.backtracking>0) {state.failed=true; return retval;} NoViableAltException nvae = new NoViableAltException("", 36, 0, input); throw nvae; } switch (alt36) { case 1 : // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:562:4: {...}? => setBlock { if ( !((((GrammarAST)retval.start).getSetValue()!=null)) ) { if (state.backtracking>0) {state.failed=true; return retval;} throw new FailedPredicateException(input, "block", "$start.getSetValue()!=null"); } pushFollow(FOLLOW_setBlock_in_block605); setBlock1=setBlock(); state._fsp--; if (state.failed) return retval; if ( state.backtracking==0 ) { retval.code.add("alts",(setBlock1!=null?((CodeGenTreeWalker.setBlock_return)setBlock1).code:null)); } } break; case 2 : // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:567:4: ^( BLOCK ( ^( OPTIONS ( . )* ) )? (alt= alternative[$label] rew= rewrite )+ EOB ) { match(input,BLOCK,FOLLOW_BLOCK_in_block618); if (state.failed) return retval; match(input, Token.DOWN, null); if (state.failed) return retval; // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:568:4: ( ^( OPTIONS ( . )* ) )? int alt34=2; int LA34_0 = input.LA(1); if ( (LA34_0==OPTIONS) ) { alt34=1; } switch (alt34) { case 1 : // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:568:6: ^( OPTIONS ( . )* ) { match(input,OPTIONS,FOLLOW_OPTIONS_in_block626); if (state.failed) return retval; if ( input.LA(1)==Token.DOWN ) { match(input, Token.DOWN, null); if (state.failed) return retval; // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:568:16: ( . )* loop33: while (true) { int alt33=2; int LA33_0 = input.LA(1); if ( ((LA33_0 >= ACTION && LA33_0 <= XDIGIT)) ) { alt33=1; } else if ( (LA33_0==UP) ) { alt33=2; } switch (alt33) { case 1 : // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:568:16: . { matchAny(input); if (state.failed) return retval; } break; default : break loop33; } } match(input, Token.UP, null); if (state.failed) return retval; } } break; } // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:569:4: (alt= alternative[$label] rew= rewrite )+ int cnt35=0; loop35: while (true) { int alt35=2; int LA35_0 = input.LA(1); if ( (LA35_0==ALT) ) { alt35=1; } switch (alt35) { case 1 : // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:569:6: alt= alternative[$label] rew= rewrite { pushFollow(FOLLOW_alternative_in_block643); alt=alternative(label); state._fsp--; if (state.failed) return retval; pushFollow(FOLLOW_rewrite_in_block648); rew=rewrite(); state._fsp--; if (state.failed) return retval; if ( state.backtracking==0 ) { if ( this.blockNestingLevel==RULE_BLOCK_NESTING_LEVEL ) { this.outerAltNum++; } // add the rewrite code as just another element in the alt :) // (unless it's a " -> ..." rewrite // ( -> ... ) GrammarAST firstRewriteAST = (rew!=null?((GrammarAST)rew.start):null).findFirstType(REWRITE); boolean etc = (rew!=null?((GrammarAST)rew.start):null).getType()==REWRITES && firstRewriteAST.getChild(0)!=null && firstRewriteAST.getChild(0).getType()==ETC; if ( (rew!=null?((CodeGenTreeWalker.rewrite_return)rew).code:null)!=null && !etc ) { (alt!=null?((CodeGenTreeWalker.alternative_return)alt).code:null).add("rew", (rew!=null?((CodeGenTreeWalker.rewrite_return)rew).code:null)); } // add this alt to the list of alts for this block retval.code.add("alts",(alt!=null?((CodeGenTreeWalker.alternative_return)alt).code:null)); (alt!=null?((CodeGenTreeWalker.alternative_return)alt).code:null).add("altNum", altNum); (alt!=null?((CodeGenTreeWalker.alternative_return)alt).code:null).add("outerAlt", blockNestingLevel==RULE_BLOCK_NESTING_LEVEL); altNum++; } } break; default : if ( cnt35 >= 1 ) break loop35; if (state.backtracking>0) {state.failed=true; return retval;} EarlyExitException eee = new EarlyExitException(35, input); throw eee; } cnt35++; } match(input,EOB,FOLLOW_EOB_in_block665); if (state.failed) return retval; match(input, Token.UP, null); if (state.failed) return retval; } break; } } catch (RecognitionException re) { reportError(re); recover(input,re); } finally { // do for sure before leaving blockNestingLevel--; } return retval; } // $ANTLR end "block" public static class setBlock_return extends TreeRuleReturnScope { public ST code=null; }; // $ANTLR start "setBlock" // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:599:1: setBlock returns [ST code=null] : ^(s= BLOCK ( . )* ) ; public final CodeGenTreeWalker.setBlock_return setBlock() throws RecognitionException { CodeGenTreeWalker.setBlock_return retval = new CodeGenTreeWalker.setBlock_return(); retval.start = input.LT(1); GrammarAST s=null; ST setcode = null; if ( state.backtracking == 0 ) { if ( blockNestingLevel==RULE_BLOCK_NESTING_LEVEL && grammar.buildAST() ) { Rule r = grammar.getRule(currentRuleName); currentAltHasASTRewrite = r.hasRewrite(outerAltNum); if ( currentAltHasASTRewrite ) { r.trackTokenReferenceInAlt(((GrammarAST)retval.start), outerAltNum); } } } try { // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:616:2: ( ^(s= BLOCK ( . )* ) ) // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:616:4: ^(s= BLOCK ( . )* ) { s=(GrammarAST)match(input,BLOCK,FOLLOW_BLOCK_in_setBlock697); if (state.failed) return retval; if ( input.LA(1)==Token.DOWN ) { match(input, Token.DOWN, null); if (state.failed) return retval; // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:616:14: ( . )* loop37: while (true) { int alt37=2; int LA37_0 = input.LA(1); if ( ((LA37_0 >= ACTION && LA37_0 <= XDIGIT)) ) { alt37=1; } else if ( (LA37_0==UP) ) { alt37=2; } switch (alt37) { case 1 : // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:616:14: . { matchAny(input); if (state.failed) return retval; } break; default : break loop37; } } match(input, Token.UP, null); if (state.failed) return retval; } if ( state.backtracking==0 ) { int i = ((CommonToken)s.getToken()).getTokenIndex(); if ( blockNestingLevel==RULE_BLOCK_NESTING_LEVEL ) { setcode = getTokenElementST("matchRuleBlockSet", "set", s, null, null); } else { setcode = getTokenElementST("matchSet", "set", s, null, null); } setcode.add("elementIndex", i); //if ( grammar.type!=Grammar.LEXER ) //{ // generator.generateLocalFOLLOW(s,"set",currentRuleName,i); //} setcode.add("s", generator.genSetExpr(templates,s.getSetValue(),1,false)); ST altcode=templates.getInstanceOf("alt"); altcode.addAggr("elements.{el,line,pos}", setcode, s.getLine(), s.getCharPositionInLine() + 1 ); altcode.add("altNum", 1); altcode.add("outerAlt", blockNestingLevel==RULE_BLOCK_NESTING_LEVEL); if ( !currentAltHasASTRewrite && grammar.buildAST() ) { altcode.add("autoAST", true); } altcode.add("treeLevel", rewriteTreeNestingLevel); retval.code = altcode; } } } catch (RecognitionException re) { reportError(re); recover(input,re); } finally { // do for sure before leaving } return retval; } // $ANTLR end "setBlock" // $ANTLR start "setAlternative" // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:651:1: setAlternative : ^( ALT ( setElement )+ EOA ) ; public final void setAlternative() throws RecognitionException { try { // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:652:2: ( ^( ALT ( setElement )+ EOA ) ) // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:652:4: ^( ALT ( setElement )+ EOA ) { match(input,ALT,FOLLOW_ALT_in_setAlternative717); if (state.failed) return; match(input, Token.DOWN, null); if (state.failed) return; // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:652:10: ( setElement )+ int cnt38=0; loop38: while (true) { int alt38=2; int LA38_0 = input.LA(1); if ( ((LA38_0 >= CHAR_LITERAL && LA38_0 <= CHAR_RANGE)||LA38_0==STRING_LITERAL||LA38_0==TOKEN_REF) ) { alt38=1; } switch (alt38) { case 1 : // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:652:10: setElement { pushFollow(FOLLOW_setElement_in_setAlternative719); setElement(); state._fsp--; if (state.failed) return; } break; default : if ( cnt38 >= 1 ) break loop38; if (state.backtracking>0) {state.failed=true; return;} EarlyExitException eee = new EarlyExitException(38, input); throw eee; } cnt38++; } match(input,EOA,FOLLOW_EOA_in_setAlternative722); if (state.failed) return; match(input, Token.UP, null); if (state.failed) return; } } catch (RecognitionException re) { reportError(re); recover(input,re); } finally { // do for sure before leaving } } // $ANTLR end "setAlternative" // $ANTLR start "exceptionGroup" // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:655:1: exceptionGroup[ST ruleST] : ( ( exceptionHandler[$ruleST] )+ ( finallyClause[$ruleST] )? | finallyClause[$ruleST] ); public final void exceptionGroup(ST ruleST) throws RecognitionException { try { // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:656:2: ( ( exceptionHandler[$ruleST] )+ ( finallyClause[$ruleST] )? | finallyClause[$ruleST] ) int alt41=2; int LA41_0 = input.LA(1); if ( (LA41_0==CATCH) ) { alt41=1; } else if ( (LA41_0==FINALLY) ) { alt41=2; } else { if (state.backtracking>0) {state.failed=true; return;} NoViableAltException nvae = new NoViableAltException("", 41, 0, input); throw nvae; } switch (alt41) { case 1 : // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:656:4: ( exceptionHandler[$ruleST] )+ ( finallyClause[$ruleST] )? { // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:656:4: ( exceptionHandler[$ruleST] )+ int cnt39=0; loop39: while (true) { int alt39=2; int LA39_0 = input.LA(1); if ( (LA39_0==CATCH) ) { alt39=1; } switch (alt39) { case 1 : // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:656:6: exceptionHandler[$ruleST] { pushFollow(FOLLOW_exceptionHandler_in_exceptionGroup737); exceptionHandler(ruleST); state._fsp--; if (state.failed) return; } break; default : if ( cnt39 >= 1 ) break loop39; if (state.backtracking>0) {state.failed=true; return;} EarlyExitException eee = new EarlyExitException(39, input); throw eee; } cnt39++; } // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:656:35: ( finallyClause[$ruleST] )? int alt40=2; int LA40_0 = input.LA(1); if ( (LA40_0==FINALLY) ) { alt40=1; } switch (alt40) { case 1 : // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:656:36: finallyClause[$ruleST] { pushFollow(FOLLOW_finallyClause_in_exceptionGroup744); finallyClause(ruleST); state._fsp--; if (state.failed) return; } break; } } break; case 2 : // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:657:4: finallyClause[$ruleST] { pushFollow(FOLLOW_finallyClause_in_exceptionGroup752); finallyClause(ruleST); state._fsp--; if (state.failed) return; } break; } } catch (RecognitionException re) { reportError(re); recover(input,re); } finally { // do for sure before leaving } } // $ANTLR end "exceptionGroup" // $ANTLR start "exceptionHandler" // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:660:1: exceptionHandler[ST ruleST] : ^( 'catch' ARG_ACTION ACTION ) ; public final void exceptionHandler(ST ruleST) throws RecognitionException { GrammarAST ACTION2=null; GrammarAST ARG_ACTION3=null; try { // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:661:2: ( ^( 'catch' ARG_ACTION ACTION ) ) // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:661:4: ^( 'catch' ARG_ACTION ACTION ) { match(input,CATCH,FOLLOW_CATCH_in_exceptionHandler766); if (state.failed) return; match(input, Token.DOWN, null); if (state.failed) return; ARG_ACTION3=(GrammarAST)match(input,ARG_ACTION,FOLLOW_ARG_ACTION_in_exceptionHandler768); if (state.failed) return; ACTION2=(GrammarAST)match(input,ACTION,FOLLOW_ACTION_in_exceptionHandler770); if (state.failed) return; match(input, Token.UP, null); if (state.failed) return; if ( state.backtracking==0 ) { List<? extends Object> chunks = generator.translateAction(currentRuleName,ACTION2); ruleST.addAggr("exceptions.{decl,action}",(ARG_ACTION3!=null?ARG_ACTION3.getText():null),chunks); } } } catch (RecognitionException re) { reportError(re); recover(input,re); } finally { // do for sure before leaving } } // $ANTLR end "exceptionHandler" // $ANTLR start "finallyClause" // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:668:1: finallyClause[ST ruleST] : ^( 'finally' ACTION ) ; public final void finallyClause(ST ruleST) throws RecognitionException { GrammarAST ACTION4=null; try { // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:669:2: ( ^( 'finally' ACTION ) ) // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:669:4: ^( 'finally' ACTION ) { match(input,FINALLY,FOLLOW_FINALLY_in_finallyClause788); if (state.failed) return; match(input, Token.DOWN, null); if (state.failed) return; ACTION4=(GrammarAST)match(input,ACTION,FOLLOW_ACTION_in_finallyClause790); if (state.failed) return; match(input, Token.UP, null); if (state.failed) return; if ( state.backtracking==0 ) { List<? extends Object> chunks = generator.translateAction(currentRuleName,ACTION4); ruleST.add("finally",chunks); } } } catch (RecognitionException re) { reportError(re); recover(input,re); } finally { // do for sure before leaving } } // $ANTLR end "finallyClause" public static class alternative_return extends TreeRuleReturnScope { public ST code; }; // $ANTLR start "alternative" // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:676:1: alternative[GrammarAST label] returns [ST code] : ^(a= ALT (e= element[$label,null] )+ EOA ) ; public final CodeGenTreeWalker.alternative_return alternative(GrammarAST label) throws RecognitionException { CodeGenTreeWalker.alternative_return retval = new CodeGenTreeWalker.alternative_return(); retval.start = input.LT(1); GrammarAST a=null; TreeRuleReturnScope e =null; if ( state.backtracking == 0 ) { retval.code = templates.getInstanceOf("alt"); if ( blockNestingLevel==RULE_BLOCK_NESTING_LEVEL && grammar.buildAST() ) { Rule r = grammar.getRule(currentRuleName); currentAltHasASTRewrite = r.hasRewrite(outerAltNum); } String description = grammar.grammarTreeToString(((GrammarAST)retval.start), false); description = generator.target.getTargetStringLiteralFromString(description); retval.code.add("description", description); retval.code.add("treeLevel", rewriteTreeNestingLevel); if ( !currentAltHasASTRewrite && grammar.buildAST() ) { retval.code.add("autoAST", true); } } try { // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:697:2: ( ^(a= ALT (e= element[$label,null] )+ EOA ) ) // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:697:4: ^(a= ALT (e= element[$label,null] )+ EOA ) { a=(GrammarAST)match(input,ALT,FOLLOW_ALT_in_alternative820); if (state.failed) return retval; match(input, Token.DOWN, null); if (state.failed) return retval; // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:698:4: (e= element[$label,null] )+ int cnt42=0; loop42: while (true) { int alt42=2; int LA42_0 = input.LA(1); if ( (LA42_0==ACTION||(LA42_0 >= ASSIGN && LA42_0 <= BLOCK)||(LA42_0 >= CHAR_LITERAL && LA42_0 <= CHAR_RANGE)||LA42_0==CLOSURE||LA42_0==DOT||LA42_0==EPSILON||LA42_0==FORCED_ACTION||LA42_0==GATED_SEMPRED||LA42_0==NOT||LA42_0==OPTIONAL||(LA42_0 >= PLUS_ASSIGN && LA42_0 <= POSITIVE_CLOSURE)||LA42_0==ROOT||LA42_0==RULE_REF||LA42_0==SEMPRED||(LA42_0 >= STRING_LITERAL && LA42_0 <= SYN_SEMPRED)||LA42_0==TOKEN_REF||LA42_0==TREE_BEGIN||LA42_0==WILDCARD) ) { alt42=1; } switch (alt42) { case 1 : // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:699:5: e= element[$label,null] { pushFollow(FOLLOW_element_in_alternative833); e=element(label, null); state._fsp--; if (state.failed) return retval; if ( state.backtracking==0 ) { if ((e!=null?((CodeGenTreeWalker.element_return)e).code:null) != null) { retval.code.addAggr("elements.{el,line,pos}", (e!=null?((CodeGenTreeWalker.element_return)e).code:null), (e!=null?((GrammarAST)e.start):null).getLine(), (e!=null?((GrammarAST)e.start):null).getCharPositionInLine() + 1 ); } } } break; default : if ( cnt42 >= 1 ) break loop42; if (state.backtracking>0) {state.failed=true; return retval;} EarlyExitException eee = new EarlyExitException(42, input); throw eee; } cnt42++; } match(input,EOA,FOLLOW_EOA_in_alternative851); if (state.failed) return retval; match(input, Token.UP, null); if (state.failed) return retval; } } catch (RecognitionException re) { reportError(re); recover(input,re); } finally { // do for sure before leaving } return retval; } // $ANTLR end "alternative" public static class element_return extends TreeRuleReturnScope { public ST code=null; }; // $ANTLR start "element" // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:715:1: element[GrammarAST label, GrammarAST astSuffix] returns [ST code=null] options {k=1; } : ( ^( ROOT e= element[$label,$ROOT] ) | ^( BANG e= element[$label,$BANG] ) | ^(n= NOT ne= notElement[$n, $label, $astSuffix] ) | ^( ASSIGN alabel= ID e= element[$alabel,$astSuffix] ) | ^( PLUS_ASSIGN label2= ID e= element[$label2,$astSuffix] ) | ^( CHAR_RANGE a= CHAR_LITERAL b= CHAR_LITERAL ) | ({...}? ( BLOCK | OPTIONAL | CLOSURE | POSITIVE_CLOSURE ) )=> ebnf[$label] | atom[null, $label, $astSuffix] | tree_ | element_action | (sp= SEMPRED |sp= GATED_SEMPRED ) | SYN_SEMPRED | ^( SYNPRED ( . )* ) | ^( BACKTRACK_SEMPRED ( . )* ) | EPSILON ); public final CodeGenTreeWalker.element_return element(GrammarAST label, GrammarAST astSuffix) throws RecognitionException { CodeGenTreeWalker.element_return retval = new CodeGenTreeWalker.element_return(); retval.start = input.LT(1); GrammarAST n=null; GrammarAST alabel=null; GrammarAST label2=null; GrammarAST a=null; GrammarAST b=null; GrammarAST sp=null; GrammarAST ROOT5=null; GrammarAST BANG6=null; TreeRuleReturnScope e =null; ST ne =null; TreeRuleReturnScope ebnf7 =null; TreeRuleReturnScope atom8 =null; TreeRuleReturnScope tree_9 =null; TreeRuleReturnScope element_action10 =null; IntSet elements=null; GrammarAST ast = null; try { // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:722:2: ( ^( ROOT e= element[$label,$ROOT] ) | ^( BANG e= element[$label,$BANG] ) | ^(n= NOT ne= notElement[$n, $label, $astSuffix] ) | ^( ASSIGN alabel= ID e= element[$alabel,$astSuffix] ) | ^( PLUS_ASSIGN label2= ID e= element[$label2,$astSuffix] ) | ^( CHAR_RANGE a= CHAR_LITERAL b= CHAR_LITERAL ) | ({...}? ( BLOCK | OPTIONAL | CLOSURE | POSITIVE_CLOSURE ) )=> ebnf[$label] | atom[null, $label, $astSuffix] | tree_ | element_action | (sp= SEMPRED |sp= GATED_SEMPRED ) | SYN_SEMPRED | ^( SYNPRED ( . )* ) | ^( BACKTRACK_SEMPRED ( . )* ) | EPSILON ) int alt46=15; int LA46_0 = input.LA(1); if ( (LA46_0==ROOT) ) { alt46=1; } else if ( (LA46_0==BANG) ) { alt46=2; } else if ( (LA46_0==NOT) ) { alt46=3; } else if ( (LA46_0==ASSIGN) ) { alt46=4; } else if ( (LA46_0==PLUS_ASSIGN) ) { alt46=5; } else if ( (LA46_0==CHAR_RANGE) ) { alt46=6; } else if ( (LA46_0==BLOCK) ) { int LA46_7 = input.LA(2); if ( (synpred1_CodeGenTreeWalker()) ) { alt46=7; } else if ( (true) ) { alt46=8; } } else if ( (LA46_0==OPTIONAL) && (synpred1_CodeGenTreeWalker())) { alt46=7; } else if ( (LA46_0==CLOSURE) && (synpred1_CodeGenTreeWalker())) { alt46=7; } else if ( (LA46_0==POSITIVE_CLOSURE) && (synpred1_CodeGenTreeWalker())) { alt46=7; } else if ( (LA46_0==CHAR_LITERAL||LA46_0==DOT||LA46_0==RULE_REF||LA46_0==STRING_LITERAL||LA46_0==TOKEN_REF||LA46_0==WILDCARD) ) { alt46=8; } else if ( (LA46_0==TREE_BEGIN) ) { alt46=9; } else if ( (LA46_0==ACTION||LA46_0==FORCED_ACTION) ) { alt46=10; } else if ( (LA46_0==GATED_SEMPRED||LA46_0==SEMPRED) ) { alt46=11; } else if ( (LA46_0==SYN_SEMPRED) ) { alt46=12; } else if ( (LA46_0==SYNPRED) ) { alt46=13; } else if ( (LA46_0==BACKTRACK_SEMPRED) ) { alt46=14; } else if ( (LA46_0==EPSILON) ) { alt46=15; } else { if (state.backtracking>0) {state.failed=true; return retval;} NoViableAltException nvae = new NoViableAltException("", 46, 0, input); throw nvae; } switch (alt46) { case 1 : // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:722:4: ^( ROOT e= element[$label,$ROOT] ) { ROOT5=(GrammarAST)match(input,ROOT,FOLLOW_ROOT_in_element886); if (state.failed) return retval; match(input, Token.DOWN, null); if (state.failed) return retval; pushFollow(FOLLOW_element_in_element890); e=element(label, ROOT5); state._fsp--; if (state.failed) return retval; match(input, Token.UP, null); if (state.failed) return retval; if ( state.backtracking==0 ) { retval.code = (e!=null?((CodeGenTreeWalker.element_return)e).code:null); } } break; case 2 : // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:725:4: ^( BANG e= element[$label,$BANG] ) { BANG6=(GrammarAST)match(input,BANG,FOLLOW_BANG_in_element903); if (state.failed) return retval; match(input, Token.DOWN, null); if (state.failed) return retval; pushFollow(FOLLOW_element_in_element907); e=element(label, BANG6); state._fsp--; if (state.failed) return retval; match(input, Token.UP, null); if (state.failed) return retval; if ( state.backtracking==0 ) { retval.code = (e!=null?((CodeGenTreeWalker.element_return)e).code:null); } } break; case 3 : // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:728:4: ^(n= NOT ne= notElement[$n, $label, $astSuffix] ) { n=(GrammarAST)match(input,NOT,FOLLOW_NOT_in_element923); if (state.failed) return retval; match(input, Token.DOWN, null); if (state.failed) return retval; pushFollow(FOLLOW_notElement_in_element927); ne=notElement(n, label, astSuffix); state._fsp--; if (state.failed) return retval; match(input, Token.UP, null); if (state.failed) return retval; if ( state.backtracking==0 ) { retval.code = ne; } } break; case 4 : // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:731:4: ^( ASSIGN alabel= ID e= element[$alabel,$astSuffix] ) { match(input,ASSIGN,FOLLOW_ASSIGN_in_element942); if (state.failed) return retval; match(input, Token.DOWN, null); if (state.failed) return retval; alabel=(GrammarAST)match(input,ID,FOLLOW_ID_in_element946); if (state.failed) return retval; pushFollow(FOLLOW_element_in_element950); e=element(alabel, astSuffix); state._fsp--; if (state.failed) return retval; match(input, Token.UP, null); if (state.failed) return retval; if ( state.backtracking==0 ) { retval.code = (e!=null?((CodeGenTreeWalker.element_return)e).code:null); } } break; case 5 : // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:734:4: ^( PLUS_ASSIGN label2= ID e= element[$label2,$astSuffix] ) { match(input,PLUS_ASSIGN,FOLLOW_PLUS_ASSIGN_in_element965); if (state.failed) return retval; match(input, Token.DOWN, null); if (state.failed) return retval; label2=(GrammarAST)match(input,ID,FOLLOW_ID_in_element969); if (state.failed) return retval; pushFollow(FOLLOW_element_in_element973); e=element(label2, astSuffix); state._fsp--; if (state.failed) return retval; match(input, Token.UP, null); if (state.failed) return retval; if ( state.backtracking==0 ) { retval.code = (e!=null?((CodeGenTreeWalker.element_return)e).code:null); } } break; case 6 : // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:737:4: ^( CHAR_RANGE a= CHAR_LITERAL b= CHAR_LITERAL ) { match(input,CHAR_RANGE,FOLLOW_CHAR_RANGE_in_element987); if (state.failed) return retval; match(input, Token.DOWN, null); if (state.failed) return retval; a=(GrammarAST)match(input,CHAR_LITERAL,FOLLOW_CHAR_LITERAL_in_element991); if (state.failed) return retval; b=(GrammarAST)match(input,CHAR_LITERAL,FOLLOW_CHAR_LITERAL_in_element995); if (state.failed) return retval; match(input, Token.UP, null); if (state.failed) return retval; if ( state.backtracking==0 ) { retval.code = templates.getInstanceOf("charRangeRef"); String low = generator.target.getTargetCharLiteralFromANTLRCharLiteral(generator,(a!=null?a.getText():null)); String high = generator.target.getTargetCharLiteralFromANTLRCharLiteral(generator,(b!=null?b.getText():null)); retval.code.add("a", low); retval.code.add("b", high); if ( label!=null ) { retval.code.add("label", label.getText()); } } } break; case 7 : // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:750:4: ({...}? ( BLOCK | OPTIONAL | CLOSURE | POSITIVE_CLOSURE ) )=> ebnf[$label] { pushFollow(FOLLOW_ebnf_in_element1024); ebnf7=ebnf(label); state._fsp--; if (state.failed) return retval; if ( state.backtracking==0 ) { retval.code = (ebnf7!=null?((CodeGenTreeWalker.ebnf_return)ebnf7).code:null); } } break; case 8 : // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:753:4: atom[null, $label, $astSuffix] { pushFollow(FOLLOW_atom_in_element1035); atom8=atom(null, label, astSuffix); state._fsp--; if (state.failed) return retval; if ( state.backtracking==0 ) { retval.code = (atom8!=null?((CodeGenTreeWalker.atom_return)atom8).code:null); } } break; case 9 : // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:756:4: tree_ { pushFollow(FOLLOW_tree__in_element1046); tree_9=tree_(); state._fsp--; if (state.failed) return retval; if ( state.backtracking==0 ) { retval.code = (tree_9!=null?((CodeGenTreeWalker.tree__return)tree_9).code:null); } } break; case 10 : // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:759:4: element_action { pushFollow(FOLLOW_element_action_in_element1056); element_action10=element_action(); state._fsp--; if (state.failed) return retval; if ( state.backtracking==0 ) { retval.code = (element_action10!=null?((CodeGenTreeWalker.element_action_return)element_action10).code:null); } } break; case 11 : // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:762:6: (sp= SEMPRED |sp= GATED_SEMPRED ) { // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:762:6: (sp= SEMPRED |sp= GATED_SEMPRED ) int alt43=2; int LA43_0 = input.LA(1); if ( (LA43_0==SEMPRED) ) { alt43=1; } else if ( (LA43_0==GATED_SEMPRED) ) { alt43=2; } else { if (state.backtracking>0) {state.failed=true; return retval;} NoViableAltException nvae = new NoViableAltException("", 43, 0, input); throw nvae; } switch (alt43) { case 1 : // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:762:7: sp= SEMPRED { sp=(GrammarAST)match(input,SEMPRED,FOLLOW_SEMPRED_in_element1071); if (state.failed) return retval; } break; case 2 : // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:762:18: sp= GATED_SEMPRED { sp=(GrammarAST)match(input,GATED_SEMPRED,FOLLOW_GATED_SEMPRED_in_element1075); if (state.failed) return retval; } break; } if ( state.backtracking==0 ) { retval.code = templates.getInstanceOf("validateSemanticPredicate"); retval.code.add("pred", generator.translateAction(currentRuleName,sp)); String description = generator.target.getTargetStringLiteralFromString((sp!=null?sp.getText():null)); retval.code.add("description", description); } } break; case 12 : // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:770:4: SYN_SEMPRED { match(input,SYN_SEMPRED,FOLLOW_SYN_SEMPRED_in_element1086); if (state.failed) return retval; } break; case 13 : // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:772:4: ^( SYNPRED ( . )* ) { match(input,SYNPRED,FOLLOW_SYNPRED_in_element1094); if (state.failed) return retval; if ( input.LA(1)==Token.DOWN ) { match(input, Token.DOWN, null); if (state.failed) return retval; // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:772:14: ( . )* loop44: while (true) { int alt44=2; int LA44_0 = input.LA(1); if ( ((LA44_0 >= ACTION && LA44_0 <= XDIGIT)) ) { alt44=1; } else if ( (LA44_0==UP) ) { alt44=2; } switch (alt44) { case 1 : // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:772:14: . { matchAny(input); if (state.failed) return retval; } break; default : break loop44; } } match(input, Token.UP, null); if (state.failed) return retval; } } break; case 14 : // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:774:4: ^( BACKTRACK_SEMPRED ( . )* ) { match(input,BACKTRACK_SEMPRED,FOLLOW_BACKTRACK_SEMPRED_in_element1105); if (state.failed) return retval; if ( input.LA(1)==Token.DOWN ) { match(input, Token.DOWN, null); if (state.failed) return retval; // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:774:24: ( . )* loop45: while (true) { int alt45=2; int LA45_0 = input.LA(1); if ( ((LA45_0 >= ACTION && LA45_0 <= XDIGIT)) ) { alt45=1; } else if ( (LA45_0==UP) ) { alt45=2; } switch (alt45) { case 1 : // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:774:24: . { matchAny(input); if (state.failed) return retval; } break; default : break loop45; } } match(input, Token.UP, null); if (state.failed) return retval; } } break; case 15 : // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:776:6: EPSILON { match(input,EPSILON,FOLLOW_EPSILON_in_element1117); if (state.failed) return retval; } break; } } catch (RecognitionException re) { reportError(re); recover(input,re); } finally { // do for sure before leaving } return retval; } // $ANTLR end "element" public static class element_action_return extends TreeRuleReturnScope { public ST code=null; }; // $ANTLR start "element_action" // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:779:1: element_action returns [ST code=null] : (act= ACTION |act2= FORCED_ACTION ); public final CodeGenTreeWalker.element_action_return element_action() throws RecognitionException { CodeGenTreeWalker.element_action_return retval = new CodeGenTreeWalker.element_action_return(); retval.start = input.LT(1); GrammarAST act=null; GrammarAST act2=null; try { // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:780:2: (act= ACTION |act2= FORCED_ACTION ) int alt47=2; int LA47_0 = input.LA(1); if ( (LA47_0==ACTION) ) { alt47=1; } else if ( (LA47_0==FORCED_ACTION) ) { alt47=2; } else { if (state.backtracking>0) {state.failed=true; return retval;} NoViableAltException nvae = new NoViableAltException("", 47, 0, input); throw nvae; } switch (alt47) { case 1 : // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:780:4: act= ACTION { act=(GrammarAST)match(input,ACTION,FOLLOW_ACTION_in_element_action1134); if (state.failed) return retval; if ( state.backtracking==0 ) { retval.code = templates.getInstanceOf("execAction"); retval.code.add("action", generator.translateAction(currentRuleName,act)); } } break; case 2 : // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:785:4: act2= FORCED_ACTION { act2=(GrammarAST)match(input,FORCED_ACTION,FOLLOW_FORCED_ACTION_in_element_action1145); if (state.failed) return retval; if ( state.backtracking==0 ) { retval.code = templates.getInstanceOf("execForcedAction"); retval.code.add("action", generator.translateAction(currentRuleName,act2)); } } break; } } catch (RecognitionException re) { reportError(re); recover(input,re); } finally { // do for sure before leaving } return retval; } // $ANTLR end "element_action" // $ANTLR start "notElement" // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:792:1: notElement[GrammarAST n, GrammarAST label, GrammarAST astSuffix] returns [ST code=null] : (assign_c= CHAR_LITERAL |assign_s= STRING_LITERAL |assign_t= TOKEN_REF | ^(assign_st= BLOCK ( . )* ) ) ; public final ST notElement(GrammarAST n, GrammarAST label, GrammarAST astSuffix) throws RecognitionException { ST code = null; GrammarAST assign_c=null; GrammarAST assign_s=null; GrammarAST assign_t=null; GrammarAST assign_st=null; IntSet elements=null; String labelText = null; if ( label!=null ) { labelText = label.getText(); } try { // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:802:2: ( (assign_c= CHAR_LITERAL |assign_s= STRING_LITERAL |assign_t= TOKEN_REF | ^(assign_st= BLOCK ( . )* ) ) ) // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:802:4: (assign_c= CHAR_LITERAL |assign_s= STRING_LITERAL |assign_t= TOKEN_REF | ^(assign_st= BLOCK ( . )* ) ) { // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:802:4: (assign_c= CHAR_LITERAL |assign_s= STRING_LITERAL |assign_t= TOKEN_REF | ^(assign_st= BLOCK ( . )* ) ) int alt49=4; switch ( input.LA(1) ) { case CHAR_LITERAL: { alt49=1; } break; case STRING_LITERAL: { alt49=2; } break; case TOKEN_REF: { alt49=3; } break; case BLOCK: { alt49=4; } break; default: if (state.backtracking>0) {state.failed=true; return code;} NoViableAltException nvae = new NoViableAltException("", 49, 0, input); throw nvae; } switch (alt49) { case 1 : // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:802:6: assign_c= CHAR_LITERAL { assign_c=(GrammarAST)match(input,CHAR_LITERAL,FOLLOW_CHAR_LITERAL_in_notElement1174); if (state.failed) return code; if ( state.backtracking==0 ) { int ttype=0; if ( grammar.type==Grammar.LEXER ) { ttype = Grammar.getCharValueFromGrammarCharLiteral((assign_c!=null?assign_c.getText():null)); } else { ttype = grammar.getTokenType((assign_c!=null?assign_c.getText():null)); } elements = grammar.complement(ttype); } } break; case 2 : // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:815:5: assign_s= STRING_LITERAL { assign_s=(GrammarAST)match(input,STRING_LITERAL,FOLLOW_STRING_LITERAL_in_notElement1187); if (state.failed) return code; if ( state.backtracking==0 ) { int ttype=0; if ( grammar.type==Grammar.LEXER ) { // TODO: error! } else { ttype = grammar.getTokenType((assign_s!=null?assign_s.getText():null)); } elements = grammar.complement(ttype); } } break; case 3 : // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:828:5: assign_t= TOKEN_REF { assign_t=(GrammarAST)match(input,TOKEN_REF,FOLLOW_TOKEN_REF_in_notElement1200); if (state.failed) return code; if ( state.backtracking==0 ) { int ttype = grammar.getTokenType((assign_t!=null?assign_t.getText():null)); elements = grammar.complement(ttype); } } break; case 4 : // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:833:5: ^(assign_st= BLOCK ( . )* ) { assign_st=(GrammarAST)match(input,BLOCK,FOLLOW_BLOCK_in_notElement1214); if (state.failed) return code; if ( input.LA(1)==Token.DOWN ) { match(input, Token.DOWN, null); if (state.failed) return code; // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:833:23: ( . )* loop48: while (true) { int alt48=2; int LA48_0 = input.LA(1); if ( ((LA48_0 >= ACTION && LA48_0 <= XDIGIT)) ) { alt48=1; } else if ( (LA48_0==UP) ) { alt48=2; } switch (alt48) { case 1 : // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:833:23: . { matchAny(input); if (state.failed) return code; } break; default : break loop48; } } match(input, Token.UP, null); if (state.failed) return code; } if ( state.backtracking==0 ) { elements = assign_st.getSetValue(); elements = grammar.complement(elements); } } break; } if ( state.backtracking==0 ) { code = getTokenElementST("matchSet", "set", (GrammarAST)n.getChild(0), astSuffix, labelText); code.add("s",generator.genSetExpr(templates,elements,1,false)); int i = ((CommonToken)n.getToken()).getTokenIndex(); code.add("elementIndex", i); if ( grammar.type!=Grammar.LEXER ) { generator.generateLocalFOLLOW(n,"set",currentRuleName,i); } } } } catch (RecognitionException re) { reportError(re); recover(input,re); } finally { // do for sure before leaving } return code; } // $ANTLR end "notElement" public static class ebnf_return extends TreeRuleReturnScope { public ST code=null; }; // $ANTLR start "ebnf" // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:855:1: ebnf[GrammarAST label] returns [ST code=null] : (blk= block[\"block\", dfa, $label] | ^( OPTIONAL blk= block[\"optionalBlock\", dfa, $label] ) | ^( CLOSURE blk= block[\"closureBlock\", dfa, $label] ) | ^( POSITIVE_CLOSURE blk= block[\"positiveClosureBlock\", dfa, $label] ) ) ; public final CodeGenTreeWalker.ebnf_return ebnf(GrammarAST label) throws RecognitionException { CodeGenTreeWalker.ebnf_return retval = new CodeGenTreeWalker.ebnf_return(); retval.start = input.LT(1); TreeRuleReturnScope blk =null; org.antlr.analysis.DFA dfa=null; GrammarAST b = (GrammarAST)((GrammarAST)retval.start).getChild(0); GrammarAST eob = b.getLastChild(); // loops will use EOB DFA try { // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:862:2: ( (blk= block[\"block\", dfa, $label] | ^( OPTIONAL blk= block[\"optionalBlock\", dfa, $label] ) | ^( CLOSURE blk= block[\"closureBlock\", dfa, $label] ) | ^( POSITIVE_CLOSURE blk= block[\"positiveClosureBlock\", dfa, $label] ) ) ) // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:862:4: (blk= block[\"block\", dfa, $label] | ^( OPTIONAL blk= block[\"optionalBlock\", dfa, $label] ) | ^( CLOSURE blk= block[\"closureBlock\", dfa, $label] ) | ^( POSITIVE_CLOSURE blk= block[\"positiveClosureBlock\", dfa, $label] ) ) { // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:862:4: (blk= block[\"block\", dfa, $label] | ^( OPTIONAL blk= block[\"optionalBlock\", dfa, $label] ) | ^( CLOSURE blk= block[\"closureBlock\", dfa, $label] ) | ^( POSITIVE_CLOSURE blk= block[\"positiveClosureBlock\", dfa, $label] ) ) int alt50=4; switch ( input.LA(1) ) { case BLOCK: { alt50=1; } break; case OPTIONAL: { alt50=2; } break; case CLOSURE: { alt50=3; } break; case POSITIVE_CLOSURE: { alt50=4; } break; default: if (state.backtracking>0) {state.failed=true; return retval;} NoViableAltException nvae = new NoViableAltException("", 50, 0, input); throw nvae; } switch (alt50) { case 1 : // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:862:6: blk= block[\"block\", dfa, $label] { if ( state.backtracking==0 ) { dfa = ((GrammarAST)retval.start).getLookaheadDFA(); } pushFollow(FOLLOW_block_in_ebnf1261); blk=block("block", dfa, label); state._fsp--; if (state.failed) return retval; if ( state.backtracking==0 ) { retval.code = (blk!=null?((CodeGenTreeWalker.block_return)blk).code:null); } } break; case 2 : // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:865:5: ^( OPTIONAL blk= block[\"optionalBlock\", dfa, $label] ) { if ( state.backtracking==0 ) { dfa = ((GrammarAST)retval.start).getLookaheadDFA(); } match(input,OPTIONAL,FOLLOW_OPTIONAL_in_ebnf1280); if (state.failed) return retval; match(input, Token.DOWN, null); if (state.failed) return retval; pushFollow(FOLLOW_block_in_ebnf1284); blk=block("optionalBlock", dfa, label); state._fsp--; if (state.failed) return retval; match(input, Token.UP, null); if (state.failed) return retval; if ( state.backtracking==0 ) { retval.code = (blk!=null?((CodeGenTreeWalker.block_return)blk).code:null); } } break; case 3 : // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:868:5: ^( CLOSURE blk= block[\"closureBlock\", dfa, $label] ) { if ( state.backtracking==0 ) { dfa = eob.getLookaheadDFA(); } match(input,CLOSURE,FOLLOW_CLOSURE_in_ebnf1305); if (state.failed) return retval; match(input, Token.DOWN, null); if (state.failed) return retval; pushFollow(FOLLOW_block_in_ebnf1309); blk=block("closureBlock", dfa, label); state._fsp--; if (state.failed) return retval; match(input, Token.UP, null); if (state.failed) return retval; if ( state.backtracking==0 ) { retval.code = (blk!=null?((CodeGenTreeWalker.block_return)blk).code:null); } } break; case 4 : // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:871:5: ^( POSITIVE_CLOSURE blk= block[\"positiveClosureBlock\", dfa, $label] ) { if ( state.backtracking==0 ) { dfa = eob.getLookaheadDFA(); } match(input,POSITIVE_CLOSURE,FOLLOW_POSITIVE_CLOSURE_in_ebnf1330); if (state.failed) return retval; match(input, Token.DOWN, null); if (state.failed) return retval; pushFollow(FOLLOW_block_in_ebnf1334); blk=block("positiveClosureBlock", dfa, label); state._fsp--; if (state.failed) return retval; match(input, Token.UP, null); if (state.failed) return retval; if ( state.backtracking==0 ) { retval.code = (blk!=null?((CodeGenTreeWalker.block_return)blk).code:null); } } break; } if ( state.backtracking==0 ) { String description = grammar.grammarTreeToString(((GrammarAST)retval.start), false); description = generator.target.getTargetStringLiteralFromString(description); retval.code.add("description", description); } } } catch (RecognitionException re) { reportError(re); recover(input,re); } finally { // do for sure before leaving } return retval; } // $ANTLR end "ebnf" public static class tree__return extends TreeRuleReturnScope { public ST code; }; // $ANTLR start "tree_" // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:882:1: tree_ returns [ST code] : ^( TREE_BEGIN el= element[null,rootSuffix] ( ( element_action )=>act= element_action )* (el= element[null,null] )* ) ; public final CodeGenTreeWalker.tree__return tree_() throws RecognitionException { CodeGenTreeWalker.tree__return retval = new CodeGenTreeWalker.tree__return(); retval.start = input.LT(1); TreeRuleReturnScope el =null; TreeRuleReturnScope act =null; rewriteTreeNestingLevel++; GrammarAST rootSuffix = null; if ( state.backtracking == 0 ) { retval.code = templates.getInstanceOf("tree"); NFAState afterDOWN = (NFAState)((GrammarAST)retval.start).NFATreeDownState.transition(0).target; LookaheadSet s = grammar.LOOK(afterDOWN); if ( s.member(Label.UP) ) { // nullable child list if we can see the UP as the next token // we need an "if ( input.LA(1)==Token.DOWN )" gate around // the child list. retval.code.add("nullableChildList", "true"); } retval.code.add("enclosingTreeLevel", rewriteTreeNestingLevel-1); retval.code.add("treeLevel", rewriteTreeNestingLevel); Rule r = grammar.getRule(currentRuleName); if ( grammar.buildAST() && !r.hasRewrite(outerAltNum) ) { rootSuffix = new GrammarAST(ROOT,"ROOT"); } } try { // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:906:2: ( ^( TREE_BEGIN el= element[null,rootSuffix] ( ( element_action )=>act= element_action )* (el= element[null,null] )* ) ) // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:906:4: ^( TREE_BEGIN el= element[null,rootSuffix] ( ( element_action )=>act= element_action )* (el= element[null,null] )* ) { match(input,TREE_BEGIN,FOLLOW_TREE_BEGIN_in_tree_1372); if (state.failed) return retval; match(input, Token.DOWN, null); if (state.failed) return retval; pushFollow(FOLLOW_element_in_tree_1379); el=element(null, rootSuffix); state._fsp--; if (state.failed) return retval; if ( state.backtracking==0 ) { retval.code.addAggr("root.{el,line,pos}", (el!=null?((CodeGenTreeWalker.element_return)el).code:null), (el!=null?((GrammarAST)el.start):null).getLine(), (el!=null?((GrammarAST)el.start):null).getCharPositionInLine() + 1 ); } // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:918:4: ( ( element_action )=>act= element_action )* loop51: while (true) { int alt51=2; int LA51_0 = input.LA(1); if ( (LA51_0==ACTION) ) { int LA51_2 = input.LA(2); if ( (synpred2_CodeGenTreeWalker()) ) { alt51=1; } } else if ( (LA51_0==FORCED_ACTION) ) { int LA51_3 = input.LA(2); if ( (synpred2_CodeGenTreeWalker()) ) { alt51=1; } } switch (alt51) { case 1 : // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:918:6: ( element_action )=>act= element_action { pushFollow(FOLLOW_element_action_in_tree_1416); act=element_action(); state._fsp--; if (state.failed) return retval; if ( state.backtracking==0 ) { retval.code.addAggr("actionsAfterRoot.{el,line,pos}", (act!=null?((CodeGenTreeWalker.element_action_return)act).code:null), (act!=null?((GrammarAST)act.start):null).getLine(), (act!=null?((GrammarAST)act.start):null).getCharPositionInLine() + 1 ); } } break; default : break loop51; } } // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:928:4: (el= element[null,null] )* loop52: while (true) { int alt52=2; int LA52_0 = input.LA(1); if ( (LA52_0==ACTION||(LA52_0 >= ASSIGN && LA52_0 <= BLOCK)||(LA52_0 >= CHAR_LITERAL && LA52_0 <= CHAR_RANGE)||LA52_0==CLOSURE||LA52_0==DOT||LA52_0==EPSILON||LA52_0==FORCED_ACTION||LA52_0==GATED_SEMPRED||LA52_0==NOT||LA52_0==OPTIONAL||(LA52_0 >= PLUS_ASSIGN && LA52_0 <= POSITIVE_CLOSURE)||LA52_0==ROOT||LA52_0==RULE_REF||LA52_0==SEMPRED||(LA52_0 >= STRING_LITERAL && LA52_0 <= SYN_SEMPRED)||LA52_0==TOKEN_REF||LA52_0==TREE_BEGIN||LA52_0==WILDCARD) ) { alt52=1; } switch (alt52) { case 1 : // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:928:7: el= element[null,null] { pushFollow(FOLLOW_element_in_tree_1438); el=element(null, null); state._fsp--; if (state.failed) return retval; if ( state.backtracking==0 ) { retval.code.addAggr("children.{el,line,pos}", (el!=null?((CodeGenTreeWalker.element_return)el).code:null), (el!=null?((GrammarAST)el.start):null).getLine(), (el!=null?((GrammarAST)el.start):null).getCharPositionInLine() + 1 ); } } break; default : break loop52; } } match(input, Token.UP, null); if (state.failed) return retval; } } catch (RecognitionException re) { reportError(re); recover(input,re); } finally { // do for sure before leaving rewriteTreeNestingLevel--; } return retval; } // $ANTLR end "tree_" public static class atom_return extends TreeRuleReturnScope { public ST code=null; }; // $ANTLR start "atom" // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:941:1: atom[GrammarAST scope, GrammarAST label, GrammarAST astSuffix] returns [ST code=null] : ( ^(r= RULE_REF (rarg= ARG_ACTION )? ) | ^(t= TOKEN_REF (targ= ARG_ACTION )? ) |c= CHAR_LITERAL |s= STRING_LITERAL |w= WILDCARD | ^( DOT ID a= atom[$ID, label, astSuffix] ) | set[label,astSuffix] ); public final CodeGenTreeWalker.atom_return atom(GrammarAST scope, GrammarAST label, GrammarAST astSuffix) throws RecognitionException { CodeGenTreeWalker.atom_return retval = new CodeGenTreeWalker.atom_return(); retval.start = input.LT(1); GrammarAST r=null; GrammarAST rarg=null; GrammarAST t=null; GrammarAST targ=null; GrammarAST c=null; GrammarAST s=null; GrammarAST w=null; GrammarAST ID11=null; TreeRuleReturnScope a =null; ST set12 =null; String labelText=null; if ( state.backtracking == 0 ) { if ( label!=null ) { labelText = label.getText(); } if ( grammar.type!=Grammar.LEXER && (((GrammarAST)retval.start).getType()==RULE_REF||((GrammarAST)retval.start).getType()==TOKEN_REF|| ((GrammarAST)retval.start).getType()==CHAR_LITERAL||((GrammarAST)retval.start).getType()==STRING_LITERAL) ) { Rule encRule = grammar.getRule(((GrammarAST)retval.start).enclosingRuleName); if ( encRule!=null && encRule.hasRewrite(outerAltNum) && astSuffix!=null ) { ErrorManager.grammarError(ErrorManager.MSG_AST_OP_IN_ALT_WITH_REWRITE, grammar, ((GrammarAST)retval.start).getToken(), ((GrammarAST)retval.start).enclosingRuleName, outerAltNum); astSuffix = null; } } } try { // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:969:2: ( ^(r= RULE_REF (rarg= ARG_ACTION )? ) | ^(t= TOKEN_REF (targ= ARG_ACTION )? ) |c= CHAR_LITERAL |s= STRING_LITERAL |w= WILDCARD | ^( DOT ID a= atom[$ID, label, astSuffix] ) | set[label,astSuffix] ) int alt55=7; switch ( input.LA(1) ) { case RULE_REF: { alt55=1; } break; case TOKEN_REF: { alt55=2; } break; case CHAR_LITERAL: { alt55=3; } break; case STRING_LITERAL: { alt55=4; } break; case WILDCARD: { alt55=5; } break; case DOT: { alt55=6; } break; case BLOCK: { alt55=7; } break; default: if (state.backtracking>0) {state.failed=true; return retval;} NoViableAltException nvae = new NoViableAltException("", 55, 0, input); throw nvae; } switch (alt55) { case 1 : // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:969:6: ^(r= RULE_REF (rarg= ARG_ACTION )? ) { r=(GrammarAST)match(input,RULE_REF,FOLLOW_RULE_REF_in_atom1488); if (state.failed) return retval; if ( input.LA(1)==Token.DOWN ) { match(input, Token.DOWN, null); if (state.failed) return retval; // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:969:20: (rarg= ARG_ACTION )? int alt53=2; int LA53_0 = input.LA(1); if ( (LA53_0==ARG_ACTION) ) { alt53=1; } switch (alt53) { case 1 : // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:969:21: rarg= ARG_ACTION { rarg=(GrammarAST)match(input,ARG_ACTION,FOLLOW_ARG_ACTION_in_atom1493); if (state.failed) return retval; } break; } match(input, Token.UP, null); if (state.failed) return retval; } if ( state.backtracking==0 ) { grammar.checkRuleReference(scope, r, rarg, currentRuleName); String scopeName = null; if ( scope!=null ) { scopeName = scope.getText(); } Rule rdef = grammar.getRule(scopeName, (r!=null?r.getText():null)); // don't insert label=r() if label.attr not used, no ret value, ... if ( !rdef.getHasReturnValue() ) { labelText = null; } retval.code = getRuleElementST("ruleRef", (r!=null?r.getText():null), r, astSuffix, labelText); retval.code.add("rule", rdef); if ( scope!=null ) { // scoped rule ref Grammar scopeG = grammar.composite.getGrammar(scope.getText()); retval.code.add("scope", scopeG); } else if ( rdef.grammar != this.grammar ) { // nonlocal // if rule definition is not in this grammar, it's nonlocal List<Grammar> rdefDelegates = rdef.grammar.getDelegates(); if ( rdefDelegates.contains(this.grammar) ) { retval.code.add("scope", rdef.grammar); } else { // defining grammar is not a delegate, scope all the // back to root, which has delegate methods for all // rules. Don't use scope if we are root. if ( this.grammar != rdef.grammar.composite.delegateGrammarTreeRoot.grammar ) { retval.code.add("scope", rdef.grammar.composite.delegateGrammarTreeRoot.grammar); } } } if ( rarg!=null ) { List<? extends Object> args = generator.translateAction(currentRuleName,rarg); retval.code.add("args", args); } int i = ((CommonToken)r.getToken()).getTokenIndex(); retval.code.add("elementIndex", i); generator.generateLocalFOLLOW(r,(r!=null?r.getText():null),currentRuleName,i); r.code = retval.code; } } break; case 2 : // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:1014:4: ^(t= TOKEN_REF (targ= ARG_ACTION )? ) { t=(GrammarAST)match(input,TOKEN_REF,FOLLOW_TOKEN_REF_in_atom1511); if (state.failed) return retval; if ( input.LA(1)==Token.DOWN ) { match(input, Token.DOWN, null); if (state.failed) return retval; // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:1014:19: (targ= ARG_ACTION )? int alt54=2; int LA54_0 = input.LA(1); if ( (LA54_0==ARG_ACTION) ) { alt54=1; } switch (alt54) { case 1 : // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:1014:20: targ= ARG_ACTION { targ=(GrammarAST)match(input,ARG_ACTION,FOLLOW_ARG_ACTION_in_atom1516); if (state.failed) return retval; } break; } match(input, Token.UP, null); if (state.failed) return retval; } if ( state.backtracking==0 ) { if ( currentAltHasASTRewrite && t.terminalOptions!=null && t.terminalOptions.get(Grammar.defaultTokenOption)!=null ) { ErrorManager.grammarError(ErrorManager.MSG_HETERO_ILLEGAL_IN_REWRITE_ALT, grammar, t.getToken(), (t!=null?t.getText():null)); } grammar.checkRuleReference(scope, t, targ, currentRuleName); if ( grammar.type==Grammar.LEXER ) { if ( grammar.getTokenType((t!=null?t.getText():null))==Label.EOF ) { retval.code = templates.getInstanceOf("lexerMatchEOF"); } else { retval.code = templates.getInstanceOf("lexerRuleRef"); if ( isListLabel(labelText) ) { retval.code = templates.getInstanceOf("lexerRuleRefAndListLabel"); } String scopeName = null; if ( scope!=null ) { scopeName = scope.getText(); } Rule rdef2 = grammar.getRule(scopeName, (t!=null?t.getText():null)); retval.code.add("rule", rdef2); if ( scope!=null ) { // scoped rule ref Grammar scopeG = grammar.composite.getGrammar(scope.getText()); retval.code.add("scope", scopeG); } else if ( rdef2.grammar != this.grammar ) { // nonlocal // if rule definition is not in this grammar, it's nonlocal retval.code.add("scope", rdef2.grammar); } if ( targ!=null ) { List<? extends Object> args = generator.translateAction(currentRuleName,targ); retval.code.add("args", args); } } int i = ((CommonToken)t.getToken()).getTokenIndex(); retval.code.add("elementIndex", i); if ( label!=null ) retval.code.add("label", labelText); } else { retval.code = getTokenElementST("tokenRef", (t!=null?t.getText():null), t, astSuffix, labelText); String tokenLabel = generator.getTokenTypeAsTargetLabel(grammar.getTokenType(t.getText())); retval.code.add("token",tokenLabel); if ( !currentAltHasASTRewrite && t.terminalOptions!=null ) { retval.code.add("terminalOptions", t.terminalOptions); } int i = ((CommonToken)t.getToken()).getTokenIndex(); retval.code.add("elementIndex", i); generator.generateLocalFOLLOW(t,tokenLabel,currentRuleName,i); } t.code = retval.code; } } break; case 3 : // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:1083:4: c= CHAR_LITERAL { c=(GrammarAST)match(input,CHAR_LITERAL,FOLLOW_CHAR_LITERAL_in_atom1532); if (state.failed) return retval; if ( state.backtracking==0 ) { if ( grammar.type==Grammar.LEXER ) { retval.code = templates.getInstanceOf("charRef"); retval.code.add("char", generator.target.getTargetCharLiteralFromANTLRCharLiteral(generator,(c!=null?c.getText():null))); if ( label!=null ) { retval.code.add("label", labelText); } } else { // else it's a token type reference retval.code = getTokenElementST("tokenRef", "char_literal", c, astSuffix, labelText); String tokenLabel = generator.getTokenTypeAsTargetLabel(grammar.getTokenType((c!=null?c.getText():null))); retval.code.add("token",tokenLabel); if ( c.terminalOptions!=null ) { retval.code.add("terminalOptions",c.terminalOptions); } int i = ((CommonToken)c.getToken()).getTokenIndex(); retval.code.add("elementIndex", i); generator.generateLocalFOLLOW(c,tokenLabel,currentRuleName,i); } } } break; case 4 : // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:1108:4: s= STRING_LITERAL { s=(GrammarAST)match(input,STRING_LITERAL,FOLLOW_STRING_LITERAL_in_atom1544); if (state.failed) return retval; if ( state.backtracking==0 ) { int i = ((CommonToken)s.getToken()).getTokenIndex(); if ( grammar.type==Grammar.LEXER ) { retval.code = templates.getInstanceOf("lexerStringRef"); retval.code.add("string", generator.target.getTargetStringLiteralFromANTLRStringLiteral(generator,(s!=null?s.getText():null))); retval.code.add("elementIndex", i); if ( label!=null ) { retval.code.add("label", labelText); } } else { // else it's a token type reference retval.code = getTokenElementST("tokenRef", "string_literal", s, astSuffix, labelText); String tokenLabel = generator.getTokenTypeAsTargetLabel(grammar.getTokenType((s!=null?s.getText():null))); retval.code.add("token",tokenLabel); if ( s.terminalOptions!=null ) { retval.code.add("terminalOptions",s.terminalOptions); } retval.code.add("elementIndex", i); generator.generateLocalFOLLOW(s,tokenLabel,currentRuleName,i); } } } break; case 5 : // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:1138:4: w= WILDCARD { w=(GrammarAST)match(input,WILDCARD,FOLLOW_WILDCARD_in_atom1556); if (state.failed) return retval; if ( state.backtracking==0 ) { retval.code = getWildcardST(w,astSuffix,labelText); retval.code.add("elementIndex", ((CommonToken)w.getToken()).getTokenIndex()); } } break; case 6 : // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:1144:4: ^( DOT ID a= atom[$ID, label, astSuffix] ) { match(input,DOT,FOLLOW_DOT_in_atom1567); if (state.failed) return retval; match(input, Token.DOWN, null); if (state.failed) return retval; ID11=(GrammarAST)match(input,ID,FOLLOW_ID_in_atom1569); if (state.failed) return retval; pushFollow(FOLLOW_atom_in_atom1573); a=atom(ID11, label, astSuffix); state._fsp--; if (state.failed) return retval; match(input, Token.UP, null); if (state.failed) return retval; if ( state.backtracking==0 ) { retval.code = (a!=null?((CodeGenTreeWalker.atom_return)a).code:null); } } break; case 7 : // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:1147:4: set[label,astSuffix] { pushFollow(FOLLOW_set_in_atom1586); set12=set(label, astSuffix); state._fsp--; if (state.failed) return retval; if ( state.backtracking==0 ) { retval.code = set12; } } break; } } catch (RecognitionException re) { reportError(re); recover(input,re); } finally { // do for sure before leaving } return retval; } // $ANTLR end "atom" // $ANTLR start "ast_suffix" // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:1151:1: ast_suffix : ( ROOT | BANG ); public final void ast_suffix() throws RecognitionException { try { // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:1152:2: ( ROOT | BANG ) // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g: { if ( input.LA(1)==BANG||input.LA(1)==ROOT ) { input.consume(); state.errorRecovery=false; state.failed=false; } else { if (state.backtracking>0) {state.failed=true; return;} MismatchedSetException mse = new MismatchedSetException(null,input); throw mse; } } } catch (RecognitionException re) { reportError(re); recover(input,re); } finally { // do for sure before leaving } } // $ANTLR end "ast_suffix" // $ANTLR start "set" // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:1156:1: set[GrammarAST label, GrammarAST astSuffix] returns [ST code=null] : ^(s= BLOCK ( . )* ) ; public final ST set(GrammarAST label, GrammarAST astSuffix) throws RecognitionException { ST code = null; GrammarAST s=null; String labelText=null; if ( label!=null ) { labelText = label.getText(); } try { // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:1165:2: ( ^(s= BLOCK ( . )* ) ) // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:1165:4: ^(s= BLOCK ( . )* ) { s=(GrammarAST)match(input,BLOCK,FOLLOW_BLOCK_in_set1631); if (state.failed) return code; if ( input.LA(1)==Token.DOWN ) { match(input, Token.DOWN, null); if (state.failed) return code; // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:1165:14: ( . )* loop56: while (true) { int alt56=2; int LA56_0 = input.LA(1); if ( ((LA56_0 >= ACTION && LA56_0 <= XDIGIT)) ) { alt56=1; } else if ( (LA56_0==UP) ) { alt56=2; } switch (alt56) { case 1 : // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:1165:14: . { matchAny(input); if (state.failed) return code; } break; default : break loop56; } } match(input, Token.UP, null); if (state.failed) return code; } if ( state.backtracking==0 ) { code = getTokenElementST("matchSet", "set", s, astSuffix, labelText); int i = ((CommonToken)s.getToken()).getTokenIndex(); code.add("elementIndex", i); if ( grammar.type!=Grammar.LEXER ) { generator.generateLocalFOLLOW(s,"set",currentRuleName,i); } code.add("s", generator.genSetExpr(templates,s.getSetValue(),1,false)); } } } catch (RecognitionException re) { reportError(re); recover(input,re); } finally { // do for sure before leaving } return code; } // $ANTLR end "set" // $ANTLR start "setElement" // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:1178:1: setElement : ( CHAR_LITERAL | TOKEN_REF | STRING_LITERAL | ^( CHAR_RANGE CHAR_LITERAL CHAR_LITERAL ) ); public final void setElement() throws RecognitionException { try { // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:1179:2: ( CHAR_LITERAL | TOKEN_REF | STRING_LITERAL | ^( CHAR_RANGE CHAR_LITERAL CHAR_LITERAL ) ) int alt57=4; switch ( input.LA(1) ) { case CHAR_LITERAL: { alt57=1; } break; case TOKEN_REF: { alt57=2; } break; case STRING_LITERAL: { alt57=3; } break; case CHAR_RANGE: { alt57=4; } break; default: if (state.backtracking>0) {state.failed=true; return;} NoViableAltException nvae = new NoViableAltException("", 57, 0, input); throw nvae; } switch (alt57) { case 1 : // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:1179:4: CHAR_LITERAL { match(input,CHAR_LITERAL,FOLLOW_CHAR_LITERAL_in_setElement1651); if (state.failed) return; } break; case 2 : // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:1180:4: TOKEN_REF { match(input,TOKEN_REF,FOLLOW_TOKEN_REF_in_setElement1656); if (state.failed) return; } break; case 3 : // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:1181:4: STRING_LITERAL { match(input,STRING_LITERAL,FOLLOW_STRING_LITERAL_in_setElement1661); if (state.failed) return; } break; case 4 : // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:1182:4: ^( CHAR_RANGE CHAR_LITERAL CHAR_LITERAL ) { match(input,CHAR_RANGE,FOLLOW_CHAR_RANGE_in_setElement1667); if (state.failed) return; match(input, Token.DOWN, null); if (state.failed) return; match(input,CHAR_LITERAL,FOLLOW_CHAR_LITERAL_in_setElement1669); if (state.failed) return; match(input,CHAR_LITERAL,FOLLOW_CHAR_LITERAL_in_setElement1671); if (state.failed) return; match(input, Token.UP, null); if (state.failed) return; } break; } } catch (RecognitionException re) { reportError(re); recover(input,re); } finally { // do for sure before leaving } } // $ANTLR end "setElement" public static class rewrite_return extends TreeRuleReturnScope { public ST code=null; }; // $ANTLR start "rewrite" // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:1187:1: rewrite returns [ST code=null] : ( ^( REWRITES ( ^(r= REWRITE (pred= SEMPRED )? alt= rewrite_alternative ) )* ) |); public final CodeGenTreeWalker.rewrite_return rewrite() throws RecognitionException { CodeGenTreeWalker.rewrite_return retval = new CodeGenTreeWalker.rewrite_return(); retval.start = input.LT(1); GrammarAST r=null; GrammarAST pred=null; ST alt =null; if ( state.backtracking == 0 ) { if ( ((GrammarAST)retval.start).getType()==REWRITES ) { if ( generator.grammar.buildTemplate() ) { retval.code = templates.getInstanceOf("rewriteTemplate"); } else { retval.code = templates.getInstanceOf("rewriteCode"); retval.code.add("treeLevel", OUTER_REWRITE_NESTING_LEVEL); retval.code.add("rewriteBlockLevel", OUTER_REWRITE_NESTING_LEVEL); retval.code.add("referencedElementsDeep", getTokenTypesAsTargetLabels(((GrammarAST)retval.start).rewriteRefsDeep)); Set<String> tokenLabels = grammar.getLabels(((GrammarAST)retval.start).rewriteRefsDeep, Grammar.TOKEN_LABEL); Set<String> tokenListLabels = grammar.getLabels(((GrammarAST)retval.start).rewriteRefsDeep, Grammar.TOKEN_LIST_LABEL); Set<String> ruleLabels = grammar.getLabels(((GrammarAST)retval.start).rewriteRefsDeep, Grammar.RULE_LABEL); Set<String> ruleListLabels = grammar.getLabels(((GrammarAST)retval.start).rewriteRefsDeep, Grammar.RULE_LIST_LABEL); Set<String> wildcardLabels = grammar.getLabels(((GrammarAST)retval.start).rewriteRefsDeep, Grammar.WILDCARD_TREE_LABEL); Set<String> wildcardListLabels = grammar.getLabels(((GrammarAST)retval.start).rewriteRefsDeep, Grammar.WILDCARD_TREE_LIST_LABEL); // just in case they ref r for "previous value", make a stream // from retval.tree ST retvalST = templates.getInstanceOf("prevRuleRootRef"); ruleLabels.add(retvalST.render()); retval.code.add("referencedTokenLabels", tokenLabels); retval.code.add("referencedTokenListLabels", tokenListLabels); retval.code.add("referencedRuleLabels", ruleLabels); retval.code.add("referencedRuleListLabels", ruleListLabels); retval.code.add("referencedWildcardLabels", wildcardLabels); retval.code.add("referencedWildcardListLabels", wildcardListLabels); } } else { retval.code = templates.getInstanceOf("noRewrite"); retval.code.add("treeLevel", OUTER_REWRITE_NESTING_LEVEL); retval.code.add("rewriteBlockLevel", OUTER_REWRITE_NESTING_LEVEL); } } try { // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:1237:2: ( ^( REWRITES ( ^(r= REWRITE (pred= SEMPRED )? alt= rewrite_alternative ) )* ) |) int alt60=2; int LA60_0 = input.LA(1); if ( (LA60_0==REWRITES) ) { alt60=1; } else if ( (LA60_0==ALT||LA60_0==EOB) ) { alt60=2; } else { if (state.backtracking>0) {state.failed=true; return retval;} NoViableAltException nvae = new NoViableAltException("", 60, 0, input); throw nvae; } switch (alt60) { case 1 : // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:1237:4: ^( REWRITES ( ^(r= REWRITE (pred= SEMPRED )? alt= rewrite_alternative ) )* ) { match(input,REWRITES,FOLLOW_REWRITES_in_rewrite1696); if (state.failed) return retval; if ( input.LA(1)==Token.DOWN ) { match(input, Token.DOWN, null); if (state.failed) return retval; // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:1238:4: ( ^(r= REWRITE (pred= SEMPRED )? alt= rewrite_alternative ) )* loop59: while (true) { int alt59=2; int LA59_0 = input.LA(1); if ( (LA59_0==REWRITE) ) { alt59=1; } switch (alt59) { case 1 : // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:1239:5: ^(r= REWRITE (pred= SEMPRED )? alt= rewrite_alternative ) { if ( state.backtracking==0 ) {rewriteRuleRefs = new HashSet<Object>();} r=(GrammarAST)match(input,REWRITE,FOLLOW_REWRITE_in_rewrite1717); if (state.failed) return retval; match(input, Token.DOWN, null); if (state.failed) return retval; // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:1240:18: (pred= SEMPRED )? int alt58=2; int LA58_0 = input.LA(1); if ( (LA58_0==SEMPRED) ) { alt58=1; } switch (alt58) { case 1 : // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:1240:19: pred= SEMPRED { pred=(GrammarAST)match(input,SEMPRED,FOLLOW_SEMPRED_in_rewrite1722); if (state.failed) return retval; } break; } pushFollow(FOLLOW_rewrite_alternative_in_rewrite1728); alt=rewrite_alternative(); state._fsp--; if (state.failed) return retval; match(input, Token.UP, null); if (state.failed) return retval; if ( state.backtracking==0 ) { rewriteBlockNestingLevel = OUTER_REWRITE_NESTING_LEVEL; List<? extends Object> predChunks = null; if ( pred!=null ) { //predText = #pred.getText(); predChunks = generator.translateAction(currentRuleName,pred); } String description = grammar.grammarTreeToString(r,false); description = generator.target.getTargetStringLiteralFromString(description); retval.code.addAggr("alts.{pred,alt,description}", predChunks, alt, description); pred=null; } } break; default : break loop59; } } match(input, Token.UP, null); if (state.failed) return retval; } } break; case 2 : // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:1261:2: { } break; } } catch (RecognitionException re) { reportError(re); recover(input,re); } finally { // do for sure before leaving } return retval; } // $ANTLR end "rewrite" // $ANTLR start "rewrite_block" // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:1263:1: rewrite_block[String blockTemplateName] returns [ST code=null] : ^( BLOCK alt= rewrite_alternative EOB ) ; public final ST rewrite_block(String blockTemplateName) throws RecognitionException { ST code = null; GrammarAST BLOCK13=null; ST alt =null; rewriteBlockNestingLevel++; ST save_currentBlockST = currentBlockST; if ( state.backtracking == 0 ) { code = templates.getInstanceOf(blockTemplateName); currentBlockST = code; code.add("rewriteBlockLevel", rewriteBlockNestingLevel); } try { // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:1275:2: ( ^( BLOCK alt= rewrite_alternative EOB ) ) // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:1275:4: ^( BLOCK alt= rewrite_alternative EOB ) { BLOCK13=(GrammarAST)match(input,BLOCK,FOLLOW_BLOCK_in_rewrite_block1771); if (state.failed) return code; if ( state.backtracking==0 ) { currentBlockST.add("referencedElementsDeep", getTokenTypesAsTargetLabels(BLOCK13.rewriteRefsDeep)); currentBlockST.add("referencedElements", getTokenTypesAsTargetLabels(BLOCK13.rewriteRefsShallow)); } match(input, Token.DOWN, null); if (state.failed) return code; pushFollow(FOLLOW_rewrite_alternative_in_rewrite_block1783); alt=rewrite_alternative(); state._fsp--; if (state.failed) return code; match(input,EOB,FOLLOW_EOB_in_rewrite_block1788); if (state.failed) return code; match(input, Token.UP, null); if (state.failed) return code; if ( state.backtracking==0 ) { code.add("alt", alt); } } } catch (RecognitionException re) { reportError(re); recover(input,re); } finally { // do for sure before leaving rewriteBlockNestingLevel--; currentBlockST = save_currentBlockST; } return code; } // $ANTLR end "rewrite_block" // $ANTLR start "rewrite_alternative" // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:1291:1: rewrite_alternative returns [ST code=null] : ({...}? ^(a= ALT ( (el= rewrite_element )+ | EPSILON ) EOA ) |{...}? rewrite_template | ETC ); public final ST rewrite_alternative() throws RecognitionException { ST code = null; GrammarAST a=null; TreeRuleReturnScope el =null; ST rewrite_template14 =null; try { // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:1292:2: ({...}? ^(a= ALT ( (el= rewrite_element )+ | EPSILON ) EOA ) |{...}? rewrite_template | ETC ) int alt63=3; switch ( input.LA(1) ) { case ALT: { int LA63_1 = input.LA(2); if ( (LA63_1==DOWN) ) { int LA63_4 = input.LA(3); if ( (LA63_4==EPSILON) ) { int LA63_5 = input.LA(4); if ( (LA63_5==EOA) ) { int LA63_7 = input.LA(5); if ( (LA63_7==UP) ) { int LA63_8 = input.LA(6); if ( ((generator.grammar.buildAST())) ) { alt63=1; } else if ( ((generator.grammar.buildTemplate())) ) { alt63=2; } else { if (state.backtracking>0) {state.failed=true; return code;} int nvaeMark = input.mark(); try { for (int nvaeConsume = 0; nvaeConsume < 6 - 1; nvaeConsume++) { input.consume(); } NoViableAltException nvae = new NoViableAltException("", 63, 8, input); throw nvae; } finally { input.rewind(nvaeMark); } } } else { if (state.backtracking>0) {state.failed=true; return code;} int nvaeMark = input.mark(); try { for (int nvaeConsume = 0; nvaeConsume < 5 - 1; nvaeConsume++) { input.consume(); } NoViableAltException nvae = new NoViableAltException("", 63, 7, input); throw nvae; } finally { input.rewind(nvaeMark); } } } else { if (state.backtracking>0) {state.failed=true; return code;} int nvaeMark = input.mark(); try { for (int nvaeConsume = 0; nvaeConsume < 4 - 1; nvaeConsume++) { input.consume(); } NoViableAltException nvae = new NoViableAltException("", 63, 5, input); throw nvae; } finally { input.rewind(nvaeMark); } } } else if ( (LA63_4==ACTION||LA63_4==CHAR_LITERAL||LA63_4==CLOSURE||LA63_4==LABEL||LA63_4==OPTIONAL||LA63_4==POSITIVE_CLOSURE||LA63_4==RULE_REF||LA63_4==STRING_LITERAL||LA63_4==TOKEN_REF||LA63_4==TREE_BEGIN) ) { alt63=1; } else { if (state.backtracking>0) {state.failed=true; return code;} int nvaeMark = input.mark(); try { for (int nvaeConsume = 0; nvaeConsume < 3 - 1; nvaeConsume++) { input.consume(); } NoViableAltException nvae = new NoViableAltException("", 63, 4, input); throw nvae; } finally { input.rewind(nvaeMark); } } } else { if (state.backtracking>0) {state.failed=true; return code;} int nvaeMark = input.mark(); try { input.consume(); NoViableAltException nvae = new NoViableAltException("", 63, 1, input); throw nvae; } finally { input.rewind(nvaeMark); } } } break; case ACTION: case TEMPLATE: { alt63=2; } break; case ETC: { alt63=3; } break; default: if (state.backtracking>0) {state.failed=true; return code;} NoViableAltException nvae = new NoViableAltException("", 63, 0, input); throw nvae; } switch (alt63) { case 1 : // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:1292:4: {...}? ^(a= ALT ( (el= rewrite_element )+ | EPSILON ) EOA ) { if ( !((generator.grammar.buildAST())) ) { if (state.backtracking>0) {state.failed=true; return code;} throw new FailedPredicateException(input, "rewrite_alternative", "generator.grammar.buildAST()"); } a=(GrammarAST)match(input,ALT,FOLLOW_ALT_in_rewrite_alternative1823); if (state.failed) return code; if ( state.backtracking==0 ) {code =templates.getInstanceOf("rewriteElementList");} match(input, Token.DOWN, null); if (state.failed) return code; // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:1294:4: ( (el= rewrite_element )+ | EPSILON ) int alt62=2; int LA62_0 = input.LA(1); if ( (LA62_0==ACTION||LA62_0==CHAR_LITERAL||LA62_0==CLOSURE||LA62_0==LABEL||LA62_0==OPTIONAL||LA62_0==POSITIVE_CLOSURE||LA62_0==RULE_REF||LA62_0==STRING_LITERAL||LA62_0==TOKEN_REF||LA62_0==TREE_BEGIN) ) { alt62=1; } else if ( (LA62_0==EPSILON) ) { alt62=2; } else { if (state.backtracking>0) {state.failed=true; return code;} NoViableAltException nvae = new NoViableAltException("", 62, 0, input); throw nvae; } switch (alt62) { case 1 : // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:1294:6: (el= rewrite_element )+ { // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:1294:6: (el= rewrite_element )+ int cnt61=0; loop61: while (true) { int alt61=2; int LA61_0 = input.LA(1); if ( (LA61_0==ACTION||LA61_0==CHAR_LITERAL||LA61_0==CLOSURE||LA61_0==LABEL||LA61_0==OPTIONAL||LA61_0==POSITIVE_CLOSURE||LA61_0==RULE_REF||LA61_0==STRING_LITERAL||LA61_0==TOKEN_REF||LA61_0==TREE_BEGIN) ) { alt61=1; } switch (alt61) { case 1 : // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:1295:6: el= rewrite_element { pushFollow(FOLLOW_rewrite_element_in_rewrite_alternative1841); el=rewrite_element(); state._fsp--; if (state.failed) return code; if ( state.backtracking==0 ) {code.addAggr("elements.{el,line,pos}", (el!=null?((CodeGenTreeWalker.rewrite_element_return)el).code:null), (el!=null?((GrammarAST)el.start):null).getLine(), (el!=null?((GrammarAST)el.start):null).getCharPositionInLine() + 1 ); } } break; default : if ( cnt61 >= 1 ) break loop61; if (state.backtracking>0) {state.failed=true; return code;} EarlyExitException eee = new EarlyExitException(61, input); throw eee; } cnt61++; } } break; case 2 : // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:1303:6: EPSILON { match(input,EPSILON,FOLLOW_EPSILON_in_rewrite_alternative1862); if (state.failed) return code; if ( state.backtracking==0 ) {code.addAggr("elements.{el,line,pos}", templates.getInstanceOf("rewriteEmptyAlt"), a.getLine(), a.getCharPositionInLine() + 1 ); } } break; } match(input,EOA,FOLLOW_EOA_in_rewrite_alternative1878); if (state.failed) return code; match(input, Token.UP, null); if (state.failed) return code; } break; case 2 : // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:1314:4: {...}? rewrite_template { if ( !((generator.grammar.buildTemplate())) ) { if (state.backtracking>0) {state.failed=true; return code;} throw new FailedPredicateException(input, "rewrite_alternative", "generator.grammar.buildTemplate()"); } pushFollow(FOLLOW_rewrite_template_in_rewrite_alternative1891); rewrite_template14=rewrite_template(); state._fsp--; if (state.failed) return code; if ( state.backtracking==0 ) { code = rewrite_template14; } } break; case 3 : // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:1318:3: ETC { match(input,ETC,FOLLOW_ETC_in_rewrite_alternative1904); if (state.failed) return code; } break; } } catch (RecognitionException re) { reportError(re); recover(input,re); } finally { // do for sure before leaving } return code; } // $ANTLR end "rewrite_alternative" public static class rewrite_element_return extends TreeRuleReturnScope { public ST code=null; }; // $ANTLR start "rewrite_element" // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:1321:1: rewrite_element returns [ST code=null] : ( rewrite_atom[false] | rewrite_ebnf | rewrite_tree ); public final CodeGenTreeWalker.rewrite_element_return rewrite_element() throws RecognitionException { CodeGenTreeWalker.rewrite_element_return retval = new CodeGenTreeWalker.rewrite_element_return(); retval.start = input.LT(1); TreeRuleReturnScope rewrite_atom15 =null; TreeRuleReturnScope rewrite_ebnf16 =null; TreeRuleReturnScope rewrite_tree17 =null; IntSet elements=null; GrammarAST ast = null; try { // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:1327:2: ( rewrite_atom[false] | rewrite_ebnf | rewrite_tree ) int alt64=3; switch ( input.LA(1) ) { case ACTION: case CHAR_LITERAL: case LABEL: case RULE_REF: case STRING_LITERAL: case TOKEN_REF: { alt64=1; } break; case CLOSURE: case OPTIONAL: case POSITIVE_CLOSURE: { alt64=2; } break; case TREE_BEGIN: { alt64=3; } break; default: if (state.backtracking>0) {state.failed=true; return retval;} NoViableAltException nvae = new NoViableAltException("", 64, 0, input); throw nvae; } switch (alt64) { case 1 : // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:1327:4: rewrite_atom[false] { pushFollow(FOLLOW_rewrite_atom_in_rewrite_element1924); rewrite_atom15=rewrite_atom(false); state._fsp--; if (state.failed) return retval; if ( state.backtracking==0 ) { retval.code = (rewrite_atom15!=null?((CodeGenTreeWalker.rewrite_atom_return)rewrite_atom15).code:null); } } break; case 2 : // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:1329:4: rewrite_ebnf { pushFollow(FOLLOW_rewrite_ebnf_in_rewrite_element1934); rewrite_ebnf16=rewrite_ebnf(); state._fsp--; if (state.failed) return retval; if ( state.backtracking==0 ) { retval.code = (rewrite_ebnf16!=null?((CodeGenTreeWalker.rewrite_ebnf_return)rewrite_ebnf16).code:null); } } break; case 3 : // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:1331:4: rewrite_tree { pushFollow(FOLLOW_rewrite_tree_in_rewrite_element1943); rewrite_tree17=rewrite_tree(); state._fsp--; if (state.failed) return retval; if ( state.backtracking==0 ) { retval.code = (rewrite_tree17!=null?((CodeGenTreeWalker.rewrite_tree_return)rewrite_tree17).code:null); } } break; } } catch (RecognitionException re) { reportError(re); recover(input,re); } finally { // do for sure before leaving } return retval; } // $ANTLR end "rewrite_element" public static class rewrite_ebnf_return extends TreeRuleReturnScope { public ST code=null; }; // $ANTLR start "rewrite_ebnf" // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:1335:1: rewrite_ebnf returns [ST code=null] : ( ^( OPTIONAL rewrite_block[\"rewriteOptionalBlock\"] ) | ^( CLOSURE rewrite_block[\"rewriteClosureBlock\"] ) | ^( POSITIVE_CLOSURE rewrite_block[\"rewritePositiveClosureBlock\"] ) ); public final CodeGenTreeWalker.rewrite_ebnf_return rewrite_ebnf() throws RecognitionException { CodeGenTreeWalker.rewrite_ebnf_return retval = new CodeGenTreeWalker.rewrite_ebnf_return(); retval.start = input.LT(1); ST rewrite_block18 =null; ST rewrite_block19 =null; ST rewrite_block20 =null; try { // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:1336:2: ( ^( OPTIONAL rewrite_block[\"rewriteOptionalBlock\"] ) | ^( CLOSURE rewrite_block[\"rewriteClosureBlock\"] ) | ^( POSITIVE_CLOSURE rewrite_block[\"rewritePositiveClosureBlock\"] ) ) int alt65=3; switch ( input.LA(1) ) { case OPTIONAL: { alt65=1; } break; case CLOSURE: { alt65=2; } break; case POSITIVE_CLOSURE: { alt65=3; } break; default: if (state.backtracking>0) {state.failed=true; return retval;} NoViableAltException nvae = new NoViableAltException("", 65, 0, input); throw nvae; } switch (alt65) { case 1 : // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:1336:4: ^( OPTIONAL rewrite_block[\"rewriteOptionalBlock\"] ) { match(input,OPTIONAL,FOLLOW_OPTIONAL_in_rewrite_ebnf1964); if (state.failed) return retval; match(input, Token.DOWN, null); if (state.failed) return retval; pushFollow(FOLLOW_rewrite_block_in_rewrite_ebnf1966); rewrite_block18=rewrite_block("rewriteOptionalBlock"); state._fsp--; if (state.failed) return retval; match(input, Token.UP, null); if (state.failed) return retval; if ( state.backtracking==0 ) { retval.code = rewrite_block18; } if ( state.backtracking==0 ) { String description = grammar.grammarTreeToString(((GrammarAST)retval.start), false); description = generator.target.getTargetStringLiteralFromString(description); retval.code.add("description", description); } } break; case 2 : // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:1343:4: ^( CLOSURE rewrite_block[\"rewriteClosureBlock\"] ) { match(input,CLOSURE,FOLLOW_CLOSURE_in_rewrite_ebnf1984); if (state.failed) return retval; match(input, Token.DOWN, null); if (state.failed) return retval; pushFollow(FOLLOW_rewrite_block_in_rewrite_ebnf1986); rewrite_block19=rewrite_block("rewriteClosureBlock"); state._fsp--; if (state.failed) return retval; match(input, Token.UP, null); if (state.failed) return retval; if ( state.backtracking==0 ) { retval.code = rewrite_block19; } if ( state.backtracking==0 ) { String description = grammar.grammarTreeToString(((GrammarAST)retval.start), false); description = generator.target.getTargetStringLiteralFromString(description); retval.code.add("description", description); } } break; case 3 : // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:1350:4: ^( POSITIVE_CLOSURE rewrite_block[\"rewritePositiveClosureBlock\"] ) { match(input,POSITIVE_CLOSURE,FOLLOW_POSITIVE_CLOSURE_in_rewrite_ebnf2004); if (state.failed) return retval; match(input, Token.DOWN, null); if (state.failed) return retval; pushFollow(FOLLOW_rewrite_block_in_rewrite_ebnf2006); rewrite_block20=rewrite_block("rewritePositiveClosureBlock"); state._fsp--; if (state.failed) return retval; match(input, Token.UP, null); if (state.failed) return retval; if ( state.backtracking==0 ) { retval.code = rewrite_block20; } if ( state.backtracking==0 ) { String description = grammar.grammarTreeToString(((GrammarAST)retval.start), false); description = generator.target.getTargetStringLiteralFromString(description); retval.code.add("description", description); } } break; } } catch (RecognitionException re) { reportError(re); recover(input,re); } finally { // do for sure before leaving } return retval; } // $ANTLR end "rewrite_ebnf" public static class rewrite_tree_return extends TreeRuleReturnScope { public ST code; }; // $ANTLR start "rewrite_tree" // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:1359:1: rewrite_tree returns [ST code] : ^( TREE_BEGIN r= rewrite_atom[true] (el= rewrite_element )* ) ; public final CodeGenTreeWalker.rewrite_tree_return rewrite_tree() throws RecognitionException { CodeGenTreeWalker.rewrite_tree_return retval = new CodeGenTreeWalker.rewrite_tree_return(); retval.start = input.LT(1); TreeRuleReturnScope r =null; TreeRuleReturnScope el =null; rewriteTreeNestingLevel++; if ( state.backtracking == 0 ) { retval.code = templates.getInstanceOf("rewriteTree"); retval.code.add("treeLevel", rewriteTreeNestingLevel); retval.code.add("enclosingTreeLevel", rewriteTreeNestingLevel-1); } try { // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:1370:2: ( ^( TREE_BEGIN r= rewrite_atom[true] (el= rewrite_element )* ) ) // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:1370:4: ^( TREE_BEGIN r= rewrite_atom[true] (el= rewrite_element )* ) { match(input,TREE_BEGIN,FOLLOW_TREE_BEGIN_in_rewrite_tree2039); if (state.failed) return retval; match(input, Token.DOWN, null); if (state.failed) return retval; pushFollow(FOLLOW_rewrite_atom_in_rewrite_tree2046); r=rewrite_atom(true); state._fsp--; if (state.failed) return retval; if ( state.backtracking==0 ) { retval.code.addAggr("root.{el,line,pos}", (r!=null?((CodeGenTreeWalker.rewrite_atom_return)r).code:null), (r!=null?((GrammarAST)r.start):null).getLine(), (r!=null?((GrammarAST)r.start):null).getCharPositionInLine() + 1 ); } // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:1379:4: (el= rewrite_element )* loop66: while (true) { int alt66=2; int LA66_0 = input.LA(1); if ( (LA66_0==ACTION||LA66_0==CHAR_LITERAL||LA66_0==CLOSURE||LA66_0==LABEL||LA66_0==OPTIONAL||LA66_0==POSITIVE_CLOSURE||LA66_0==RULE_REF||LA66_0==STRING_LITERAL||LA66_0==TOKEN_REF||LA66_0==TREE_BEGIN) ) { alt66=1; } switch (alt66) { case 1 : // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:1380:6: el= rewrite_element { pushFollow(FOLLOW_rewrite_element_in_rewrite_tree2066); el=rewrite_element(); state._fsp--; if (state.failed) return retval; if ( state.backtracking==0 ) { retval.code.addAggr("children.{el,line,pos}", (el!=null?((CodeGenTreeWalker.rewrite_element_return)el).code:null), (el!=null?((GrammarAST)el.start):null).getLine(), (el!=null?((GrammarAST)el.start):null).getCharPositionInLine() + 1 ); } } break; default : break loop66; } } match(input, Token.UP, null); if (state.failed) return retval; if ( state.backtracking==0 ) { String description = grammar.grammarTreeToString(((GrammarAST)retval.start), false); description = generator.target.getTargetStringLiteralFromString(description); retval.code.add("description", description); } } } catch (RecognitionException re) { reportError(re); recover(input,re); } finally { // do for sure before leaving rewriteTreeNestingLevel--; } return retval; } // $ANTLR end "rewrite_tree" public static class rewrite_atom_return extends TreeRuleReturnScope { public ST code=null; }; // $ANTLR start "rewrite_atom" // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:1398:1: rewrite_atom[boolean isRoot] returns [ST code=null] : (r= RULE_REF | ( ^(tk= TOKEN_REF (arg= ARG_ACTION )? ) |cl= CHAR_LITERAL |sl= STRING_LITERAL ) | LABEL | ACTION ); public final CodeGenTreeWalker.rewrite_atom_return rewrite_atom(boolean isRoot) throws RecognitionException { CodeGenTreeWalker.rewrite_atom_return retval = new CodeGenTreeWalker.rewrite_atom_return(); retval.start = input.LT(1); GrammarAST r=null; GrammarAST tk=null; GrammarAST arg=null; GrammarAST cl=null; GrammarAST sl=null; GrammarAST LABEL21=null; GrammarAST ACTION22=null; try { // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:1399:2: (r= RULE_REF | ( ^(tk= TOKEN_REF (arg= ARG_ACTION )? ) |cl= CHAR_LITERAL |sl= STRING_LITERAL ) | LABEL | ACTION ) int alt69=4; switch ( input.LA(1) ) { case RULE_REF: { alt69=1; } break; case CHAR_LITERAL: case STRING_LITERAL: case TOKEN_REF: { alt69=2; } break; case LABEL: { alt69=3; } break; case ACTION: { alt69=4; } break; default: if (state.backtracking>0) {state.failed=true; return retval;} NoViableAltException nvae = new NoViableAltException("", 69, 0, input); throw nvae; } switch (alt69) { case 1 : // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:1399:6: r= RULE_REF { r=(GrammarAST)match(input,RULE_REF,FOLLOW_RULE_REF_in_rewrite_atom2111); if (state.failed) return retval; if ( state.backtracking==0 ) { String ruleRefName = (r!=null?r.getText():null); String stName = "rewriteRuleRef"; if ( isRoot ) { stName += "Root"; } retval.code = templates.getInstanceOf(stName); retval.code.add("rule", ruleRefName); if ( grammar.getRule(ruleRefName)==null ) { ErrorManager.grammarError(ErrorManager.MSG_UNDEFINED_RULE_REF, grammar, r.getToken(), ruleRefName); retval.code = new ST(""); // blank; no code gen } else if ( grammar.getRule(currentRuleName) .getRuleRefsInAlt(ruleRefName,outerAltNum)==null ) { ErrorManager.grammarError(ErrorManager.MSG_REWRITE_ELEMENT_NOT_PRESENT_ON_LHS, grammar, r.getToken(), ruleRefName); retval.code = new ST(""); // blank; no code gen } else { // track all rule refs as we must copy 2nd ref to rule and beyond if ( !rewriteRuleRefs.contains(ruleRefName) ) { rewriteRuleRefs.add(ruleRefName); } } } } break; case 2 : // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:1437:3: ( ^(tk= TOKEN_REF (arg= ARG_ACTION )? ) |cl= CHAR_LITERAL |sl= STRING_LITERAL ) { // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:1437:3: ( ^(tk= TOKEN_REF (arg= ARG_ACTION )? ) |cl= CHAR_LITERAL |sl= STRING_LITERAL ) int alt68=3; switch ( input.LA(1) ) { case TOKEN_REF: { alt68=1; } break; case CHAR_LITERAL: { alt68=2; } break; case STRING_LITERAL: { alt68=3; } break; default: if (state.backtracking>0) {state.failed=true; return retval;} NoViableAltException nvae = new NoViableAltException("", 68, 0, input); throw nvae; } switch (alt68) { case 1 : // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:1437:5: ^(tk= TOKEN_REF (arg= ARG_ACTION )? ) { tk=(GrammarAST)match(input,TOKEN_REF,FOLLOW_TOKEN_REF_in_rewrite_atom2128); if (state.failed) return retval; if ( input.LA(1)==Token.DOWN ) { match(input, Token.DOWN, null); if (state.failed) return retval; // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:1437:20: (arg= ARG_ACTION )? int alt67=2; int LA67_0 = input.LA(1); if ( (LA67_0==ARG_ACTION) ) { alt67=1; } switch (alt67) { case 1 : // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:1437:21: arg= ARG_ACTION { arg=(GrammarAST)match(input,ARG_ACTION,FOLLOW_ARG_ACTION_in_rewrite_atom2133); if (state.failed) return retval; } break; } match(input, Token.UP, null); if (state.failed) return retval; } } break; case 2 : // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:1438:5: cl= CHAR_LITERAL { cl=(GrammarAST)match(input,CHAR_LITERAL,FOLLOW_CHAR_LITERAL_in_rewrite_atom2144); if (state.failed) return retval; } break; case 3 : // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:1439:5: sl= STRING_LITERAL { sl=(GrammarAST)match(input,STRING_LITERAL,FOLLOW_STRING_LITERAL_in_rewrite_atom2152); if (state.failed) return retval; } break; } if ( state.backtracking==0 ) { GrammarAST term = tk; if (term == null) term = cl; if (term == null) term = sl; String tokenName = ((GrammarAST)retval.start).getToken().getText(); String stName = "rewriteTokenRef"; Rule rule = grammar.getRule(currentRuleName); Collection<String> tokenRefsInAlt = rule.getTokenRefsInAlt(outerAltNum); boolean createNewNode = !tokenRefsInAlt.contains(tokenName) || arg!=null; if ( createNewNode ) { stName = "rewriteImaginaryTokenRef"; } if ( isRoot ) { stName += "Root"; } retval.code = templates.getInstanceOf(stName); if (term.terminalOptions != null) { retval.code.add("terminalOptions",term.terminalOptions); } if ( arg!=null ) { List<? extends Object> args = generator.translateAction(currentRuleName,arg); retval.code.add("args", args); } retval.code.add("elementIndex", ((CommonToken)((GrammarAST)retval.start).getToken()).getTokenIndex()); int ttype = grammar.getTokenType(tokenName); String tok = generator.getTokenTypeAsTargetLabel(ttype); retval.code.add("token", tok); if ( grammar.getTokenType(tokenName)==Label.INVALID ) { ErrorManager.grammarError(ErrorManager.MSG_UNDEFINED_TOKEN_REF_IN_REWRITE, grammar, ((GrammarAST)retval.start).getToken(), tokenName); retval.code = new ST(""); // blank; no code gen } } } break; case 3 : // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:1481:4: LABEL { LABEL21=(GrammarAST)match(input,LABEL,FOLLOW_LABEL_in_rewrite_atom2166); if (state.failed) return retval; if ( state.backtracking==0 ) { String labelName = (LABEL21!=null?LABEL21.getText():null); Rule rule = grammar.getRule(currentRuleName); Grammar.LabelElementPair pair = rule.getLabel(labelName); if ( labelName.equals(currentRuleName) ) { // special case; ref to old value via $ rule if ( rule.hasRewrite(outerAltNum) && rule.getRuleRefsInAlt(outerAltNum).contains(labelName) ) { ErrorManager.grammarError(ErrorManager.MSG_RULE_REF_AMBIG_WITH_RULE_IN_ALT, grammar, LABEL21.getToken(), labelName); } ST labelST = templates.getInstanceOf("prevRuleRootRef"); retval.code = templates.getInstanceOf("rewriteRuleLabelRef"+(isRoot?"Root":"")); retval.code.add("label", labelST); } else if ( pair==null ) { ErrorManager.grammarError(ErrorManager.MSG_UNDEFINED_LABEL_REF_IN_REWRITE, grammar, LABEL21.getToken(), labelName); retval.code = new ST(""); } else { String stName = null; switch ( pair.type ) { case Grammar.TOKEN_LABEL : stName = "rewriteTokenLabelRef"; break; case Grammar.WILDCARD_TREE_LABEL : stName = "rewriteWildcardLabelRef"; break; case Grammar.WILDCARD_TREE_LIST_LABEL: stName = "rewriteRuleListLabelRef"; // acts like rule ref list for ref break; case Grammar.RULE_LABEL : stName = "rewriteRuleLabelRef"; break; case Grammar.TOKEN_LIST_LABEL : stName = "rewriteTokenListLabelRef"; break; case Grammar.RULE_LIST_LABEL : stName = "rewriteRuleListLabelRef"; break; } if ( isRoot ) { stName += "Root"; } retval.code = templates.getInstanceOf(stName); retval.code.add("label", labelName); } } } break; case 4 : // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:1542:4: ACTION { ACTION22=(GrammarAST)match(input,ACTION,FOLLOW_ACTION_in_rewrite_atom2176); if (state.failed) return retval; if ( state.backtracking==0 ) { // actions in rewrite rules yield a tree object String actText = (ACTION22!=null?ACTION22.getText():null); List<? extends Object> chunks = generator.translateAction(currentRuleName,ACTION22); retval.code = templates.getInstanceOf("rewriteNodeAction"+(isRoot?"Root":"")); retval.code.add("action", chunks); } } break; } } catch (RecognitionException re) { reportError(re); recover(input,re); } finally { // do for sure before leaving } return retval; } // $ANTLR end "rewrite_atom" // $ANTLR start "rewrite_template" // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:1553:1: public rewrite_template returns [ST code=null] : ( ^( ALT EPSILON EOA ) | ^( TEMPLATE (id= ID |ind= ACTION ) ^( ARGLIST ( ^( ARG arg= ID a= ACTION ) )* ) ( DOUBLE_QUOTE_STRING_LITERAL | DOUBLE_ANGLE_STRING_LITERAL )? ) |act= ACTION ); public final ST rewrite_template() throws RecognitionException { ST code = null; GrammarAST id=null; GrammarAST ind=null; GrammarAST arg=null; GrammarAST a=null; GrammarAST act=null; GrammarAST DOUBLE_QUOTE_STRING_LITERAL23=null; GrammarAST DOUBLE_ANGLE_STRING_LITERAL24=null; try { // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:1554:2: ( ^( ALT EPSILON EOA ) | ^( TEMPLATE (id= ID |ind= ACTION ) ^( ARGLIST ( ^( ARG arg= ID a= ACTION ) )* ) ( DOUBLE_QUOTE_STRING_LITERAL | DOUBLE_ANGLE_STRING_LITERAL )? ) |act= ACTION ) int alt73=3; switch ( input.LA(1) ) { case ALT: { alt73=1; } break; case TEMPLATE: { alt73=2; } break; case ACTION: { alt73=3; } break; default: if (state.backtracking>0) {state.failed=true; return code;} NoViableAltException nvae = new NoViableAltException("", 73, 0, input); throw nvae; } switch (alt73) { case 1 : // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:1554:4: ^( ALT EPSILON EOA ) { match(input,ALT,FOLLOW_ALT_in_rewrite_template2199); if (state.failed) return code; match(input, Token.DOWN, null); if (state.failed) return code; match(input,EPSILON,FOLLOW_EPSILON_in_rewrite_template2201); if (state.failed) return code; match(input,EOA,FOLLOW_EOA_in_rewrite_template2203); if (state.failed) return code; match(input, Token.UP, null); if (state.failed) return code; if ( state.backtracking==0 ) {code =templates.getInstanceOf("rewriteEmptyTemplate");} } break; case 2 : // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:1555:4: ^( TEMPLATE (id= ID |ind= ACTION ) ^( ARGLIST ( ^( ARG arg= ID a= ACTION ) )* ) ( DOUBLE_QUOTE_STRING_LITERAL | DOUBLE_ANGLE_STRING_LITERAL )? ) { match(input,TEMPLATE,FOLLOW_TEMPLATE_in_rewrite_template2214); if (state.failed) return code; match(input, Token.DOWN, null); if (state.failed) return code; // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:1555:16: (id= ID |ind= ACTION ) int alt70=2; int LA70_0 = input.LA(1); if ( (LA70_0==ID) ) { alt70=1; } else if ( (LA70_0==ACTION) ) { alt70=2; } else { if (state.backtracking>0) {state.failed=true; return code;} NoViableAltException nvae = new NoViableAltException("", 70, 0, input); throw nvae; } switch (alt70) { case 1 : // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:1555:17: id= ID { id=(GrammarAST)match(input,ID,FOLLOW_ID_in_rewrite_template2219); if (state.failed) return code; } break; case 2 : // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:1555:23: ind= ACTION { ind=(GrammarAST)match(input,ACTION,FOLLOW_ACTION_in_rewrite_template2223); if (state.failed) return code; } break; } if ( state.backtracking==0 ) { if ( id!=null && (id!=null?id.getText():null).equals("template") ) { code = templates.getInstanceOf("rewriteInlineTemplate"); } else if ( id!=null ) { code = templates.getInstanceOf("rewriteExternalTemplate"); code.add("name", (id!=null?id.getText():null)); } else if ( ind!=null ) { // must be %({expr})(args) code = templates.getInstanceOf("rewriteIndirectTemplate"); List<? extends Object> chunks=generator.translateAction(currentRuleName,ind); code.add("expr", chunks); } } match(input,ARGLIST,FOLLOW_ARGLIST_in_rewrite_template2236); if (state.failed) return code; if ( input.LA(1)==Token.DOWN ) { match(input, Token.DOWN, null); if (state.failed) return code; // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:1574:5: ( ^( ARG arg= ID a= ACTION ) )* loop71: while (true) { int alt71=2; int LA71_0 = input.LA(1); if ( (LA71_0==ARG) ) { alt71=1; } switch (alt71) { case 1 : // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:1574:7: ^( ARG arg= ID a= ACTION ) { match(input,ARG,FOLLOW_ARG_in_rewrite_template2246); if (state.failed) return code; match(input, Token.DOWN, null); if (state.failed) return code; arg=(GrammarAST)match(input,ID,FOLLOW_ID_in_rewrite_template2250); if (state.failed) return code; a=(GrammarAST)match(input,ACTION,FOLLOW_ACTION_in_rewrite_template2254); if (state.failed) return code; if ( state.backtracking==0 ) { // must set alt num here rather than in define.g // because actions like %foo(name={$ID.text}) aren't // broken up yet into trees. a.outerAltNum = this.outerAltNum; List<? extends Object> chunks = generator.translateAction(currentRuleName,a); code.addAggr("args.{name,value}", (arg!=null?arg.getText():null), chunks); } match(input, Token.UP, null); if (state.failed) return code; } break; default : break loop71; } } match(input, Token.UP, null); if (state.failed) return code; } // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:1586:4: ( DOUBLE_QUOTE_STRING_LITERAL | DOUBLE_ANGLE_STRING_LITERAL )? int alt72=3; int LA72_0 = input.LA(1); if ( (LA72_0==DOUBLE_QUOTE_STRING_LITERAL) ) { alt72=1; } else if ( (LA72_0==DOUBLE_ANGLE_STRING_LITERAL) ) { alt72=2; } switch (alt72) { case 1 : // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:1586:6: DOUBLE_QUOTE_STRING_LITERAL { DOUBLE_QUOTE_STRING_LITERAL23=(GrammarAST)match(input,DOUBLE_QUOTE_STRING_LITERAL,FOLLOW_DOUBLE_QUOTE_STRING_LITERAL_in_rewrite_template2287); if (state.failed) return code; if ( state.backtracking==0 ) { String sl = (DOUBLE_QUOTE_STRING_LITERAL23!=null?DOUBLE_QUOTE_STRING_LITERAL23.getText():null); String t = sl.substring( 1, sl.length() - 1 ); // strip quotes t = generator.target.getTargetStringLiteralFromString(t); code.add("template",t); } } break; case 2 : // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:1593:6: DOUBLE_ANGLE_STRING_LITERAL { DOUBLE_ANGLE_STRING_LITERAL24=(GrammarAST)match(input,DOUBLE_ANGLE_STRING_LITERAL,FOLLOW_DOUBLE_ANGLE_STRING_LITERAL_in_rewrite_template2300); if (state.failed) return code; if ( state.backtracking==0 ) { String sl = (DOUBLE_ANGLE_STRING_LITERAL24!=null?DOUBLE_ANGLE_STRING_LITERAL24.getText():null); String t = sl.substring( 2, sl.length() - 2 ); // strip double angle quotes t = generator.target.getTargetStringLiteralFromString(t); code.add("template",t); } } break; } match(input, Token.UP, null); if (state.failed) return code; } break; case 3 : // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:1603:4: act= ACTION { act=(GrammarAST)match(input,ACTION,FOLLOW_ACTION_in_rewrite_template2324); if (state.failed) return code; if ( state.backtracking==0 ) { // set alt num for same reason as ARGLIST above act.outerAltNum = this.outerAltNum; code =templates.getInstanceOf("rewriteAction"); code.add("action", generator.translateAction(currentRuleName,act)); } } break; } } catch (RecognitionException re) { reportError(re); recover(input,re); } finally { // do for sure before leaving } return code; } // $ANTLR end "rewrite_template" // $ANTLR start synpred1_CodeGenTreeWalker public final void synpred1_CodeGenTreeWalker_fragment() throws RecognitionException { // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:750:4: ({...}? ( BLOCK | OPTIONAL | CLOSURE | POSITIVE_CLOSURE ) ) // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:750:5: {...}? ( BLOCK | OPTIONAL | CLOSURE | POSITIVE_CLOSURE ) { if ( !((((GrammarAST)input.LT(1)).getSetValue()==null)) ) { if (state.backtracking>0) {state.failed=true; return;} throw new FailedPredicateException(input, "synpred1_CodeGenTreeWalker", "((GrammarAST)input.LT(1)).getSetValue()==null"); } if ( input.LA(1)==BLOCK||input.LA(1)==CLOSURE||input.LA(1)==OPTIONAL||input.LA(1)==POSITIVE_CLOSURE ) { input.consume(); state.errorRecovery=false; state.failed=false; } else { if (state.backtracking>0) {state.failed=true; return;} MismatchedSetException mse = new MismatchedSetException(null,input); throw mse; } } } // $ANTLR end synpred1_CodeGenTreeWalker // $ANTLR start synpred2_CodeGenTreeWalker public final void synpred2_CodeGenTreeWalker_fragment() throws RecognitionException { // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:918:6: ( element_action ) // org\\antlr\\grammar\\v3\\CodeGenTreeWalker.g:918:7: element_action { pushFollow(FOLLOW_element_action_in_synpred2_CodeGenTreeWalker1405); element_action(); state._fsp--; if (state.failed) return; } } // $ANTLR end synpred2_CodeGenTreeWalker // Delegated rules public final boolean synpred1_CodeGenTreeWalker() { state.backtracking++; int start = input.mark(); try { synpred1_CodeGenTreeWalker_fragment(); // can never throw exception } catch (RecognitionException re) { System.err.println("impossible: "+re); } boolean success = !state.failed; input.rewind(start); state.backtracking--; state.failed=false; return success; } public final boolean synpred2_CodeGenTreeWalker() { state.backtracking++; int start = input.mark(); try { synpred2_CodeGenTreeWalker_fragment(); // can never throw exception } catch (RecognitionException re) { System.err.println("impossible: "+re); } boolean success = !state.failed; input.rewind(start); state.backtracking--; state.failed=false; return success; } public static final BitSet FOLLOW_LEXER_GRAMMAR_in_grammar_67 = new BitSet(new long[]{0x0000000000000004L}); public static final BitSet FOLLOW_grammarSpec_in_grammar_69 = new BitSet(new long[]{0x0000000000000008L}); public static final BitSet FOLLOW_PARSER_GRAMMAR_in_grammar_79 = new BitSet(new long[]{0x0000000000000004L}); public static final BitSet FOLLOW_grammarSpec_in_grammar_81 = new BitSet(new long[]{0x0000000000000008L}); public static final BitSet FOLLOW_TREE_GRAMMAR_in_grammar_91 = new BitSet(new long[]{0x0000000000000004L}); public static final BitSet FOLLOW_grammarSpec_in_grammar_93 = new BitSet(new long[]{0x0000000000000008L}); public static final BitSet FOLLOW_COMBINED_GRAMMAR_in_grammar_103 = new BitSet(new long[]{0x0000000000000004L}); public static final BitSet FOLLOW_grammarSpec_in_grammar_105 = new BitSet(new long[]{0x0000000000000008L}); public static final BitSet FOLLOW_SCOPE_in_attrScope124 = new BitSet(new long[]{0x0000000000000004L}); public static final BitSet FOLLOW_ID_in_attrScope126 = new BitSet(new long[]{0x0000000000000210L}); public static final BitSet FOLLOW_AMPERSAND_in_attrScope131 = new BitSet(new long[]{0x0000000000000004L}); public static final BitSet FOLLOW_ACTION_in_attrScope140 = new BitSet(new long[]{0x0000000000000008L}); public static final BitSet FOLLOW_ID_in_grammarSpec157 = new BitSet(new long[]{0x0400200008000200L,0x0000000020028002L}); public static final BitSet FOLLOW_DOC_COMMENT_in_grammarSpec165 = new BitSet(new long[]{0x0400200000000200L,0x0000000020028002L}); public static final BitSet FOLLOW_OPTIONS_in_grammarSpec186 = new BitSet(new long[]{0x0000000000000004L}); public static final BitSet FOLLOW_IMPORT_in_grammarSpec200 = new BitSet(new long[]{0x0000000000000004L}); public static final BitSet FOLLOW_TOKENS_in_grammarSpec214 = new BitSet(new long[]{0x0000000000000004L}); public static final BitSet FOLLOW_attrScope_in_grammarSpec226 = new BitSet(new long[]{0x0000000000000200L,0x0000000000028002L}); public static final BitSet FOLLOW_AMPERSAND_in_grammarSpec235 = new BitSet(new long[]{0x0000000000000004L}); public static final BitSet FOLLOW_rules_in_grammarSpec246 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_rule_in_rules291 = new BitSet(new long[]{0x0000000000000002L,0x0000000000008002L}); public static final BitSet FOLLOW_RULE_in_rules305 = new BitSet(new long[]{0x0000000000000004L}); public static final BitSet FOLLOW_PREC_RULE_in_rules317 = new BitSet(new long[]{0x0000000000000004L}); public static final BitSet FOLLOW_RULE_in_rule359 = new BitSet(new long[]{0x0000000000000004L}); public static final BitSet FOLLOW_ID_in_rule363 = new BitSet(new long[]{0x0000010000000400L,0x000000000000001CL}); public static final BitSet FOLLOW_modifier_in_rule376 = new BitSet(new long[]{0x0000000000000400L}); public static final BitSet FOLLOW_ARG_in_rule384 = new BitSet(new long[]{0x0000000000000004L}); public static final BitSet FOLLOW_ARG_ACTION_in_rule387 = new BitSet(new long[]{0x0000000000000008L}); public static final BitSet FOLLOW_RET_in_rule396 = new BitSet(new long[]{0x0000000000000004L}); public static final BitSet FOLLOW_ARG_ACTION_in_rule399 = new BitSet(new long[]{0x0000000000000008L}); public static final BitSet FOLLOW_throwsSpec_in_rule408 = new BitSet(new long[]{0x0400000000010200L,0x0000000000020000L}); public static final BitSet FOLLOW_OPTIONS_in_rule418 = new BitSet(new long[]{0x0000000000000004L}); public static final BitSet FOLLOW_ruleScopeSpec_in_rule431 = new BitSet(new long[]{0x0000000000010200L}); public static final BitSet FOLLOW_AMPERSAND_in_rule441 = new BitSet(new long[]{0x0000000000000004L}); public static final BitSet FOLLOW_block_in_rule455 = new BitSet(new long[]{0x0000004400020000L}); public static final BitSet FOLLOW_exceptionGroup_in_rule468 = new BitSet(new long[]{0x0000000400000000L}); public static final BitSet FOLLOW_EOR_in_rule476 = new BitSet(new long[]{0x0000000000000008L}); public static final BitSet FOLLOW_THROWS_in_throwsSpec526 = new BitSet(new long[]{0x0000000000000004L}); public static final BitSet FOLLOW_ID_in_throwsSpec528 = new BitSet(new long[]{0x0000080000000008L}); public static final BitSet FOLLOW_SCOPE_in_ruleScopeSpec543 = new BitSet(new long[]{0x0000000000000004L}); public static final BitSet FOLLOW_AMPERSAND_in_ruleScopeSpec548 = new BitSet(new long[]{0x0000000000000004L}); public static final BitSet FOLLOW_ACTION_in_ruleScopeSpec558 = new BitSet(new long[]{0x0000080000000008L}); public static final BitSet FOLLOW_ID_in_ruleScopeSpec564 = new BitSet(new long[]{0x0000080000000008L}); public static final BitSet FOLLOW_setBlock_in_block605 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_BLOCK_in_block618 = new BitSet(new long[]{0x0000000000000004L}); public static final BitSet FOLLOW_OPTIONS_in_block626 = new BitSet(new long[]{0x0000000000000004L}); public static final BitSet FOLLOW_alternative_in_block643 = new BitSet(new long[]{0x0000000200000100L,0x0000000000001000L}); public static final BitSet FOLLOW_rewrite_in_block648 = new BitSet(new long[]{0x0000000200000100L}); public static final BitSet FOLLOW_EOB_in_block665 = new BitSet(new long[]{0x0000000000000008L}); public static final BitSet FOLLOW_BLOCK_in_setBlock697 = new BitSet(new long[]{0x0000000000000004L}); public static final BitSet FOLLOW_ALT_in_setAlternative717 = new BitSet(new long[]{0x0000000000000004L}); public static final BitSet FOLLOW_setElement_in_setAlternative719 = new BitSet(new long[]{0x00000001000C0000L,0x0000000041000000L}); public static final BitSet FOLLOW_EOA_in_setAlternative722 = new BitSet(new long[]{0x0000000000000008L}); public static final BitSet FOLLOW_exceptionHandler_in_exceptionGroup737 = new BitSet(new long[]{0x0000004000020002L}); public static final BitSet FOLLOW_finallyClause_in_exceptionGroup744 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_finallyClause_in_exceptionGroup752 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_CATCH_in_exceptionHandler766 = new BitSet(new long[]{0x0000000000000004L}); public static final BitSet FOLLOW_ARG_ACTION_in_exceptionHandler768 = new BitSet(new long[]{0x0000000000000010L}); public static final BitSet FOLLOW_ACTION_in_exceptionHandler770 = new BitSet(new long[]{0x0000000000000008L}); public static final BitSet FOLLOW_FINALLY_in_finallyClause788 = new BitSet(new long[]{0x0000000000000004L}); public static final BitSet FOLLOW_ACTION_in_finallyClause790 = new BitSet(new long[]{0x0000000000000008L}); public static final BitSet FOLLOW_ALT_in_alternative820 = new BitSet(new long[]{0x0000000000000004L}); public static final BitSet FOLLOW_element_in_alternative833 = new BitSet(new long[]{0x82800289202DE010L,0x0000000547092001L}); public static final BitSet FOLLOW_EOA_in_alternative851 = new BitSet(new long[]{0x0000000000000008L}); public static final BitSet FOLLOW_ROOT_in_element886 = new BitSet(new long[]{0x0000000000000004L}); public static final BitSet FOLLOW_element_in_element890 = new BitSet(new long[]{0x0000000000000008L}); public static final BitSet FOLLOW_BANG_in_element903 = new BitSet(new long[]{0x0000000000000004L}); public static final BitSet FOLLOW_element_in_element907 = new BitSet(new long[]{0x0000000000000008L}); public static final BitSet FOLLOW_NOT_in_element923 = new BitSet(new long[]{0x0000000000000004L}); public static final BitSet FOLLOW_notElement_in_element927 = new BitSet(new long[]{0x0000000000000008L}); public static final BitSet FOLLOW_ASSIGN_in_element942 = new BitSet(new long[]{0x0000000000000004L}); public static final BitSet FOLLOW_ID_in_element946 = new BitSet(new long[]{0x82800288202DE010L,0x0000000547092001L}); public static final BitSet FOLLOW_element_in_element950 = new BitSet(new long[]{0x0000000000000008L}); public static final BitSet FOLLOW_PLUS_ASSIGN_in_element965 = new BitSet(new long[]{0x0000000000000004L}); public static final BitSet FOLLOW_ID_in_element969 = new BitSet(new long[]{0x82800288202DE010L,0x0000000547092001L}); public static final BitSet FOLLOW_element_in_element973 = new BitSet(new long[]{0x0000000000000008L}); public static final BitSet FOLLOW_CHAR_RANGE_in_element987 = new BitSet(new long[]{0x0000000000000004L}); public static final BitSet FOLLOW_CHAR_LITERAL_in_element991 = new BitSet(new long[]{0x0000000000040000L}); public static final BitSet FOLLOW_CHAR_LITERAL_in_element995 = new BitSet(new long[]{0x0000000000000008L}); public static final BitSet FOLLOW_ebnf_in_element1024 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_atom_in_element1035 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_tree__in_element1046 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_element_action_in_element1056 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_SEMPRED_in_element1071 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_GATED_SEMPRED_in_element1075 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_SYN_SEMPRED_in_element1086 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_SYNPRED_in_element1094 = new BitSet(new long[]{0x0000000000000004L}); public static final BitSet FOLLOW_BACKTRACK_SEMPRED_in_element1105 = new BitSet(new long[]{0x0000000000000004L}); public static final BitSet FOLLOW_EPSILON_in_element1117 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_ACTION_in_element_action1134 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_FORCED_ACTION_in_element_action1145 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_CHAR_LITERAL_in_notElement1174 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_STRING_LITERAL_in_notElement1187 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_TOKEN_REF_in_notElement1200 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_BLOCK_in_notElement1214 = new BitSet(new long[]{0x0000000000000004L}); public static final BitSet FOLLOW_block_in_ebnf1261 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_OPTIONAL_in_ebnf1280 = new BitSet(new long[]{0x0000000000000004L}); public static final BitSet FOLLOW_block_in_ebnf1284 = new BitSet(new long[]{0x0000000000000008L}); public static final BitSet FOLLOW_CLOSURE_in_ebnf1305 = new BitSet(new long[]{0x0000000000000004L}); public static final BitSet FOLLOW_block_in_ebnf1309 = new BitSet(new long[]{0x0000000000000008L}); public static final BitSet FOLLOW_POSITIVE_CLOSURE_in_ebnf1330 = new BitSet(new long[]{0x0000000000000004L}); public static final BitSet FOLLOW_block_in_ebnf1334 = new BitSet(new long[]{0x0000000000000008L}); public static final BitSet FOLLOW_TREE_BEGIN_in_tree_1372 = new BitSet(new long[]{0x0000000000000004L}); public static final BitSet FOLLOW_element_in_tree_1379 = new BitSet(new long[]{0x82800288202DE018L,0x0000000547092001L}); public static final BitSet FOLLOW_element_action_in_tree_1416 = new BitSet(new long[]{0x82800288202DE018L,0x0000000547092001L}); public static final BitSet FOLLOW_element_in_tree_1438 = new BitSet(new long[]{0x82800288202DE018L,0x0000000547092001L}); public static final BitSet FOLLOW_RULE_REF_in_atom1488 = new BitSet(new long[]{0x0000000000000004L}); public static final BitSet FOLLOW_ARG_ACTION_in_atom1493 = new BitSet(new long[]{0x0000000000000008L}); public static final BitSet FOLLOW_TOKEN_REF_in_atom1511 = new BitSet(new long[]{0x0000000000000004L}); public static final BitSet FOLLOW_ARG_ACTION_in_atom1516 = new BitSet(new long[]{0x0000000000000008L}); public static final BitSet FOLLOW_CHAR_LITERAL_in_atom1532 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_STRING_LITERAL_in_atom1544 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_WILDCARD_in_atom1556 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_DOT_in_atom1567 = new BitSet(new long[]{0x0000000000000004L}); public static final BitSet FOLLOW_ID_in_atom1569 = new BitSet(new long[]{0x0000000020050000L,0x0000000441010000L}); public static final BitSet FOLLOW_atom_in_atom1573 = new BitSet(new long[]{0x0000000000000008L}); public static final BitSet FOLLOW_set_in_atom1586 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_BLOCK_in_set1631 = new BitSet(new long[]{0x0000000000000004L}); public static final BitSet FOLLOW_CHAR_LITERAL_in_setElement1651 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_TOKEN_REF_in_setElement1656 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_STRING_LITERAL_in_setElement1661 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_CHAR_RANGE_in_setElement1667 = new BitSet(new long[]{0x0000000000000004L}); public static final BitSet FOLLOW_CHAR_LITERAL_in_setElement1669 = new BitSet(new long[]{0x0000000000040000L}); public static final BitSet FOLLOW_CHAR_LITERAL_in_setElement1671 = new BitSet(new long[]{0x0000000000000008L}); public static final BitSet FOLLOW_REWRITES_in_rewrite1696 = new BitSet(new long[]{0x0000000000000004L}); public static final BitSet FOLLOW_REWRITE_in_rewrite1717 = new BitSet(new long[]{0x0000000000000004L}); public static final BitSet FOLLOW_SEMPRED_in_rewrite1722 = new BitSet(new long[]{0x0000002000000110L,0x0000000008000000L}); public static final BitSet FOLLOW_rewrite_alternative_in_rewrite1728 = new BitSet(new long[]{0x0000000000000008L}); public static final BitSet FOLLOW_BLOCK_in_rewrite_block1771 = new BitSet(new long[]{0x0000000000000004L}); public static final BitSet FOLLOW_rewrite_alternative_in_rewrite_block1783 = new BitSet(new long[]{0x0000000200000000L}); public static final BitSet FOLLOW_EOB_in_rewrite_block1788 = new BitSet(new long[]{0x0000000000000008L}); public static final BitSet FOLLOW_ALT_in_rewrite_alternative1823 = new BitSet(new long[]{0x0000000000000004L}); public static final BitSet FOLLOW_rewrite_element_in_rewrite_alternative1841 = new BitSet(new long[]{0x0201000100240010L,0x0000000141010001L}); public static final BitSet FOLLOW_EPSILON_in_rewrite_alternative1862 = new BitSet(new long[]{0x0000000100000000L}); public static final BitSet FOLLOW_EOA_in_rewrite_alternative1878 = new BitSet(new long[]{0x0000000000000008L}); public static final BitSet FOLLOW_rewrite_template_in_rewrite_alternative1891 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_ETC_in_rewrite_alternative1904 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_rewrite_atom_in_rewrite_element1924 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_rewrite_ebnf_in_rewrite_element1934 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_rewrite_tree_in_rewrite_element1943 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_OPTIONAL_in_rewrite_ebnf1964 = new BitSet(new long[]{0x0000000000000004L}); public static final BitSet FOLLOW_rewrite_block_in_rewrite_ebnf1966 = new BitSet(new long[]{0x0000000000000008L}); public static final BitSet FOLLOW_CLOSURE_in_rewrite_ebnf1984 = new BitSet(new long[]{0x0000000000000004L}); public static final BitSet FOLLOW_rewrite_block_in_rewrite_ebnf1986 = new BitSet(new long[]{0x0000000000000008L}); public static final BitSet FOLLOW_POSITIVE_CLOSURE_in_rewrite_ebnf2004 = new BitSet(new long[]{0x0000000000000004L}); public static final BitSet FOLLOW_rewrite_block_in_rewrite_ebnf2006 = new BitSet(new long[]{0x0000000000000008L}); public static final BitSet FOLLOW_TREE_BEGIN_in_rewrite_tree2039 = new BitSet(new long[]{0x0000000000000004L}); public static final BitSet FOLLOW_rewrite_atom_in_rewrite_tree2046 = new BitSet(new long[]{0x0201000000240018L,0x0000000141010001L}); public static final BitSet FOLLOW_rewrite_element_in_rewrite_tree2066 = new BitSet(new long[]{0x0201000000240018L,0x0000000141010001L}); public static final BitSet FOLLOW_RULE_REF_in_rewrite_atom2111 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_TOKEN_REF_in_rewrite_atom2128 = new BitSet(new long[]{0x0000000000000004L}); public static final BitSet FOLLOW_ARG_ACTION_in_rewrite_atom2133 = new BitSet(new long[]{0x0000000000000008L}); public static final BitSet FOLLOW_CHAR_LITERAL_in_rewrite_atom2144 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_STRING_LITERAL_in_rewrite_atom2152 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_LABEL_in_rewrite_atom2166 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_ACTION_in_rewrite_atom2176 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_ALT_in_rewrite_template2199 = new BitSet(new long[]{0x0000000000000004L}); public static final BitSet FOLLOW_EPSILON_in_rewrite_template2201 = new BitSet(new long[]{0x0000000100000000L}); public static final BitSet FOLLOW_EOA_in_rewrite_template2203 = new BitSet(new long[]{0x0000000000000008L}); public static final BitSet FOLLOW_TEMPLATE_in_rewrite_template2214 = new BitSet(new long[]{0x0000000000000004L}); public static final BitSet FOLLOW_ID_in_rewrite_template2219 = new BitSet(new long[]{0x0000000000000800L}); public static final BitSet FOLLOW_ACTION_in_rewrite_template2223 = new BitSet(new long[]{0x0000000000000800L}); public static final BitSet FOLLOW_ARGLIST_in_rewrite_template2236 = new BitSet(new long[]{0x0000000000000004L}); public static final BitSet FOLLOW_ARG_in_rewrite_template2246 = new BitSet(new long[]{0x0000000000000004L}); public static final BitSet FOLLOW_ID_in_rewrite_template2250 = new BitSet(new long[]{0x0000000000000010L}); public static final BitSet FOLLOW_ACTION_in_rewrite_template2254 = new BitSet(new long[]{0x0000000000000008L}); public static final BitSet FOLLOW_DOUBLE_QUOTE_STRING_LITERAL_in_rewrite_template2287 = new BitSet(new long[]{0x0000000000000008L}); public static final BitSet FOLLOW_DOUBLE_ANGLE_STRING_LITERAL_in_rewrite_template2300 = new BitSet(new long[]{0x0000000000000008L}); public static final BitSet FOLLOW_ACTION_in_rewrite_template2324 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_set_in_synpred1_CodeGenTreeWalker1009 = new BitSet(new long[]{0x0000000000000002L}); public static final BitSet FOLLOW_element_action_in_synpred2_CodeGenTreeWalker1405 = new BitSet(new long[]{0x0000000000000002L}); }