From 03d9f0ba3253f97dbb0859cefe7c8c32b3dadae9 Mon Sep 17 00:00:00 2001 From: parrt Date: Sat, 22 May 2010 10:27:11 -0800 Subject: [PATCH] Got rid of the fields listed in the output model object hierarchy; created the exception throwing templates [git-p4: depot-paths = "//depot/code/antlr4/main/": change = 6882] --- .../org/antlr/v4/runtime/BaseRecognizer.java | 36 +- .../antlr/v4/runtime/EarlyExitException.java | 9 +- .../Java/src/org/antlr/v4/runtime/Lexer.java | 3 +- .../v4/runtime/MismatchedSetException.java | 5 +- .../v4/runtime/MismatchedTokenException.java | 7 +- .../runtime/MismatchedTreeNodeException.java | 7 +- .../v4/runtime/MissingTokenException.java | 2 +- .../v4/runtime/NoViableAltException.java | 18 +- .../v4/runtime/RecognitionException.java | 13 +- .../v4/runtime/UnwantedTokenException.java | 3 - .../org/antlr/v4/runtime/misc/LABitSet.java | 27 +- .../v4/tool/templates/codegen/Java/Java.stg | 43 +- .../antlr/v4/analysis/AnalysisPipeline.java | 2 +- .../antlr/v4/analysis/LinearApproximator.java | 6 +- .../antlr/v4/codegen/OutputModelFactory.java | 7 + .../antlr/v4/codegen/OutputModelWalker.java | 39 +- tool/src/org/antlr/v4/codegen/src/Action.java | 17 +- .../org/antlr/v4/codegen/src/BitSetDecl.java | 3 +- tool/src/org/antlr/v4/codegen/src/Choice.java | 26 +- .../org/antlr/v4/codegen/src/CodeBlock.java | 10 +- .../org/antlr/v4/codegen/src/InvokeRule.java | 2 +- .../org/antlr/v4/codegen/src/LL1Choice.java | 1 + .../src/org/antlr/v4/codegen/src/LL1Loop.java | 14 +- .../src/LL1OptionalBlockSingleAlt.java | 11 +- .../antlr/v4/codegen/src/LL1PlusBlock.java | 12 + .../v4/codegen/src/LL1PlusBlockSingleAlt.java | 8 + .../org/antlr/v4/codegen/src/MatchToken.java | 2 +- .../v4/codegen/src/OutputModelObject.java | 8 +- tool/src/org/antlr/v4/codegen/src/Parser.java | 10 +- .../org/antlr/v4/codegen/src/ParserFile.java | 22 +- .../antlr/v4/codegen/src/RuleFunction.java | 18 +- .../org/antlr/v4/codegen/src/StructDecl.java | 14 +- .../codegen/src/ThrowEarlyExitException.java | 12 + .../v4/codegen/src/ThrowNoViableAlt.java | 14 + .../src/ThrowRecognitionException.java | 25 + .../src/actions/DynScopeAttrRef_index.java | 17 +- .../antlr/v4/codegen/src/actions/SetAttr.java | 17 +- .../codegen/src/actions/SetDynScopeAttr.java | 19 +- .../src/actions/SetDynScopeAttr_index.java | 17 +- tool/src/org/antlr/v4/parse/ANTLRLexer.java | 4 +- tool/src/org/antlr/v4/parse/ANTLRParser.g | 6 +- tool/src/org/antlr/v4/parse/ANTLRParser.java | 654 +++++++++--------- tool/src/org/antlr/v4/parse/ASTVerifier.java | 2 +- .../org/antlr/v4/parse/ActionSplitter.java | 109 ++- tool/src/org/antlr/v4/parse/NFABuilder.java | 2 +- .../test/TestLinearApproximateLookahead.java | 2 +- 46 files changed, 701 insertions(+), 604 deletions(-) create mode 100644 tool/src/org/antlr/v4/codegen/src/ThrowEarlyExitException.java create mode 100644 tool/src/org/antlr/v4/codegen/src/ThrowNoViableAlt.java create mode 100644 tool/src/org/antlr/v4/codegen/src/ThrowRecognitionException.java diff --git a/runtime/Java/src/org/antlr/v4/runtime/BaseRecognizer.java b/runtime/Java/src/org/antlr/v4/runtime/BaseRecognizer.java index 2c7f73cc4..ca706ad91 100644 --- a/runtime/Java/src/org/antlr/v4/runtime/BaseRecognizer.java +++ b/runtime/Java/src/org/antlr/v4/runtime/BaseRecognizer.java @@ -106,11 +106,12 @@ public abstract class BaseRecognizer { state.failed = false; return matchedSymbol; } - if ( state.backtracking>0 ) { - state.failed = true; - return matchedSymbol; - } +// if ( state.backtracking>0 ) { +// state.failed = true; +// return matchedSymbol; +// } matchedSymbol = recoverFromMismatchedToken(ttype, follow); + System.out.println("rsync'd to "+matchedSymbol); return matchedSymbol; } @@ -205,16 +206,16 @@ public abstract class BaseRecognizer { * exception types. */ public String getErrorMessage(RecognitionException e) { - String[] tokenNames = getTokenNames(); + String[] tokenNames = getTokenNames(); String msg = e.getMessage(); if ( e instanceof UnwantedTokenException ) { UnwantedTokenException ute = (UnwantedTokenException)e; String tokenName=""; - if ( ute.expecting== Token.EOF ) { + if ( ute.expecting.member(Token.EOF) ) { tokenName = "EOF"; } else { - tokenName = tokenNames[ute.expecting]; + tokenName = tokenNames[ute.expecting.getSingleElement()]; } msg = "extraneous input "+getTokenErrorDisplay(ute.getUnexpectedToken())+ " expecting "+tokenName; @@ -222,22 +223,22 @@ public abstract class BaseRecognizer { else if ( e instanceof MissingTokenException ) { MissingTokenException mte = (MissingTokenException)e; String tokenName=""; - if ( mte.expecting== Token.EOF ) { + if ( mte.expecting.member(Token.EOF) ) { tokenName = "EOF"; } else { - tokenName = tokenNames[mte.expecting]; + tokenName = tokenNames[mte.expecting.getSingleElement()]; } msg = "missing "+tokenName+" at "+getTokenErrorDisplay(e.token); } else if ( e instanceof MismatchedTokenException ) { MismatchedTokenException mte = (MismatchedTokenException)e; String tokenName=""; - if ( mte.expecting== Token.EOF ) { + if ( mte.expecting.member(Token.EOF) ) { tokenName = "EOF"; } else { - tokenName = tokenNames[mte.expecting]; + tokenName = tokenNames[mte.expecting.getSingleElement()]; } msg = "mismatched input "+getTokenErrorDisplay(e.token)+ " expecting "+tokenName; @@ -245,11 +246,11 @@ public abstract class BaseRecognizer { else if ( e instanceof MismatchedTreeNodeException ) { MismatchedTreeNodeException mtne = (MismatchedTreeNodeException)e; String tokenName=""; - if ( mtne.expecting==Token.EOF ) { + if ( mtne.expecting.member(Token.EOF) ) { tokenName = "EOF"; } else { - tokenName = tokenNames[mtne.expecting]; + tokenName = tokenNames[mtne.expecting.getSingleElement()]; } msg = "mismatched tree node: "+mtne.node+ " expecting "+tokenName; @@ -310,6 +311,7 @@ public abstract class BaseRecognizer { * so that it creates a new Java type. */ public String getTokenErrorDisplay(Token t) { + System.err.println("mmmm3"); String s = t.getText(); if ( s==null ) { if ( t.getType()==Token.EOF ) { @@ -331,7 +333,7 @@ public abstract class BaseRecognizer { * handle mismatched symbol exceptions but there could be a mismatched * token that the match() routine could not recover from. */ - public void recover(RecognitionException re) { + public void recover() { if ( state.lastErrorIndex==state.input.index() ) { // uh oh, another error at same token index; must be a case // where LT(1) is in the recovery token set so nothing is @@ -575,9 +577,9 @@ public abstract class BaseRecognizer { e = new UnwantedTokenException(this, ttype); /* System.err.println("recoverFromMismatchedToken deleting "+ - ((TokenStream)input).LT(1)+ - " since "+((TokenStream)input).LT(2)+" is what we want"); - */ + ((TokenStream)state.input).LT(1)+ + " since "+((TokenStream)state.input).LT(2)+" is what we want"); + */ beginResync(); state.input.consume(); // simply delete extra token endResync(); diff --git a/runtime/Java/src/org/antlr/v4/runtime/EarlyExitException.java b/runtime/Java/src/org/antlr/v4/runtime/EarlyExitException.java index bff54b797..60151af84 100644 --- a/runtime/Java/src/org/antlr/v4/runtime/EarlyExitException.java +++ b/runtime/Java/src/org/antlr/v4/runtime/EarlyExitException.java @@ -27,15 +27,14 @@ */ package org.antlr.v4.runtime; +import org.antlr.v4.runtime.misc.LABitSet; + /** The recognizer did not match anything for a (..)+ loop. */ public class EarlyExitException extends RecognitionException { - public int decisionNumber; - /** Used for remote debugger deserialization */ public EarlyExitException() {;} - public EarlyExitException(BaseRecognizer recognizer, int decisionNumber) { - super(recognizer); - this.decisionNumber = decisionNumber; + public EarlyExitException(BaseRecognizer recognizer, LABitSet expecting) { + super(recognizer, expecting); } } diff --git a/runtime/Java/src/org/antlr/v4/runtime/Lexer.java b/runtime/Java/src/org/antlr/v4/runtime/Lexer.java index 6f2721eca..b8cafabf0 100644 --- a/runtime/Java/src/org/antlr/v4/runtime/Lexer.java +++ b/runtime/Java/src/org/antlr/v4/runtime/Lexer.java @@ -227,7 +227,8 @@ public abstract class Lexer /* extends BaseRecognizer */ implements TokenSource String msg = null; if ( e instanceof MismatchedTokenException ) { MismatchedTokenException mte = (MismatchedTokenException)e; - msg = "mismatched character "+getCharErrorDisplay(e.c)+" expecting "+getCharErrorDisplay(mte.expecting); + msg = "mismatched character "+getCharErrorDisplay(e.c)+" expecting "+ + getCharErrorDisplay(mte.expecting.getSingleElement()); } else if ( e instanceof NoViableAltException ) { NoViableAltException nvae = (NoViableAltException)e; diff --git a/runtime/Java/src/org/antlr/v4/runtime/MismatchedSetException.java b/runtime/Java/src/org/antlr/v4/runtime/MismatchedSetException.java index b0e38a4c6..36294b7aa 100644 --- a/runtime/Java/src/org/antlr/v4/runtime/MismatchedSetException.java +++ b/runtime/Java/src/org/antlr/v4/runtime/MismatchedSetException.java @@ -30,14 +30,11 @@ package org.antlr.v4.runtime; import org.antlr.v4.runtime.misc.LABitSet; public class MismatchedSetException extends RecognitionException { - public LABitSet expecting; - /** Used for remote debugger deserialization */ public MismatchedSetException() {;} public MismatchedSetException(BaseRecognizer recognizer, LABitSet expecting) { - super(recognizer); - this.expecting = expecting; + super(recognizer, expecting); } public String toString() { diff --git a/runtime/Java/src/org/antlr/v4/runtime/MismatchedTokenException.java b/runtime/Java/src/org/antlr/v4/runtime/MismatchedTokenException.java index ab74e970c..1cbc3854e 100644 --- a/runtime/Java/src/org/antlr/v4/runtime/MismatchedTokenException.java +++ b/runtime/Java/src/org/antlr/v4/runtime/MismatchedTokenException.java @@ -27,18 +27,15 @@ */ package org.antlr.v4.runtime; -import org.antlr.runtime.Token; +import org.antlr.v4.runtime.misc.LABitSet; /** A mismatched char or Token or tree node */ public class MismatchedTokenException extends RecognitionException { - public int expecting = Token.INVALID_TOKEN_TYPE; - /** Used for remote debugger deserialization */ public MismatchedTokenException() {;} public MismatchedTokenException(BaseRecognizer recognizer, int expecting) { - super(recognizer); - this.expecting = expecting; + super(recognizer, LABitSet.of(expecting)); } public String toString() { diff --git a/runtime/Java/src/org/antlr/v4/runtime/MismatchedTreeNodeException.java b/runtime/Java/src/org/antlr/v4/runtime/MismatchedTreeNodeException.java index b58eb3a76..b8de268d4 100644 --- a/runtime/Java/src/org/antlr/v4/runtime/MismatchedTreeNodeException.java +++ b/runtime/Java/src/org/antlr/v4/runtime/MismatchedTreeNodeException.java @@ -27,19 +27,18 @@ */ package org.antlr.v4.runtime; +import org.antlr.v4.runtime.misc.LABitSet; + /** */ public class MismatchedTreeNodeException extends RecognitionException { - public int expecting; - public MismatchedTreeNodeException() { } public MismatchedTreeNodeException(BaseRecognizer recognizer, int expecting) { - super(recognizer); - this.expecting = expecting; + super(recognizer, LABitSet.of(expecting)); } public String toString() { diff --git a/runtime/Java/src/org/antlr/v4/runtime/MissingTokenException.java b/runtime/Java/src/org/antlr/v4/runtime/MissingTokenException.java index af8252a5c..96b255f59 100644 --- a/runtime/Java/src/org/antlr/v4/runtime/MissingTokenException.java +++ b/runtime/Java/src/org/antlr/v4/runtime/MissingTokenException.java @@ -41,7 +41,7 @@ public class MissingTokenException extends MismatchedTokenException { } public int getMissingType() { - return expecting; + return expecting.getSingleElement(); } public String toString() { diff --git a/runtime/Java/src/org/antlr/v4/runtime/NoViableAltException.java b/runtime/Java/src/org/antlr/v4/runtime/NoViableAltException.java index 834ee48e2..3d545bef9 100644 --- a/runtime/Java/src/org/antlr/v4/runtime/NoViableAltException.java +++ b/runtime/Java/src/org/antlr/v4/runtime/NoViableAltException.java @@ -28,32 +28,24 @@ package org.antlr.v4.runtime; import org.antlr.runtime.CharStream; +import org.antlr.v4.runtime.misc.LABitSet; public class NoViableAltException extends RecognitionException { - public String grammarDecisionDescription; - public int decisionNumber; - public int stateNumber; - /** Used for remote debugger deserialization */ public NoViableAltException() {;} public NoViableAltException(BaseRecognizer recognizer, - String grammarDecisionDescription, - int decisionNumber, - int stateNumber) + LABitSet expecting) { - super(recognizer); - this.grammarDecisionDescription = grammarDecisionDescription; - this.decisionNumber = decisionNumber; - this.stateNumber = stateNumber; + super(recognizer, expecting); } public String toString() { if ( recognizer.state.input instanceof CharStream) { - return "NoViableAltException('"+(char)getUnexpectedType()+"'@["+grammarDecisionDescription+"])"; + return "NoViableAltException('"+(char)getUnexpectedType()+", expecting "+expecting+")"; } else { - return "NoViableAltException("+getUnexpectedType()+"@["+grammarDecisionDescription+"])"; + return "NoViableAltException('"+getUnexpectedType()+", expecting "+expecting+")"; } } } diff --git a/runtime/Java/src/org/antlr/v4/runtime/RecognitionException.java b/runtime/Java/src/org/antlr/v4/runtime/RecognitionException.java index 316a952db..f09067688 100644 --- a/runtime/Java/src/org/antlr/v4/runtime/RecognitionException.java +++ b/runtime/Java/src/org/antlr/v4/runtime/RecognitionException.java @@ -35,6 +35,7 @@ import org.antlr.runtime.tree.CommonTree; import org.antlr.runtime.tree.Tree; import org.antlr.runtime.tree.TreeAdaptor; import org.antlr.runtime.tree.TreeNodeStream; +import org.antlr.v4.runtime.misc.LABitSet; /** The root of the ANTLR exception hierarchy. * @@ -70,8 +71,7 @@ public class RecognitionException extends RuntimeException { /** Who threw the exception? */ public BaseRecognizer recognizer; - /** What input stream did the error occur in? */ - //public transient IntStream input; + public LABitSet expecting; /** What is index of token/char were we looking at when the error occurred? */ public int index; @@ -110,7 +110,12 @@ public class RecognitionException extends RuntimeException { } public RecognitionException(BaseRecognizer recognizer) { + this(recognizer, null); + } + + public RecognitionException(BaseRecognizer recognizer, LABitSet expecting) { this.recognizer = recognizer; + this.expecting = expecting; IntStream input = recognizer.state.input; this.index = input.index(); if ( input instanceof TokenStream ) { @@ -131,10 +136,6 @@ public class RecognitionException extends RuntimeException { } } -// public RecognitionException(IntStream input) { -// this.input = input; -// } - protected void extractInformationFromTreeNodeStream(IntStream input) { TreeNodeStream nodes = (TreeNodeStream)input; this.node = nodes.LT(1); diff --git a/runtime/Java/src/org/antlr/v4/runtime/UnwantedTokenException.java b/runtime/Java/src/org/antlr/v4/runtime/UnwantedTokenException.java index 3235a0c1a..276fe3182 100644 --- a/runtime/Java/src/org/antlr/v4/runtime/UnwantedTokenException.java +++ b/runtime/Java/src/org/antlr/v4/runtime/UnwantedTokenException.java @@ -44,9 +44,6 @@ public class UnwantedTokenException extends MismatchedTokenException { public String toString() { String exp = ", expected "+expecting; - if ( expecting==Token.INVALID_TOKEN_TYPE ) { - exp = ""; - } if ( token==null ) { return "UnwantedTokenException(found="+null+exp+")"; } diff --git a/runtime/Java/src/org/antlr/v4/runtime/misc/LABitSet.java b/runtime/Java/src/org/antlr/v4/runtime/misc/LABitSet.java index 3c3836667..fe27b6780 100644 --- a/runtime/Java/src/org/antlr/v4/runtime/misc/LABitSet.java +++ b/runtime/Java/src/org/antlr/v4/runtime/misc/LABitSet.java @@ -43,6 +43,12 @@ public class LABitSet { this.EOF = EOF; } + public static LABitSet of(int el) { + LABitSet s = new LABitSet(el + 1); + s.add(el); + return s; + } + /** or this element into this set (grow as necessary to accommodate) */ public void add(int el) { //System.out.println("add("+el+")"); @@ -57,7 +63,7 @@ public class LABitSet { } public boolean member(int el) { - if ( el == Token.EOF && EOF ) return true; + if ( el == Token.EOF ) return EOF; int n = wordNumber(el); if (n >= bits.length) return false; return (bits[n] & bitMask(el)) != 0; @@ -123,24 +129,35 @@ public class LABitSet { bits = newbits; } + /** Get the first element you find and return it. */ + public int getSingleElement() { + for (int i = 0; i < (bits.length << LOG_BITS); i++) { + if (member(i)) { + return i; + } + } + return Token.INVALID_TOKEN_TYPE; + } + /** Transform a bit set into a string by formatting each element as an integer * separator The string to put in between elements * @return A commma-separated list of values */ public String toString() { + System.out.println("toStr"); StringBuffer buf = new StringBuffer(); String separator = ","; boolean havePrintedAnElement = false; buf.append('{'); + if ( EOF ) { buf.append("EOF"); havePrintedAnElement=true; } for (int i = 0; i < (bits.length << LOG_BITS); i++) { + System.out.println("i="+i); if (member(i)) { - if (i > 0 && havePrintedAnElement ) { + if ( havePrintedAnElement ) { buf.append(separator); } - else { - buf.append(i); - } + buf.append(i); havePrintedAnElement = true; } } diff --git a/tool/resources/org/antlr/v4/tool/templates/codegen/Java/Java.stg b/tool/resources/org/antlr/v4/tool/templates/codegen/Java/Java.stg index b4218e660..e400d0236 100644 --- a/tool/resources/org/antlr/v4/tool/templates/codegen/Java/Java.stg +++ b/tool/resources/org/antlr/v4/tool/templates/codegen/Java/Java.stg @@ -80,6 +80,10 @@ RuleFunction(f,code,decls,context,scope,namedActions,finallyAction) ::= << try { } + catch (RecognitionException re) { + reportError(re); + recover(); + } finally { _stack.pop();}; separator="\n"> @@ -94,45 +98,45 @@ CodeBlock(c, ops) ::= << >> -LL1Choice(choice, alts) ::= << -switch ( input.LA(1) ) { +LL1Choice(choice, alts, error) ::= << +switch ( state.input.LA(1) ) { break;}; separator="\n"> default : - error + } >> // follow set included as choice by analysis LL1OptionalBlock ::= LL1Choice -LL1OptionalBlockSingleAlt(choice, expr, alts, preamble) ::= << +LL1OptionalBlockSingleAlt(choice, expr, alts, preamble, error) ::= << if ( ) { } else { - NoViableAltException nvae = new NoViableAltException("", 4, 0, input); + } >> -LL1StarBlock(choice, alts) ::= << +LL1StarBlock(choice, alts, error) ::= << : while (true) { - switch ( input.LA(1) ) { + switch ( state.input.LA(1) ) { break;}; separator="\n"> break ; default : - error + } } >> -LL1StarBlockSingleAlt(choice, expr, alts, preamble, iteration) ::= << +LL1StarBlockSingleAlt(choice, expr, alts, preamble, iteration, error) ::= << while ( ) { @@ -140,24 +144,26 @@ while ( ) { } >> -LL1PlusBlock(choice, alts) ::= << +LL1PlusBlock(choice, alts, error, earlyExitError) ::= << int = 0; : while (true) { - switch ( input.LA(1) ) { + switch ( state.input.LA(1) ) { break;}; separator="\n"> if ( >= 1 ) break ; - else error + else default : - error + } } >> -LL1PlusBlockSingleAlt(choice, expr, alts, preamble, iteration) ::= << +LL1PlusBlockSingleAlt(choice, expr, alts, preamble, iteration, + error, earlyExitError) ::= +<< do { @@ -165,8 +171,11 @@ do { } while ( ); >> +ThrowNoViableAlt(t) ::= "throw new NoViableAlt(this, );" +ThrowEarlyExitException(t) ::= "throw new ThrowEarlyExitException(this, );" + TestSet(s) ::= << -.member(input.LA(1)) +.member(state.input.LA(1)) >> TestSetInline(s) ::= << @@ -190,7 +199,7 @@ MatchToken(m) ::= << Action(a, chunks) ::= "" SemPred(p) ::= << -if (!()) throw new FailedPredicateException(input, "", ""); +if (!()) throw new FailedPredicateException(this,"", ""); >> ActionText(t) ::= "" @@ -236,7 +245,7 @@ TokenDecl(t) ::= "Token ;" TokenListDecl(t) ::= "List\ = new ArrayList\();" RuleContextDecl(r) ::= " ;" -CaptureNextToken(d) ::= " = input.LA(1);" +CaptureNextToken(d) ::= " = state.input.LA(1);" StructDecl(s,attrs) ::= << public static class extends ParserRuleContext { diff --git a/tool/src/org/antlr/v4/analysis/AnalysisPipeline.java b/tool/src/org/antlr/v4/analysis/AnalysisPipeline.java index 029a4a5c2..9e23b7742 100644 --- a/tool/src/org/antlr/v4/analysis/AnalysisPipeline.java +++ b/tool/src/org/antlr/v4/analysis/AnalysisPipeline.java @@ -51,7 +51,7 @@ public class AnalysisPipeline { System.out.println("\nDECISION "+s.decision); // TRY LINEAR APPROX FIXED LOOKAHEAD FIRST - LinearApproximator lin = new LinearApproximator(g, s.decision); + LinearApproximator lin = new LinearApproximator(g); DFA dfa = lin.createDFA(s); // IF NOT LINEAR APPROX, TRY NFA TO DFA CONVERSION diff --git a/tool/src/org/antlr/v4/analysis/LinearApproximator.java b/tool/src/org/antlr/v4/analysis/LinearApproximator.java index 74af12e75..8619bd03f 100644 --- a/tool/src/org/antlr/v4/analysis/LinearApproximator.java +++ b/tool/src/org/antlr/v4/analysis/LinearApproximator.java @@ -65,13 +65,13 @@ public class LinearApproximator { */ OrderedHashSet[] configs; - public LinearApproximator(Grammar g, int decision) { + public LinearApproximator(Grammar g) { this.g = g; this.decision = decision; } - public LinearApproximator(Grammar g, int decision, int k) { - this(g,decision); + public LinearApproximator(Grammar g, int k) { + this(g); max_k = k; } diff --git a/tool/src/org/antlr/v4/codegen/OutputModelFactory.java b/tool/src/org/antlr/v4/codegen/OutputModelFactory.java index 647273329..a8effaae8 100644 --- a/tool/src/org/antlr/v4/codegen/OutputModelFactory.java +++ b/tool/src/org/antlr/v4/codegen/OutputModelFactory.java @@ -105,4 +105,11 @@ public abstract class OutputModelFactory { BitSetDecl b = new BitSetDecl(this, name, set); return b; } + + public BitSetDecl createExpectingBitSet(GrammarAST ast, int decision, IntervalSet set) { + String inRuleName = ast.nfaState.rule.name; + String name = "EXPECTING_in_"+inRuleName+"_"+decision; + BitSetDecl b = new BitSetDecl(this, name, set); + return b; + } } diff --git a/tool/src/org/antlr/v4/codegen/OutputModelWalker.java b/tool/src/org/antlr/v4/codegen/OutputModelWalker.java index a002fdd7e..4784466e9 100644 --- a/tool/src/org/antlr/v4/codegen/OutputModelWalker.java +++ b/tool/src/org/antlr/v4/codegen/OutputModelWalker.java @@ -11,18 +11,32 @@ import org.stringtemplate.v4.misc.BlankST; import java.lang.reflect.Field; import java.util.*; -/** Convert output model tree to template hierarchy */ +/** Convert an output model tree to template hierarchy by walking + * the output model. Each output model object has a corresponding template + * of the same name. An output model object can have nested objects. + * We identify those nested objects by the list of arguments in the template + * definition. For example, here is the definition of the parser template: + * + * Parser(parser, scopes, funcs) ::= <<...>> + * + * The first template argument is always the output model object from which + * this walker will create the template. Any other arguments identify + * the field names within the output model object of nested model objects. + * So, in this case, template Parser is saying that output model object + * Parser has two fields the walker should chase called a scopes and funcs. + * + * This simple mechanism means we don't have to include code in every + * output model object that says how to create the corresponding template. + */ public class OutputModelWalker { Tool tool; STGroup templates; - //Map modelToTemplateMap; public OutputModelWalker(Tool tool, STGroup templates) { this.tool = tool; this.templates = templates; - //this.modelToTemplateMap = modelToTemplateMap; } public ST walk(OutputModelObject omo) { @@ -42,28 +56,17 @@ public class OutputModelWalker { return st; } - List kids = omo.getChildren(); - LinkedHashMap formalArgs = st.impl.formalArguments; Set argNames = formalArgs.keySet(); - Iterator it = argNames.iterator(); + Iterator arg_it = argNames.iterator(); // PASS IN OUTPUT MODEL OBJECT TO TEMPLATE - String modelArgName = it.next(); // ordered so this is first arg + String modelArgName = arg_it.next(); // ordered so this is first arg st.add(modelArgName, omo); - // ENSURE TEMPLATE ARGS AND CHILD FIELDS MATCH UP - while ( it.hasNext() ) { - String argName = it.next(); - if ( kids==null || !kids.contains(argName) ) { - tool.errMgr.toolError(ErrorType.CODE_TEMPLATE_ARG_ISSUE, templateName, argName); - return st; - } - } - // COMPUTE STs FOR EACH NESTED MODEL OBJECT NAMED AS ARG BY TEMPLATE - if ( kids!=null ) for (String fieldName : kids) { - if ( !argNames.contains(fieldName) ) continue; // they won't use so don't compute + while ( arg_it.hasNext() ) { + String fieldName = arg_it.next(); //System.out.println("computing ST for field "+fieldName+" of "+omo.getClass()); try { Field fi = omo.getClass().getField(fieldName); diff --git a/tool/src/org/antlr/v4/codegen/src/Action.java b/tool/src/org/antlr/v4/codegen/src/Action.java index c3739a403..6756231c6 100644 --- a/tool/src/org/antlr/v4/codegen/src/Action.java +++ b/tool/src/org/antlr/v4/codegen/src/Action.java @@ -6,7 +6,6 @@ import org.antlr.v4.codegen.src.actions.ActionChunk; import org.antlr.v4.tool.ActionAST; import org.antlr.v4.tool.GrammarAST; -import java.util.ArrayList; import java.util.List; /** */ @@ -20,13 +19,13 @@ public class Action extends SrcOp { System.out.println("actions="+chunks); } - @Override - public List getChildren() { - final List sup = super.getChildren(); - return new ArrayList() {{ - if ( sup!=null ) addAll(sup); - add("chunks"); - }}; - } +// @Override +// public List getChildren() { +// final List sup = super.getChildren(); +// return new ArrayList() {{ +// if ( sup!=null ) addAll(sup); +// add("chunks"); +// }}; +// } } diff --git a/tool/src/org/antlr/v4/codegen/src/BitSetDecl.java b/tool/src/org/antlr/v4/codegen/src/BitSetDecl.java index a4858ed80..f132dda3b 100644 --- a/tool/src/org/antlr/v4/codegen/src/BitSetDecl.java +++ b/tool/src/org/antlr/v4/codegen/src/BitSetDecl.java @@ -2,10 +2,11 @@ package org.antlr.v4.codegen.src; import org.antlr.v4.codegen.OutputModelFactory; import org.antlr.v4.misc.IntervalSet; +import org.antlr.v4.runtime.misc.LABitSet; /** */ public class BitSetDecl extends Decl { - public Object fset; // runtime bitset + public LABitSet fset; // runtime bitset public BitSetDecl(OutputModelFactory factory, String name, IntervalSet fset) { super(factory, name); this.fset = fset.toRuntimeBitSet(); diff --git a/tool/src/org/antlr/v4/codegen/src/Choice.java b/tool/src/org/antlr/v4/codegen/src/Choice.java index 96eeb34d5..5cd8b97c7 100644 --- a/tool/src/org/antlr/v4/codegen/src/Choice.java +++ b/tool/src/org/antlr/v4/codegen/src/Choice.java @@ -1,7 +1,10 @@ package org.antlr.v4.codegen.src; +import org.antlr.v4.analysis.LinearApproximator; import org.antlr.v4.automata.BlockStartState; +import org.antlr.v4.automata.NFAState; import org.antlr.v4.codegen.OutputModelFactory; +import org.antlr.v4.misc.IntervalSet; import org.antlr.v4.tool.GrammarAST; import java.util.ArrayList; @@ -12,12 +15,20 @@ public abstract class Choice extends SrcOp { public int decision; public List alts; public List preamble; + public IntervalSet expecting; + public ThrowNoViableAlt error; public Choice(OutputModelFactory factory, GrammarAST blkOrEbnfRootAST, List alts) { - this.factory = factory; - this.ast = blkOrEbnfRootAST; + super(factory, blkOrEbnfRootAST); this.alts = alts; this.decision = ((BlockStartState)blkOrEbnfRootAST.nfaState).decision; + + LinearApproximator approx = new LinearApproximator(factory.g); + NFAState decisionState = ast.nfaState; + expecting = approx.LOOK(decisionState); + System.out.println("expecting="+expecting); + + this.error = new ThrowNoViableAlt(factory, blkOrEbnfRootAST, expecting); } public void addPreambleOp(SrcOp op) { @@ -25,9 +36,10 @@ public abstract class Choice extends SrcOp { preamble.add(op); } - @Override - public List getChildren() { - final List sup = super.getChildren(); - return new ArrayList() {{ if ( sup!=null ) addAll(sup); add("alts"); add("preamble"); }}; - } +// @Override +// public List getChildren() { +// final List sup = super.getChildren(); +// return new ArrayList() {{ if ( sup!=null ) addAll(sup); +// add("alts"); add("preamble"); add("error"); }}; +// } } diff --git a/tool/src/org/antlr/v4/codegen/src/CodeBlock.java b/tool/src/org/antlr/v4/codegen/src/CodeBlock.java index 236f2beda..ce51d07ab 100644 --- a/tool/src/org/antlr/v4/codegen/src/CodeBlock.java +++ b/tool/src/org/antlr/v4/codegen/src/CodeBlock.java @@ -20,9 +20,9 @@ public class CodeBlock extends SrcOp { this(factory, new ArrayList() {{ add(elem); }}); } - @Override - public List getChildren() { - final List sup = super.getChildren(); - return new ArrayList() {{ if ( sup!=null ) addAll(sup); add("ops"); }}; - } +// @Override +// public List getChildren() { +// final List sup = super.getChildren(); +// return new ArrayList() {{ if ( sup!=null ) addAll(sup); add("ops"); }}; +// } } diff --git a/tool/src/org/antlr/v4/codegen/src/InvokeRule.java b/tool/src/org/antlr/v4/codegen/src/InvokeRule.java index dce9f9075..4c0aaf6b4 100644 --- a/tool/src/org/antlr/v4/codegen/src/InvokeRule.java +++ b/tool/src/org/antlr/v4/codegen/src/InvokeRule.java @@ -48,7 +48,7 @@ public class InvokeRule extends SrcOp implements LabeledOp { } // compute follow - LinearApproximator approx = new LinearApproximator(factory.g, -1); + LinearApproximator approx = new LinearApproximator(factory.g); IntervalSet fset = approx.LOOK(ast.nfaState.transition(0).target); System.out.println("follow="+follow); follow = factory.createFollowBitSet(ast, fset); diff --git a/tool/src/org/antlr/v4/codegen/src/LL1Choice.java b/tool/src/org/antlr/v4/codegen/src/LL1Choice.java index 9d0a20bf2..696cc4ded 100644 --- a/tool/src/org/antlr/v4/codegen/src/LL1Choice.java +++ b/tool/src/org/antlr/v4/codegen/src/LL1Choice.java @@ -15,6 +15,7 @@ public class LL1Choice extends Choice { public List altLook; /** Lookahead for each alt 1..n */ public IntervalSet[] altLookSets; + public LL1Choice(OutputModelFactory factory, GrammarAST blkAST, List alts) { super(factory, blkAST, alts); DFA dfa = factory.g.decisionDFAs.get(decision); diff --git a/tool/src/org/antlr/v4/codegen/src/LL1Loop.java b/tool/src/org/antlr/v4/codegen/src/LL1Loop.java index 64b2d7d35..f9f44a4ef 100644 --- a/tool/src/org/antlr/v4/codegen/src/LL1Loop.java +++ b/tool/src/org/antlr/v4/codegen/src/LL1Loop.java @@ -35,12 +35,12 @@ public abstract class LL1Loop extends LL1Choice { } } - @Override - public List getChildren() { - final List sup = super.getChildren(); - return new ArrayList() {{ - if ( sup!=null ) addAll(sup); add("expr"); add("iteration"); - }}; - } +// @Override +// public List getChildren() { +// final List sup = super.getChildren(); +// return new ArrayList() {{ +// if ( sup!=null ) addAll(sup); add("expr"); add("iteration"); +// }}; +// } } diff --git a/tool/src/org/antlr/v4/codegen/src/LL1OptionalBlockSingleAlt.java b/tool/src/org/antlr/v4/codegen/src/LL1OptionalBlockSingleAlt.java index 6fd7aba80..26c7a0808 100644 --- a/tool/src/org/antlr/v4/codegen/src/LL1OptionalBlockSingleAlt.java +++ b/tool/src/org/antlr/v4/codegen/src/LL1OptionalBlockSingleAlt.java @@ -4,7 +4,6 @@ import org.antlr.v4.codegen.OutputModelFactory; import org.antlr.v4.misc.IntervalSet; import org.antlr.v4.tool.GrammarAST; -import java.util.ArrayList; import java.util.List; /** */ @@ -21,9 +20,9 @@ public class LL1OptionalBlockSingleAlt extends LL1Choice { } } - @Override - public List getChildren() { - final List sup = super.getChildren(); - return new ArrayList() {{ if ( sup!=null ) addAll(sup); add("expr"); }}; - } +// @Override +// public List getChildren() { +// final List sup = super.getChildren(); +// return new ArrayList() {{ if ( sup!=null ) addAll(sup); add("expr"); }}; +// } } diff --git a/tool/src/org/antlr/v4/codegen/src/LL1PlusBlock.java b/tool/src/org/antlr/v4/codegen/src/LL1PlusBlock.java index 629650059..8c75aca11 100644 --- a/tool/src/org/antlr/v4/codegen/src/LL1PlusBlock.java +++ b/tool/src/org/antlr/v4/codegen/src/LL1PlusBlock.java @@ -13,6 +13,8 @@ public class LL1PlusBlock extends LL1Loop { public String loopLabel; public String loopCounterVar; public String[] exitLook; + public ThrowEarlyExitException earlyExitError; + public LL1PlusBlock(OutputModelFactory factory, GrammarAST blkAST, List alts) { super(factory, blkAST, alts); PlusBlockStartState plusStart = (PlusBlockStartState)blkAST.nfaState; @@ -24,5 +26,15 @@ public class LL1PlusBlock extends LL1Loop { loopLabel = factory.gen.target.getLoopLabel(blkAST); loopCounterVar = factory.gen.target.getLoopCounter(blkAST); + + this.earlyExitError = new ThrowEarlyExitException(factory, blkAST, expecting); } + +// @Override +// public List getChildren() { +// final List sup = super.getChildren(); +// return new ArrayList() {{ +// if ( sup!=null ) addAll(sup); add("earlyExitError"); +// }}; +// } } diff --git a/tool/src/org/antlr/v4/codegen/src/LL1PlusBlockSingleAlt.java b/tool/src/org/antlr/v4/codegen/src/LL1PlusBlockSingleAlt.java index beaa0c2ca..bd871f4f1 100644 --- a/tool/src/org/antlr/v4/codegen/src/LL1PlusBlockSingleAlt.java +++ b/tool/src/org/antlr/v4/codegen/src/LL1PlusBlockSingleAlt.java @@ -8,10 +8,18 @@ import java.util.List; /** */ public class LL1PlusBlockSingleAlt extends LL1Loop { + public ThrowEarlyExitException earlyExitError; public LL1PlusBlockSingleAlt(OutputModelFactory factory, GrammarAST blkAST, List alts) { super(factory, blkAST, alts); IntervalSet loopBackLook = altLookSets[2]; // loop exit is alt 1 addLookaheadTempVar(loopBackLook); } +// @Override +// public List getChildren() { +// final List sup = super.getChildren(); +// return new ArrayList() {{ +// if ( sup!=null ) addAll(sup); add("earlyExitError"); +// }}; +// } } diff --git a/tool/src/org/antlr/v4/codegen/src/MatchToken.java b/tool/src/org/antlr/v4/codegen/src/MatchToken.java index 36dc875a0..30db45ae0 100644 --- a/tool/src/org/antlr/v4/codegen/src/MatchToken.java +++ b/tool/src/org/antlr/v4/codegen/src/MatchToken.java @@ -39,7 +39,7 @@ public class MatchToken extends SrcOp implements LabeledOp { factory.currentRule.peek().addDecl(d); } - LinearApproximator approx = new LinearApproximator(factory.g, -1); + LinearApproximator approx = new LinearApproximator(factory.g); IntervalSet fset = approx.LOOK(ast.nfaState.transition(0).target); System.out.println("follow="+fset); follow = factory.createFollowBitSet(ast, fset); diff --git a/tool/src/org/antlr/v4/codegen/src/OutputModelObject.java b/tool/src/org/antlr/v4/codegen/src/OutputModelObject.java index 51112d81f..da145420a 100644 --- a/tool/src/org/antlr/v4/codegen/src/OutputModelObject.java +++ b/tool/src/org/antlr/v4/codegen/src/OutputModelObject.java @@ -3,8 +3,6 @@ package org.antlr.v4.codegen.src; import org.antlr.v4.codegen.OutputModelFactory; import org.antlr.v4.tool.GrammarAST; -import java.util.List; - /** */ public abstract class OutputModelObject { public OutputModelFactory factory; @@ -27,7 +25,7 @@ public abstract class OutputModelObject { * of type OutputModelObject that should be walked to complete model. */ // TODO: make list of Fields to avoid repeated look up - public List getChildren() { - return null; - } +// public List getChildren() { +// return null; +// } } diff --git a/tool/src/org/antlr/v4/codegen/src/Parser.java b/tool/src/org/antlr/v4/codegen/src/Parser.java index 7eabdc6cc..c42b6e3ab 100644 --- a/tool/src/org/antlr/v4/codegen/src/Parser.java +++ b/tool/src/org/antlr/v4/codegen/src/Parser.java @@ -32,9 +32,9 @@ public class Parser extends OutputModelObject { for (Rule r : factory.g.rules.values()) funcs.add( new RuleFunction(factory, r) ); } - @Override - public List getChildren() { - final List sup = super.getChildren(); - return new ArrayList() {{ if ( sup!=null ) addAll(sup); add("funcs"); add("scopes"); }}; - } +// @Override +// public List getChildren() { +// final List sup = super.getChildren(); +// return new ArrayList() {{ if ( sup!=null ) addAll(sup); add("funcs"); add("scopes"); }}; +// } } diff --git a/tool/src/org/antlr/v4/codegen/src/ParserFile.java b/tool/src/org/antlr/v4/codegen/src/ParserFile.java index b99b25fdd..6abaa9a8f 100644 --- a/tool/src/org/antlr/v4/codegen/src/ParserFile.java +++ b/tool/src/org/antlr/v4/codegen/src/ParserFile.java @@ -36,15 +36,15 @@ public class ParserFile extends OutputModelObject { bitSetDecls.add(b); } - @Override - public List getChildren() { - final List sup = super.getChildren(); - return new ArrayList() {{ - if ( sup!=null ) addAll(sup); - add("parser"); - add("dfaDecls"); - add("namedActions"); - add("bitSetDecls"); - }}; - } +// @Override +// public List getChildren() { +// final List sup = super.getChildren(); +// return new ArrayList() {{ +// if ( sup!=null ) addAll(sup); +// add("parser"); +// add("dfaDecls"); +// add("namedActions"); +// add("bitSetDecls"); +// }}; +// } } diff --git a/tool/src/org/antlr/v4/codegen/src/RuleFunction.java b/tool/src/org/antlr/v4/codegen/src/RuleFunction.java index c986f45b2..3fdf34c44 100644 --- a/tool/src/org/antlr/v4/codegen/src/RuleFunction.java +++ b/tool/src/org/antlr/v4/codegen/src/RuleFunction.java @@ -105,13 +105,13 @@ public class RuleFunction extends OutputModelObject { decls.add(d); } - @Override - public List getChildren() { - final List sup = super.getChildren(); - return new ArrayList() {{ - if ( sup!=null ) addAll(sup); - add("context"); add("scope"); add("decls"); add("code"); - add("finallyAction"); add("namedActions"); - }}; - } +// @Override +// public List getChildren() { +// final List sup = super.getChildren(); +// return new ArrayList() {{ +// if ( sup!=null ) addAll(sup); +// add("context"); add("scope"); add("decls"); add("code"); +// add("finallyAction"); add("namedActions"); +// }}; +// } } diff --git a/tool/src/org/antlr/v4/codegen/src/StructDecl.java b/tool/src/org/antlr/v4/codegen/src/StructDecl.java index 53db2dda5..da7452669 100644 --- a/tool/src/org/antlr/v4/codegen/src/StructDecl.java +++ b/tool/src/org/antlr/v4/codegen/src/StructDecl.java @@ -19,11 +19,11 @@ public class StructDecl extends Decl { } } - @Override - public List getChildren() { - final List sup = super.getChildren(); - return new ArrayList() {{ - if ( sup!=null ) addAll(sup); add("attrs"); - }}; - } +// @Override +// public List getChildren() { +// final List sup = super.getChildren(); +// return new ArrayList() {{ +// if ( sup!=null ) addAll(sup); add("attrs"); +// }}; +// } } diff --git a/tool/src/org/antlr/v4/codegen/src/ThrowEarlyExitException.java b/tool/src/org/antlr/v4/codegen/src/ThrowEarlyExitException.java new file mode 100644 index 000000000..691031ab8 --- /dev/null +++ b/tool/src/org/antlr/v4/codegen/src/ThrowEarlyExitException.java @@ -0,0 +1,12 @@ +package org.antlr.v4.codegen.src; + +import org.antlr.v4.codegen.OutputModelFactory; +import org.antlr.v4.misc.IntervalSet; +import org.antlr.v4.tool.GrammarAST; + +/** */ +public class ThrowEarlyExitException extends ThrowRecognitionException { + public ThrowEarlyExitException(OutputModelFactory factory, GrammarAST ast, IntervalSet expecting) { + super(factory, ast, expecting); + } +} diff --git a/tool/src/org/antlr/v4/codegen/src/ThrowNoViableAlt.java b/tool/src/org/antlr/v4/codegen/src/ThrowNoViableAlt.java new file mode 100644 index 000000000..481edec43 --- /dev/null +++ b/tool/src/org/antlr/v4/codegen/src/ThrowNoViableAlt.java @@ -0,0 +1,14 @@ +package org.antlr.v4.codegen.src; + +import org.antlr.v4.codegen.OutputModelFactory; +import org.antlr.v4.misc.IntervalSet; +import org.antlr.v4.tool.GrammarAST; + +/** */ +public class ThrowNoViableAlt extends ThrowRecognitionException { + public ThrowNoViableAlt(OutputModelFactory factory, GrammarAST blkOrEbnfRootAST, + IntervalSet expecting) + { + super(factory, blkOrEbnfRootAST, expecting); + } +} diff --git a/tool/src/org/antlr/v4/codegen/src/ThrowRecognitionException.java b/tool/src/org/antlr/v4/codegen/src/ThrowRecognitionException.java new file mode 100644 index 000000000..d154159db --- /dev/null +++ b/tool/src/org/antlr/v4/codegen/src/ThrowRecognitionException.java @@ -0,0 +1,25 @@ +package org.antlr.v4.codegen.src; + +import org.antlr.v4.automata.BlockStartState; +import org.antlr.v4.codegen.OutputModelFactory; +import org.antlr.v4.misc.IntervalSet; +import org.antlr.v4.tool.GrammarAST; + +/** */ +public class ThrowRecognitionException extends SrcOp { + public int decision; + public String grammarFile; + public int grammarLine; + public int grammarCharPosInLine; + public BitSetDecl expecting; + + public ThrowRecognitionException(OutputModelFactory factory, GrammarAST ast, IntervalSet expecting) { + super(factory, ast); + this.decision = ((BlockStartState)ast.nfaState).decision; + grammarLine = ast.getLine(); + grammarLine = ast.getCharPositionInLine(); + grammarFile = factory.g.fileName; + this.expecting = factory.createExpectingBitSet(ast, decision, expecting); + factory.defineBitSet(this.expecting); + } +} diff --git a/tool/src/org/antlr/v4/codegen/src/actions/DynScopeAttrRef_index.java b/tool/src/org/antlr/v4/codegen/src/actions/DynScopeAttrRef_index.java index ac2203318..9c1248489 100644 --- a/tool/src/org/antlr/v4/codegen/src/actions/DynScopeAttrRef_index.java +++ b/tool/src/org/antlr/v4/codegen/src/actions/DynScopeAttrRef_index.java @@ -1,6 +1,5 @@ package org.antlr.v4.codegen.src.actions; -import java.util.ArrayList; import java.util.List; /** */ @@ -11,12 +10,12 @@ public class DynScopeAttrRef_index extends DynScopeAttrRef { this.indexChunks = indexChunks; } - @Override - public List getChildren() { - final List sup = super.getChildren(); - return new ArrayList() {{ - if ( sup!=null ) addAll(sup); - add("indexChunks"); - }}; - } +// @Override +// public List getChildren() { +// final List sup = super.getChildren(); +// return new ArrayList() {{ +// if ( sup!=null ) addAll(sup); +// add("indexChunks"); +// }}; +// } } diff --git a/tool/src/org/antlr/v4/codegen/src/actions/SetAttr.java b/tool/src/org/antlr/v4/codegen/src/actions/SetAttr.java index 6fb97efa5..7138da8a9 100644 --- a/tool/src/org/antlr/v4/codegen/src/actions/SetAttr.java +++ b/tool/src/org/antlr/v4/codegen/src/actions/SetAttr.java @@ -1,6 +1,5 @@ package org.antlr.v4.codegen.src.actions; -import java.util.ArrayList; import java.util.List; /** */ @@ -13,12 +12,12 @@ public class SetAttr extends ActionChunk { this.rhsChunks = rhsChunks; } - @Override - public List getChildren() { - final List sup = super.getChildren(); - return new ArrayList() {{ - if ( sup!=null ) addAll(sup); - add("rhsChunks"); - }}; - } +// @Override +// public List getChildren() { +// final List sup = super.getChildren(); +// return new ArrayList() {{ +// if ( sup!=null ) addAll(sup); +// add("rhsChunks"); +// }}; +// } } diff --git a/tool/src/org/antlr/v4/codegen/src/actions/SetDynScopeAttr.java b/tool/src/org/antlr/v4/codegen/src/actions/SetDynScopeAttr.java index 85d4f7a05..e6860f629 100644 --- a/tool/src/org/antlr/v4/codegen/src/actions/SetDynScopeAttr.java +++ b/tool/src/org/antlr/v4/codegen/src/actions/SetDynScopeAttr.java @@ -1,6 +1,5 @@ package org.antlr.v4.codegen.src.actions; -import java.util.ArrayList; import java.util.List; /** */ @@ -14,13 +13,13 @@ public class SetDynScopeAttr extends ActionChunk { this.attr = attr; this.rhsChunks = rhsChunks; } - - @Override - public List getChildren() { - final List sup = super.getChildren(); - return new ArrayList() {{ - if ( sup!=null ) addAll(sup); - add("rhsChunks"); - }}; - } +// +// @Override +// public List getChildren() { +// final List sup = super.getChildren(); +// return new ArrayList() {{ +// if ( sup!=null ) addAll(sup); +// add("rhsChunks"); +// }}; +// } } diff --git a/tool/src/org/antlr/v4/codegen/src/actions/SetDynScopeAttr_index.java b/tool/src/org/antlr/v4/codegen/src/actions/SetDynScopeAttr_index.java index 3a1621e18..ce8878115 100644 --- a/tool/src/org/antlr/v4/codegen/src/actions/SetDynScopeAttr_index.java +++ b/tool/src/org/antlr/v4/codegen/src/actions/SetDynScopeAttr_index.java @@ -1,6 +1,5 @@ package org.antlr.v4.codegen.src.actions; -import java.util.ArrayList; import java.util.List; /** */ @@ -11,12 +10,12 @@ public class SetDynScopeAttr_index extends SetDynScopeAttr { this.indexChunks = indexChunks; } - @Override - public List getChildren() { - final List sup = super.getChildren(); - return new ArrayList() {{ - if ( sup!=null ) addAll(sup); - add("indexChunks"); - }}; - } +// @Override +// public List getChildren() { +// final List sup = super.getChildren(); +// return new ArrayList() {{ +// if ( sup!=null ) addAll(sup); +// add("indexChunks"); +// }}; +// } } diff --git a/tool/src/org/antlr/v4/parse/ANTLRLexer.java b/tool/src/org/antlr/v4/parse/ANTLRLexer.java index f3c37e511..8ce066ec4 100644 --- a/tool/src/org/antlr/v4/parse/ANTLRLexer.java +++ b/tool/src/org/antlr/v4/parse/ANTLRLexer.java @@ -1,4 +1,4 @@ -// $ANTLR ${project.version} ${buildNumber} ANTLRLexer.g 2010-05-19 15:07:23 +// $ANTLR ${project.version} ${buildNumber} ANTLRLexer.g 2010-05-21 18:40:58 /* [The "BSD licence"] @@ -264,7 +264,7 @@ public class ANTLRLexer extends Lexer { if ( (( input.LA(2) != '/')) ) { alt3=1; } - else if ( ((( true )||(( true )&&( !(input.LA(1) == '*' && input.LA(2) == '/') )))) ) { + else if ( (((( true )&&( !(input.LA(1) == '*' && input.LA(2) == '/') ))||( true ))) ) { alt3=2; } else { diff --git a/tool/src/org/antlr/v4/parse/ANTLRParser.g b/tool/src/org/antlr/v4/parse/ANTLRParser.g index 585874549..218894235 100644 --- a/tool/src/org/antlr/v4/parse/ANTLRParser.g +++ b/tool/src/org/antlr/v4/parse/ANTLRParser.g @@ -567,11 +567,11 @@ element } @after { paraphrases.pop(); } : labeledElement - ( ebnfSuffix -> ^( ebnfSuffix ^(BLOCK[$labeledElement.start,"BLOCK"] ^(ALT labeledElement ) )) + ( ebnfSuffix -> ^( ebnfSuffix ^(BLOCK[$labeledElement.start,"BLOCK"] ^(ALT labeledElement ) )) | -> labeledElement ) | atom - ( ebnfSuffix -> ^( ebnfSuffix ^(BLOCK[$atom.start,"BLOCK"] ^(ALT atom) ) ) + ( ebnfSuffix -> ^( ebnfSuffix ^(BLOCK[$atom.start,"BLOCK"] ^(ALT atom) ) ) | -> atom ) | ebnf @@ -581,7 +581,7 @@ element | -> SEMPRED ) | treeSpec - ( ebnfSuffix -> ^( ebnfSuffix ^(BLOCK[$treeSpec.start,"BLOCK"] ^(ALT treeSpec ) ) ) + ( ebnfSuffix -> ^( ebnfSuffix ^(BLOCK[$treeSpec.start,"BLOCK"] ^(ALT treeSpec ) ) ) | -> treeSpec ) ; diff --git a/tool/src/org/antlr/v4/parse/ANTLRParser.java b/tool/src/org/antlr/v4/parse/ANTLRParser.java index d1afa55e4..0387d3054 100644 --- a/tool/src/org/antlr/v4/parse/ANTLRParser.java +++ b/tool/src/org/antlr/v4/parse/ANTLRParser.java @@ -1,4 +1,4 @@ -// $ANTLR ${project.version} ${buildNumber} ANTLRParser.g 2010-05-19 15:07:26 +// $ANTLR ${project.version} ${buildNumber} ANTLRParser.g 2010-05-21 18:41:00 /* [The "BSD licence"] @@ -339,7 +339,7 @@ public class ANTLRParser extends Parser { // AST REWRITE - // elements: prequelConstruct, id, DOC_COMMENT, mode, rules, grammarType + // elements: id, DOC_COMMENT, grammarType, mode, rules, prequelConstruct // token labels: // rule labels: retval // token list labels: @@ -849,7 +849,7 @@ public class ANTLRParser extends Parser { // AST REWRITE - // elements: OPTIONS, option + // elements: option, OPTIONS // token labels: // rule labels: retval // token list labels: @@ -1620,7 +1620,7 @@ public class ANTLRParser extends Parser { // AST REWRITE - // elements: ASSIGN, id, STRING_LITERAL + // elements: STRING_LITERAL, ASSIGN, id // token labels: // rule labels: retval // token list labels: @@ -1760,7 +1760,7 @@ public class ANTLRParser extends Parser { // AST REWRITE - // elements: ACTION, SCOPE, id + // elements: SCOPE, ACTION, id // token labels: // rule labels: retval // token list labels: @@ -1914,7 +1914,7 @@ public class ANTLRParser extends Parser { // AST REWRITE - // elements: AT, id, actionScopeName, ACTION + // elements: AT, ACTION, id, actionScopeName // token labels: // rule labels: retval // token list labels: @@ -2606,7 +2606,7 @@ public class ANTLRParser extends Parser { // AST REWRITE - // elements: exceptionGroup, DOC_COMMENT, ruleBlock, ARG_ACTION, ruleModifiers, id, ruleReturns, rulePrequels + // elements: ruleReturns, ARG_ACTION, ruleBlock, DOC_COMMENT, ruleModifiers, id, exceptionGroup, rulePrequels // token labels: // rule labels: retval // token list labels: @@ -2835,7 +2835,7 @@ public class ANTLRParser extends Parser { // AST REWRITE - // elements: ACTION, ARG_ACTION, CATCH + // elements: CATCH, ACTION, ARG_ACTION // token labels: // rule labels: retval // token list labels: @@ -3482,7 +3482,7 @@ public class ANTLRParser extends Parser { // AST REWRITE - // elements: SCOPE, ACTION + // elements: ACTION, SCOPE // token labels: // rule labels: retval // token list labels: @@ -3561,7 +3561,7 @@ public class ANTLRParser extends Parser { // AST REWRITE - // elements: id, SCOPE + // elements: SCOPE, id // token labels: // rule labels: retval // token list labels: @@ -3660,7 +3660,7 @@ public class ANTLRParser extends Parser { // AST REWRITE - // elements: ACTION, AT, id + // elements: AT, id, ACTION // token labels: // rule labels: retval // token list labels: @@ -4178,7 +4178,7 @@ public class ANTLRParser extends Parser { // AST REWRITE - // elements: elements, rewrite + // elements: rewrite, elements // token labels: // rule labels: retval // token list labels: @@ -4576,7 +4576,7 @@ public class ANTLRParser extends Parser { // ANTLRParser.g:570:82: ^( ALT labeledElement ) { GrammarAST root_3 = (GrammarAST)adaptor.nil(); - root_3 = (GrammarAST)adaptor.becomeRoot((GrammarAST)adaptor.create(ALT, "ALT"), root_3); + root_3 = (GrammarAST)adaptor.becomeRoot(new AltAST(ALT), root_3); adaptor.addChild(root_3, stream_labeledElement.nextTree()); @@ -4628,7 +4628,7 @@ public class ANTLRParser extends Parser { case 2 : // ANTLRParser.g:573:4: atom ( ebnfSuffix -> ^( ebnfSuffix ^( BLOCK[$atom.start,\"BLOCK\"] ^( ALT atom ) ) ) | -> atom ) { - pushFollow(FOLLOW_atom_in_element2773); + pushFollow(FOLLOW_atom_in_element2776); atom115=atom(); state._fsp--; @@ -4655,7 +4655,7 @@ public class ANTLRParser extends Parser { case 1 : // ANTLRParser.g:574:5: ebnfSuffix { - pushFollow(FOLLOW_ebnfSuffix_in_element2779); + pushFollow(FOLLOW_ebnfSuffix_in_element2782); ebnfSuffix116=ebnfSuffix(); state._fsp--; @@ -4664,7 +4664,7 @@ public class ANTLRParser extends Parser { // AST REWRITE - // elements: atom, ebnfSuffix + // elements: ebnfSuffix, atom // token labels: // rule labels: retval // token list labels: @@ -4690,7 +4690,7 @@ public class ANTLRParser extends Parser { // ANTLRParser.g:574:72: ^( ALT atom ) { GrammarAST root_3 = (GrammarAST)adaptor.nil(); - root_3 = (GrammarAST)adaptor.becomeRoot((GrammarAST)adaptor.create(ALT, "ALT"), root_3); + root_3 = (GrammarAST)adaptor.becomeRoot(new AltAST(ALT), root_3); adaptor.addChild(root_3, stream_atom.nextTree()); @@ -4744,7 +4744,7 @@ public class ANTLRParser extends Parser { { root_0 = (GrammarAST)adaptor.nil(); - pushFollow(FOLLOW_ebnf_in_element2822); + pushFollow(FOLLOW_ebnf_in_element2828); ebnf117=ebnf(); state._fsp--; @@ -4758,7 +4758,7 @@ public class ANTLRParser extends Parser { { root_0 = (GrammarAST)adaptor.nil(); - ACTION118=(Token)match(input,ACTION,FOLLOW_ACTION_in_element2829); if (state.failed) return retval; + ACTION118=(Token)match(input,ACTION,FOLLOW_ACTION_in_element2835); if (state.failed) return retval; if ( state.backtracking==0 ) { ACTION118_tree = new ActionAST(ACTION118) ; adaptor.addChild(root_0, ACTION118_tree); @@ -4769,7 +4769,7 @@ public class ANTLRParser extends Parser { case 5 : // ANTLRParser.g:579:6: SEMPRED ( IMPLIES -> GATED_SEMPRED[$IMPLIES] | -> SEMPRED ) { - SEMPRED119=(Token)match(input,SEMPRED,FOLLOW_SEMPRED_in_element2839); if (state.failed) return retval; + SEMPRED119=(Token)match(input,SEMPRED,FOLLOW_SEMPRED_in_element2845); if (state.failed) return retval; if ( state.backtracking==0 ) stream_SEMPRED.add(SEMPRED119); // ANTLRParser.g:580:3: ( IMPLIES -> GATED_SEMPRED[$IMPLIES] | -> SEMPRED ) @@ -4793,7 +4793,7 @@ public class ANTLRParser extends Parser { case 1 : // ANTLRParser.g:580:5: IMPLIES { - IMPLIES120=(Token)match(input,IMPLIES,FOLLOW_IMPLIES_in_element2845); if (state.failed) return retval; + IMPLIES120=(Token)match(input,IMPLIES,FOLLOW_IMPLIES_in_element2851); if (state.failed) return retval; if ( state.backtracking==0 ) stream_IMPLIES.add(IMPLIES120); @@ -4853,7 +4853,7 @@ public class ANTLRParser extends Parser { case 6 : // ANTLRParser.g:583:6: treeSpec ( ebnfSuffix -> ^( ebnfSuffix ^( BLOCK[$treeSpec.start,\"BLOCK\"] ^( ALT treeSpec ) ) ) | -> treeSpec ) { - pushFollow(FOLLOW_treeSpec_in_element2873); + pushFollow(FOLLOW_treeSpec_in_element2879); treeSpec121=treeSpec(); state._fsp--; @@ -4880,7 +4880,7 @@ public class ANTLRParser extends Parser { case 1 : // ANTLRParser.g:584:5: ebnfSuffix { - pushFollow(FOLLOW_ebnfSuffix_in_element2879); + pushFollow(FOLLOW_ebnfSuffix_in_element2885); ebnfSuffix122=ebnfSuffix(); state._fsp--; @@ -4915,7 +4915,7 @@ public class ANTLRParser extends Parser { // ANTLRParser.g:584:76: ^( ALT treeSpec ) { GrammarAST root_3 = (GrammarAST)adaptor.nil(); - root_3 = (GrammarAST)adaptor.becomeRoot((GrammarAST)adaptor.create(ALT, "ALT"), root_3); + root_3 = (GrammarAST)adaptor.becomeRoot(new AltAST(ALT), root_3); adaptor.addChild(root_3, stream_treeSpec.nextTree()); @@ -5060,7 +5060,7 @@ public class ANTLRParser extends Parser { { root_0 = (GrammarAST)adaptor.nil(); - pushFollow(FOLLOW_id_in_labeledElement2941); + pushFollow(FOLLOW_id_in_labeledElement2950); id123=id(); state._fsp--; @@ -5087,7 +5087,7 @@ public class ANTLRParser extends Parser { case 1 : // ANTLRParser.g:659:22: ASSIGN { - ASSIGN124=(Token)match(input,ASSIGN,FOLLOW_ASSIGN_in_labeledElement2944); if (state.failed) return retval; + ASSIGN124=(Token)match(input,ASSIGN,FOLLOW_ASSIGN_in_labeledElement2953); if (state.failed) return retval; if ( state.backtracking==0 ) { ASSIGN124_tree = (GrammarAST)adaptor.create(ASSIGN124); root_0 = (GrammarAST)adaptor.becomeRoot(ASSIGN124_tree, root_0); @@ -5098,7 +5098,7 @@ public class ANTLRParser extends Parser { case 2 : // ANTLRParser.g:659:30: PLUS_ASSIGN { - PLUS_ASSIGN125=(Token)match(input,PLUS_ASSIGN,FOLLOW_PLUS_ASSIGN_in_labeledElement2947); if (state.failed) return retval; + PLUS_ASSIGN125=(Token)match(input,PLUS_ASSIGN,FOLLOW_PLUS_ASSIGN_in_labeledElement2956); if (state.failed) return retval; if ( state.backtracking==0 ) { PLUS_ASSIGN125_tree = (GrammarAST)adaptor.create(PLUS_ASSIGN125); root_0 = (GrammarAST)adaptor.becomeRoot(PLUS_ASSIGN125_tree, root_0); @@ -5130,7 +5130,7 @@ public class ANTLRParser extends Parser { case 1 : // ANTLRParser.g:659:45: atom { - pushFollow(FOLLOW_atom_in_labeledElement2952); + pushFollow(FOLLOW_atom_in_labeledElement2961); atom126=atom(); state._fsp--; @@ -5142,7 +5142,7 @@ public class ANTLRParser extends Parser { case 2 : // ANTLRParser.g:659:50: block { - pushFollow(FOLLOW_block_in_labeledElement2954); + pushFollow(FOLLOW_block_in_labeledElement2963); block127=block(); state._fsp--; @@ -5206,10 +5206,10 @@ public class ANTLRParser extends Parser { // ANTLRParser.g:666:5: ( TREE_BEGIN element ( element )+ RPAREN -> ^( TREE_BEGIN ( element )+ ) ) // ANTLRParser.g:666:7: TREE_BEGIN element ( element )+ RPAREN { - TREE_BEGIN128=(Token)match(input,TREE_BEGIN,FOLLOW_TREE_BEGIN_in_treeSpec2972); if (state.failed) return retval; + TREE_BEGIN128=(Token)match(input,TREE_BEGIN,FOLLOW_TREE_BEGIN_in_treeSpec2981); if (state.failed) return retval; if ( state.backtracking==0 ) stream_TREE_BEGIN.add(TREE_BEGIN128); - pushFollow(FOLLOW_element_in_treeSpec3013); + pushFollow(FOLLOW_element_in_treeSpec3022); element129=element(); state._fsp--; @@ -5231,7 +5231,7 @@ public class ANTLRParser extends Parser { case 1 : // ANTLRParser.g:673:10: element { - pushFollow(FOLLOW_element_in_treeSpec3044); + pushFollow(FOLLOW_element_in_treeSpec3053); element130=element(); state._fsp--; @@ -5251,13 +5251,13 @@ public class ANTLRParser extends Parser { cnt40++; } while (true); - RPAREN131=(Token)match(input,RPAREN,FOLLOW_RPAREN_in_treeSpec3053); if (state.failed) return retval; + RPAREN131=(Token)match(input,RPAREN,FOLLOW_RPAREN_in_treeSpec3062); if (state.failed) return retval; if ( state.backtracking==0 ) stream_RPAREN.add(RPAREN131); // AST REWRITE - // elements: TREE_BEGIN, element + // elements: element, TREE_BEGIN // token labels: // rule labels: retval // token list labels: @@ -5336,7 +5336,7 @@ public class ANTLRParser extends Parser { // ANTLRParser.g:681:5: ( block ( blockSuffixe -> ^( blockSuffixe block ) | -> block ) ) // ANTLRParser.g:681:7: block ( blockSuffixe -> ^( blockSuffixe block ) | -> block ) { - pushFollow(FOLLOW_block_in_ebnf3087); + pushFollow(FOLLOW_block_in_ebnf3096); block132=block(); state._fsp--; @@ -5363,7 +5363,7 @@ public class ANTLRParser extends Parser { case 1 : // ANTLRParser.g:685:9: blockSuffixe { - pushFollow(FOLLOW_blockSuffixe_in_ebnf3122); + pushFollow(FOLLOW_blockSuffixe_in_ebnf3131); blockSuffixe133=blockSuffixe(); state._fsp--; @@ -5372,7 +5372,7 @@ public class ANTLRParser extends Parser { // AST REWRITE - // elements: block, blockSuffixe + // elements: blockSuffixe, block // token labels: // rule labels: retval // token list labels: @@ -5514,7 +5514,7 @@ public class ANTLRParser extends Parser { { root_0 = (GrammarAST)adaptor.nil(); - pushFollow(FOLLOW_ebnfSuffix_in_blockSuffixe3173); + pushFollow(FOLLOW_ebnfSuffix_in_blockSuffixe3182); ebnfSuffix134=ebnfSuffix(); state._fsp--; @@ -5528,7 +5528,7 @@ public class ANTLRParser extends Parser { { root_0 = (GrammarAST)adaptor.nil(); - ROOT135=(Token)match(input,ROOT,FOLLOW_ROOT_in_blockSuffixe3187); if (state.failed) return retval; + ROOT135=(Token)match(input,ROOT,FOLLOW_ROOT_in_blockSuffixe3196); if (state.failed) return retval; if ( state.backtracking==0 ) { ROOT135_tree = (GrammarAST)adaptor.create(ROOT135); adaptor.addChild(root_0, ROOT135_tree); @@ -5541,7 +5541,7 @@ public class ANTLRParser extends Parser { { root_0 = (GrammarAST)adaptor.nil(); - IMPLIES136=(Token)match(input,IMPLIES,FOLLOW_IMPLIES_in_blockSuffixe3195); if (state.failed) return retval; + IMPLIES136=(Token)match(input,IMPLIES,FOLLOW_IMPLIES_in_blockSuffixe3204); if (state.failed) return retval; if ( state.backtracking==0 ) { IMPLIES136_tree = (GrammarAST)adaptor.create(IMPLIES136); adaptor.addChild(root_0, IMPLIES136_tree); @@ -5554,7 +5554,7 @@ public class ANTLRParser extends Parser { { root_0 = (GrammarAST)adaptor.nil(); - BANG137=(Token)match(input,BANG,FOLLOW_BANG_in_blockSuffixe3206); if (state.failed) return retval; + BANG137=(Token)match(input,BANG,FOLLOW_BANG_in_blockSuffixe3215); if (state.failed) return retval; if ( state.backtracking==0 ) { BANG137_tree = (GrammarAST)adaptor.create(BANG137); adaptor.addChild(root_0, BANG137_tree); @@ -5642,7 +5642,7 @@ public class ANTLRParser extends Parser { case 1 : // ANTLRParser.g:705:4: QUESTION { - QUESTION138=(Token)match(input,QUESTION,FOLLOW_QUESTION_in_ebnfSuffix3225); if (state.failed) return retval; + QUESTION138=(Token)match(input,QUESTION,FOLLOW_QUESTION_in_ebnfSuffix3234); if (state.failed) return retval; if ( state.backtracking==0 ) stream_QUESTION.add(QUESTION138); @@ -5671,7 +5671,7 @@ public class ANTLRParser extends Parser { case 2 : // ANTLRParser.g:706:6: STAR { - STAR139=(Token)match(input,STAR,FOLLOW_STAR_in_ebnfSuffix3237); if (state.failed) return retval; + STAR139=(Token)match(input,STAR,FOLLOW_STAR_in_ebnfSuffix3246); if (state.failed) return retval; if ( state.backtracking==0 ) stream_STAR.add(STAR139); @@ -5700,7 +5700,7 @@ public class ANTLRParser extends Parser { case 3 : // ANTLRParser.g:707:7: PLUS { - PLUS140=(Token)match(input,PLUS,FOLLOW_PLUS_in_ebnfSuffix3252); if (state.failed) return retval; + PLUS140=(Token)match(input,PLUS,FOLLOW_PLUS_in_ebnfSuffix3261); if (state.failed) return retval; if ( state.backtracking==0 ) stream_PLUS.add(PLUS140); @@ -5812,16 +5812,16 @@ public class ANTLRParser extends Parser { if (state.backtracking>0) {state.failed=true; return retval;} throw new FailedPredicateException(input, "atom", "\n\t \tinput.LT(1).getCharPositionInLine()+input.LT(1).getText().length()==\n\t input.LT(2).getCharPositionInLine() &&\n\t input.LT(2).getCharPositionInLine()+1==input.LT(3).getCharPositionInLine()\n\t "); } - pushFollow(FOLLOW_id_in_atom3300); + pushFollow(FOLLOW_id_in_atom3309); id141=id(); state._fsp--; if (state.failed) return retval; if ( state.backtracking==0 ) stream_id.add(id141.getTree()); - DOT142=(Token)match(input,DOT,FOLLOW_DOT_in_atom3302); if (state.failed) return retval; + DOT142=(Token)match(input,DOT,FOLLOW_DOT_in_atom3311); if (state.failed) return retval; if ( state.backtracking==0 ) stream_DOT.add(DOT142); - pushFollow(FOLLOW_ruleref_in_atom3304); + pushFollow(FOLLOW_ruleref_in_atom3313); ruleref143=ruleref(); state._fsp--; @@ -5830,7 +5830,7 @@ public class ANTLRParser extends Parser { // AST REWRITE - // elements: id, ruleref, DOT + // elements: ruleref, id, DOT // token labels: // rule labels: retval // token list labels: @@ -5864,7 +5864,7 @@ public class ANTLRParser extends Parser { { root_0 = (GrammarAST)adaptor.nil(); - pushFollow(FOLLOW_range_in_atom3324); + pushFollow(FOLLOW_range_in_atom3333); range144=range(); state._fsp--; @@ -5884,7 +5884,7 @@ public class ANTLRParser extends Parser { case 1 : // ANTLRParser.g:720:19: ROOT { - ROOT145=(Token)match(input,ROOT,FOLLOW_ROOT_in_atom3330); if (state.failed) return retval; + ROOT145=(Token)match(input,ROOT,FOLLOW_ROOT_in_atom3339); if (state.failed) return retval; if ( state.backtracking==0 ) { ROOT145_tree = (GrammarAST)adaptor.create(ROOT145); root_0 = (GrammarAST)adaptor.becomeRoot(ROOT145_tree, root_0); @@ -5895,7 +5895,7 @@ public class ANTLRParser extends Parser { case 2 : // ANTLRParser.g:720:27: BANG { - BANG146=(Token)match(input,BANG,FOLLOW_BANG_in_atom3335); if (state.failed) return retval; + BANG146=(Token)match(input,BANG,FOLLOW_BANG_in_atom3344); if (state.failed) return retval; if ( state.backtracking==0 ) { BANG146_tree = (GrammarAST)adaptor.create(BANG146); root_0 = (GrammarAST)adaptor.becomeRoot(BANG146_tree, root_0); @@ -5914,7 +5914,7 @@ public class ANTLRParser extends Parser { { root_0 = (GrammarAST)adaptor.nil(); - pushFollow(FOLLOW_terminal_in_atom3344); + pushFollow(FOLLOW_terminal_in_atom3353); terminal147=terminal(); state._fsp--; @@ -5934,7 +5934,7 @@ public class ANTLRParser extends Parser { case 1 : // ANTLRParser.g:721:14: ROOT { - ROOT148=(Token)match(input,ROOT,FOLLOW_ROOT_in_atom3347); if (state.failed) return retval; + ROOT148=(Token)match(input,ROOT,FOLLOW_ROOT_in_atom3356); if (state.failed) return retval; if ( state.backtracking==0 ) { ROOT148_tree = (GrammarAST)adaptor.create(ROOT148); root_0 = (GrammarAST)adaptor.becomeRoot(ROOT148_tree, root_0); @@ -5945,7 +5945,7 @@ public class ANTLRParser extends Parser { case 2 : // ANTLRParser.g:721:22: BANG { - BANG149=(Token)match(input,BANG,FOLLOW_BANG_in_atom3352); if (state.failed) return retval; + BANG149=(Token)match(input,BANG,FOLLOW_BANG_in_atom3361); if (state.failed) return retval; if ( state.backtracking==0 ) { BANG149_tree = (GrammarAST)adaptor.create(BANG149); root_0 = (GrammarAST)adaptor.becomeRoot(BANG149_tree, root_0); @@ -5964,7 +5964,7 @@ public class ANTLRParser extends Parser { { root_0 = (GrammarAST)adaptor.nil(); - pushFollow(FOLLOW_ruleref_in_atom3365); + pushFollow(FOLLOW_ruleref_in_atom3374); ruleref150=ruleref(); state._fsp--; @@ -5978,7 +5978,7 @@ public class ANTLRParser extends Parser { { root_0 = (GrammarAST)adaptor.nil(); - pushFollow(FOLLOW_notSet_in_atom3373); + pushFollow(FOLLOW_notSet_in_atom3382); notSet151=notSet(); state._fsp--; @@ -5998,7 +5998,7 @@ public class ANTLRParser extends Parser { case 1 : // ANTLRParser.g:723:17: ROOT { - ROOT152=(Token)match(input,ROOT,FOLLOW_ROOT_in_atom3378); if (state.failed) return retval; + ROOT152=(Token)match(input,ROOT,FOLLOW_ROOT_in_atom3387); if (state.failed) return retval; if ( state.backtracking==0 ) { ROOT152_tree = (GrammarAST)adaptor.create(ROOT152); root_0 = (GrammarAST)adaptor.becomeRoot(ROOT152_tree, root_0); @@ -6009,7 +6009,7 @@ public class ANTLRParser extends Parser { case 2 : // ANTLRParser.g:723:23: BANG { - BANG153=(Token)match(input,BANG,FOLLOW_BANG_in_atom3381); if (state.failed) return retval; + BANG153=(Token)match(input,BANG,FOLLOW_BANG_in_atom3390); if (state.failed) return retval; if ( state.backtracking==0 ) { BANG153_tree = (GrammarAST)adaptor.create(BANG153); root_0 = (GrammarAST)adaptor.becomeRoot(BANG153_tree, root_0); @@ -6026,7 +6026,7 @@ public class ANTLRParser extends Parser { case 6 : // ANTLRParser.g:729:6: DOT ( elementOptions )? { - DOT154=(Token)match(input,DOT,FOLLOW_DOT_in_atom3409); if (state.failed) return retval; + DOT154=(Token)match(input,DOT,FOLLOW_DOT_in_atom3418); if (state.failed) return retval; if ( state.backtracking==0 ) stream_DOT.add(DOT154); // ANTLRParser.g:729:10: ( elementOptions )? @@ -6040,7 +6040,7 @@ public class ANTLRParser extends Parser { case 1 : // ANTLRParser.g:729:10: elementOptions { - pushFollow(FOLLOW_elementOptions_in_atom3411); + pushFollow(FOLLOW_elementOptions_in_atom3420); elementOptions155=elementOptions(); state._fsp--; @@ -6165,10 +6165,10 @@ public class ANTLRParser extends Parser { case 1 : // ANTLRParser.g:740:7: NOT terminal { - NOT156=(Token)match(input,NOT,FOLLOW_NOT_in_notSet3469); if (state.failed) return retval; + NOT156=(Token)match(input,NOT,FOLLOW_NOT_in_notSet3478); if (state.failed) return retval; if ( state.backtracking==0 ) stream_NOT.add(NOT156); - pushFollow(FOLLOW_terminal_in_notSet3471); + pushFollow(FOLLOW_terminal_in_notSet3480); terminal157=terminal(); state._fsp--; @@ -6177,7 +6177,7 @@ public class ANTLRParser extends Parser { // AST REWRITE - // elements: terminal, NOT + // elements: NOT, terminal // token labels: // rule labels: retval // token list labels: @@ -6208,10 +6208,10 @@ public class ANTLRParser extends Parser { case 2 : // ANTLRParser.g:741:7: NOT block { - NOT158=(Token)match(input,NOT,FOLLOW_NOT_in_notSet3487); if (state.failed) return retval; + NOT158=(Token)match(input,NOT,FOLLOW_NOT_in_notSet3496); if (state.failed) return retval; if ( state.backtracking==0 ) stream_NOT.add(NOT158); - pushFollow(FOLLOW_block_in_notSet3489); + pushFollow(FOLLOW_block_in_notSet3498); block159=block(); state._fsp--; @@ -6220,7 +6220,7 @@ public class ANTLRParser extends Parser { // AST REWRITE - // elements: NOT, block + // elements: block, NOT // token labels: // rule labels: retval // token list labels: @@ -6305,7 +6305,7 @@ public class ANTLRParser extends Parser { // ANTLRParser.g:752:5: ( LPAREN ( ( optionsSpec )? (ra+= ruleAction )* COLON )? altList RPAREN -> ^( BLOCK[$LPAREN,\"BLOCK\"] ( optionsSpec )? ( $ra)* altList ) ) // ANTLRParser.g:752:7: LPAREN ( ( optionsSpec )? (ra+= ruleAction )* COLON )? altList RPAREN { - LPAREN160=(Token)match(input,LPAREN,FOLLOW_LPAREN_in_block3522); if (state.failed) return retval; + LPAREN160=(Token)match(input,LPAREN,FOLLOW_LPAREN_in_block3531); if (state.failed) return retval; if ( state.backtracking==0 ) stream_LPAREN.add(LPAREN160); // ANTLRParser.g:755:10: ( ( optionsSpec )? (ra+= ruleAction )* COLON )? @@ -6330,7 +6330,7 @@ public class ANTLRParser extends Parser { case 1 : // ANTLRParser.g:755:12: optionsSpec { - pushFollow(FOLLOW_optionsSpec_in_block3559); + pushFollow(FOLLOW_optionsSpec_in_block3568); optionsSpec161=optionsSpec(); state._fsp--; @@ -6357,7 +6357,7 @@ public class ANTLRParser extends Parser { case 1 : // ANTLRParser.g:755:27: ra+= ruleAction { - pushFollow(FOLLOW_ruleAction_in_block3564); + pushFollow(FOLLOW_ruleAction_in_block3573); ra=ruleAction(); state._fsp--; @@ -6375,7 +6375,7 @@ public class ANTLRParser extends Parser { } } while (true); - COLON162=(Token)match(input,COLON,FOLLOW_COLON_in_block3567); if (state.failed) return retval; + COLON162=(Token)match(input,COLON,FOLLOW_COLON_in_block3576); if (state.failed) return retval; if ( state.backtracking==0 ) stream_COLON.add(COLON162); @@ -6384,19 +6384,19 @@ public class ANTLRParser extends Parser { } - pushFollow(FOLLOW_altList_in_block3581); + pushFollow(FOLLOW_altList_in_block3590); altList163=altList(); state._fsp--; if (state.failed) return retval; if ( state.backtracking==0 ) stream_altList.add(altList163.getTree()); - RPAREN164=(Token)match(input,RPAREN,FOLLOW_RPAREN_in_block3598); if (state.failed) return retval; + RPAREN164=(Token)match(input,RPAREN,FOLLOW_RPAREN_in_block3607); if (state.failed) return retval; if ( state.backtracking==0 ) stream_RPAREN.add(RPAREN164); // AST REWRITE - // elements: altList, ra, optionsSpec + // elements: optionsSpec, altList, ra // token labels: // rule labels: retval // token list labels: @@ -6485,7 +6485,7 @@ public class ANTLRParser extends Parser { // ANTLRParser.g:768:5: ( RULE_REF ( ARG_ACTION )? ( (op= ROOT | op= BANG ) -> ^( $op ^( RULE_REF ( ARG_ACTION )? ) ) | -> ^( RULE_REF ( ARG_ACTION )? ) ) ) // ANTLRParser.g:768:7: RULE_REF ( ARG_ACTION )? ( (op= ROOT | op= BANG ) -> ^( $op ^( RULE_REF ( ARG_ACTION )? ) ) | -> ^( RULE_REF ( ARG_ACTION )? ) ) { - RULE_REF165=(Token)match(input,RULE_REF,FOLLOW_RULE_REF_in_ruleref3648); if (state.failed) return retval; + RULE_REF165=(Token)match(input,RULE_REF,FOLLOW_RULE_REF_in_ruleref3657); if (state.failed) return retval; if ( state.backtracking==0 ) stream_RULE_REF.add(RULE_REF165); // ANTLRParser.g:768:16: ( ARG_ACTION )? @@ -6499,7 +6499,7 @@ public class ANTLRParser extends Parser { case 1 : // ANTLRParser.g:768:16: ARG_ACTION { - ARG_ACTION166=(Token)match(input,ARG_ACTION,FOLLOW_ARG_ACTION_in_ruleref3650); if (state.failed) return retval; + ARG_ACTION166=(Token)match(input,ARG_ACTION,FOLLOW_ARG_ACTION_in_ruleref3659); if (state.failed) return retval; if ( state.backtracking==0 ) stream_ARG_ACTION.add(ARG_ACTION166); @@ -6550,7 +6550,7 @@ public class ANTLRParser extends Parser { case 1 : // ANTLRParser.g:769:6: op= ROOT { - op=(Token)match(input,ROOT,FOLLOW_ROOT_in_ruleref3660); if (state.failed) return retval; + op=(Token)match(input,ROOT,FOLLOW_ROOT_in_ruleref3669); if (state.failed) return retval; if ( state.backtracking==0 ) stream_ROOT.add(op); @@ -6559,7 +6559,7 @@ public class ANTLRParser extends Parser { case 2 : // ANTLRParser.g:769:14: op= BANG { - op=(Token)match(input,BANG,FOLLOW_BANG_in_ruleref3664); if (state.failed) return retval; + op=(Token)match(input,BANG,FOLLOW_BANG_in_ruleref3673); if (state.failed) return retval; if ( state.backtracking==0 ) stream_BANG.add(op); @@ -6618,7 +6618,7 @@ public class ANTLRParser extends Parser { { // AST REWRITE - // elements: RULE_REF, ARG_ACTION + // elements: ARG_ACTION, RULE_REF // token labels: // rule labels: retval // token list labels: @@ -6701,17 +6701,17 @@ public class ANTLRParser extends Parser { { root_0 = (GrammarAST)adaptor.nil(); - STRING_LITERAL167=(Token)match(input,STRING_LITERAL,FOLLOW_STRING_LITERAL_in_range3738); if (state.failed) return retval; + STRING_LITERAL167=(Token)match(input,STRING_LITERAL,FOLLOW_STRING_LITERAL_in_range3747); if (state.failed) return retval; if ( state.backtracking==0 ) { STRING_LITERAL167_tree = new TerminalAST(STRING_LITERAL167) ; adaptor.addChild(root_0, STRING_LITERAL167_tree); } - RANGE168=(Token)match(input,RANGE,FOLLOW_RANGE_in_range3743); if (state.failed) return retval; + RANGE168=(Token)match(input,RANGE,FOLLOW_RANGE_in_range3752); if (state.failed) return retval; if ( state.backtracking==0 ) { RANGE168_tree = (GrammarAST)adaptor.create(RANGE168); root_0 = (GrammarAST)adaptor.becomeRoot(RANGE168_tree, root_0); } - STRING_LITERAL169=(Token)match(input,STRING_LITERAL,FOLLOW_STRING_LITERAL_in_range3746); if (state.failed) return retval; + STRING_LITERAL169=(Token)match(input,STRING_LITERAL,FOLLOW_STRING_LITERAL_in_range3755); if (state.failed) return retval; if ( state.backtracking==0 ) { STRING_LITERAL169_tree = new TerminalAST(STRING_LITERAL169) ; adaptor.addChild(root_0, STRING_LITERAL169_tree); @@ -6789,7 +6789,7 @@ public class ANTLRParser extends Parser { case 1 : // ANTLRParser.g:790:3: TOKEN_REF ( ARG_ACTION )? ( elementOptions )? { - TOKEN_REF170=(Token)match(input,TOKEN_REF,FOLLOW_TOKEN_REF_in_terminal3771); if (state.failed) return retval; + TOKEN_REF170=(Token)match(input,TOKEN_REF,FOLLOW_TOKEN_REF_in_terminal3780); if (state.failed) return retval; if ( state.backtracking==0 ) stream_TOKEN_REF.add(TOKEN_REF170); // ANTLRParser.g:790:13: ( ARG_ACTION )? @@ -6803,7 +6803,7 @@ public class ANTLRParser extends Parser { case 1 : // ANTLRParser.g:790:13: ARG_ACTION { - ARG_ACTION171=(Token)match(input,ARG_ACTION,FOLLOW_ARG_ACTION_in_terminal3773); if (state.failed) return retval; + ARG_ACTION171=(Token)match(input,ARG_ACTION,FOLLOW_ARG_ACTION_in_terminal3782); if (state.failed) return retval; if ( state.backtracking==0 ) stream_ARG_ACTION.add(ARG_ACTION171); @@ -6823,7 +6823,7 @@ public class ANTLRParser extends Parser { case 1 : // ANTLRParser.g:790:25: elementOptions { - pushFollow(FOLLOW_elementOptions_in_terminal3776); + pushFollow(FOLLOW_elementOptions_in_terminal3785); elementOptions172=elementOptions(); state._fsp--; @@ -6838,7 +6838,7 @@ public class ANTLRParser extends Parser { // AST REWRITE - // elements: elementOptions, ARG_ACTION, TOKEN_REF + // elements: ARG_ACTION, elementOptions, TOKEN_REF // token labels: // rule labels: retval // token list labels: @@ -6880,7 +6880,7 @@ public class ANTLRParser extends Parser { case 2 : // ANTLRParser.g:791:6: STRING_LITERAL ( elementOptions )? { - STRING_LITERAL173=(Token)match(input,STRING_LITERAL,FOLLOW_STRING_LITERAL_in_terminal3799); if (state.failed) return retval; + STRING_LITERAL173=(Token)match(input,STRING_LITERAL,FOLLOW_STRING_LITERAL_in_terminal3808); if (state.failed) return retval; if ( state.backtracking==0 ) stream_STRING_LITERAL.add(STRING_LITERAL173); // ANTLRParser.g:791:21: ( elementOptions )? @@ -6894,7 +6894,7 @@ public class ANTLRParser extends Parser { case 1 : // ANTLRParser.g:791:21: elementOptions { - pushFollow(FOLLOW_elementOptions_in_terminal3801); + pushFollow(FOLLOW_elementOptions_in_terminal3810); elementOptions174=elementOptions(); state._fsp--; @@ -6909,7 +6909,7 @@ public class ANTLRParser extends Parser { // AST REWRITE - // elements: elementOptions, STRING_LITERAL + // elements: STRING_LITERAL, elementOptions // token labels: // rule labels: retval // token list labels: @@ -6996,10 +6996,10 @@ public class ANTLRParser extends Parser { // ANTLRParser.g:797:5: ( LT elementOption ( COMMA elementOption )* GT -> ^( ELEMENT_OPTIONS ( elementOption )+ ) ) // ANTLRParser.g:797:7: LT elementOption ( COMMA elementOption )* GT { - LT175=(Token)match(input,LT,FOLLOW_LT_in_elementOptions3833); if (state.failed) return retval; + LT175=(Token)match(input,LT,FOLLOW_LT_in_elementOptions3842); if (state.failed) return retval; if ( state.backtracking==0 ) stream_LT.add(LT175); - pushFollow(FOLLOW_elementOption_in_elementOptions3835); + pushFollow(FOLLOW_elementOption_in_elementOptions3844); elementOption176=elementOption(); state._fsp--; @@ -7020,10 +7020,10 @@ public class ANTLRParser extends Parser { case 1 : // ANTLRParser.g:797:25: COMMA elementOption { - COMMA177=(Token)match(input,COMMA,FOLLOW_COMMA_in_elementOptions3838); if (state.failed) return retval; + COMMA177=(Token)match(input,COMMA,FOLLOW_COMMA_in_elementOptions3847); if (state.failed) return retval; if ( state.backtracking==0 ) stream_COMMA.add(COMMA177); - pushFollow(FOLLOW_elementOption_in_elementOptions3840); + pushFollow(FOLLOW_elementOption_in_elementOptions3849); elementOption178=elementOption(); state._fsp--; @@ -7038,7 +7038,7 @@ public class ANTLRParser extends Parser { } } while (true); - GT179=(Token)match(input,GT,FOLLOW_GT_in_elementOptions3844); if (state.failed) return retval; + GT179=(Token)match(input,GT,FOLLOW_GT_in_elementOptions3853); if (state.failed) return retval; if ( state.backtracking==0 ) stream_GT.add(GT179); @@ -7199,7 +7199,7 @@ public class ANTLRParser extends Parser { { root_0 = (GrammarAST)adaptor.nil(); - pushFollow(FOLLOW_qid_in_elementOption3879); + pushFollow(FOLLOW_qid_in_elementOption3888); qid180=qid(); state._fsp--; @@ -7213,13 +7213,13 @@ public class ANTLRParser extends Parser { { root_0 = (GrammarAST)adaptor.nil(); - pushFollow(FOLLOW_id_in_elementOption3901); + pushFollow(FOLLOW_id_in_elementOption3910); id181=id(); state._fsp--; if (state.failed) return retval; if ( state.backtracking==0 ) adaptor.addChild(root_0, id181.getTree()); - ASSIGN182=(Token)match(input,ASSIGN,FOLLOW_ASSIGN_in_elementOption3903); if (state.failed) return retval; + ASSIGN182=(Token)match(input,ASSIGN,FOLLOW_ASSIGN_in_elementOption3912); if (state.failed) return retval; if ( state.backtracking==0 ) { ASSIGN182_tree = (GrammarAST)adaptor.create(ASSIGN182); root_0 = (GrammarAST)adaptor.becomeRoot(ASSIGN182_tree, root_0); @@ -7245,7 +7245,7 @@ public class ANTLRParser extends Parser { case 1 : // ANTLRParser.g:807:19: qid { - pushFollow(FOLLOW_qid_in_elementOption3907); + pushFollow(FOLLOW_qid_in_elementOption3916); qid183=qid(); state._fsp--; @@ -7257,7 +7257,7 @@ public class ANTLRParser extends Parser { case 2 : // ANTLRParser.g:807:25: STRING_LITERAL { - STRING_LITERAL184=(Token)match(input,STRING_LITERAL,FOLLOW_STRING_LITERAL_in_elementOption3911); if (state.failed) return retval; + STRING_LITERAL184=(Token)match(input,STRING_LITERAL,FOLLOW_STRING_LITERAL_in_elementOption3920); if (state.failed) return retval; if ( state.backtracking==0 ) { STRING_LITERAL184_tree = new TerminalAST(STRING_LITERAL184) ; adaptor.addChild(root_0, STRING_LITERAL184_tree); @@ -7338,7 +7338,7 @@ public class ANTLRParser extends Parser { case 1 : // ANTLRParser.g:811:4: predicatedRewrite { - pushFollow(FOLLOW_predicatedRewrite_in_rewrite3929); + pushFollow(FOLLOW_predicatedRewrite_in_rewrite3938); predicatedRewrite185=predicatedRewrite(); state._fsp--; @@ -7353,7 +7353,7 @@ public class ANTLRParser extends Parser { } } while (true); - pushFollow(FOLLOW_nakedRewrite_in_rewrite3932); + pushFollow(FOLLOW_nakedRewrite_in_rewrite3941); nakedRewrite186=nakedRewrite(); state._fsp--; @@ -7435,13 +7435,13 @@ public class ANTLRParser extends Parser { // ANTLRParser.g:815:2: ( RARROW SEMPRED rewriteAlt -> {$rewriteAlt.isTemplate}? ^( ST_RESULT[$RARROW] SEMPRED rewriteAlt ) -> ^( RESULT[$RARROW] SEMPRED rewriteAlt ) ) // ANTLRParser.g:815:4: RARROW SEMPRED rewriteAlt { - RARROW187=(Token)match(input,RARROW,FOLLOW_RARROW_in_predicatedRewrite3950); if (state.failed) return retval; + RARROW187=(Token)match(input,RARROW,FOLLOW_RARROW_in_predicatedRewrite3959); if (state.failed) return retval; if ( state.backtracking==0 ) stream_RARROW.add(RARROW187); - SEMPRED188=(Token)match(input,SEMPRED,FOLLOW_SEMPRED_in_predicatedRewrite3952); if (state.failed) return retval; + SEMPRED188=(Token)match(input,SEMPRED,FOLLOW_SEMPRED_in_predicatedRewrite3961); if (state.failed) return retval; if ( state.backtracking==0 ) stream_SEMPRED.add(SEMPRED188); - pushFollow(FOLLOW_rewriteAlt_in_predicatedRewrite3954); + pushFollow(FOLLOW_rewriteAlt_in_predicatedRewrite3963); rewriteAlt189=rewriteAlt(); state._fsp--; @@ -7450,7 +7450,7 @@ public class ANTLRParser extends Parser { // AST REWRITE - // elements: rewriteAlt, SEMPRED, rewriteAlt, SEMPRED + // elements: rewriteAlt, SEMPRED, SEMPRED, rewriteAlt // token labels: // rule labels: retval // token list labels: @@ -7537,10 +7537,10 @@ public class ANTLRParser extends Parser { // ANTLRParser.g:821:2: ( RARROW rewriteAlt -> {$rewriteAlt.isTemplate}? ^( ST_RESULT[$RARROW] rewriteAlt ) -> ^( RESULT[$RARROW] rewriteAlt ) ) // ANTLRParser.g:821:4: RARROW rewriteAlt { - RARROW190=(Token)match(input,RARROW,FOLLOW_RARROW_in_nakedRewrite3994); if (state.failed) return retval; + RARROW190=(Token)match(input,RARROW,FOLLOW_RARROW_in_nakedRewrite4003); if (state.failed) return retval; if ( state.backtracking==0 ) stream_RARROW.add(RARROW190); - pushFollow(FOLLOW_rewriteAlt_in_nakedRewrite3996); + pushFollow(FOLLOW_rewriteAlt_in_nakedRewrite4005); rewriteAlt191=rewriteAlt(); state._fsp--; @@ -7642,7 +7642,7 @@ public class ANTLRParser extends Parser { { root_0 = (GrammarAST)adaptor.nil(); - pushFollow(FOLLOW_rewriteTemplate_in_rewriteAlt4060); + pushFollow(FOLLOW_rewriteTemplate_in_rewriteAlt4069); rewriteTemplate192=rewriteTemplate(); state._fsp--; @@ -7659,7 +7659,7 @@ public class ANTLRParser extends Parser { { root_0 = (GrammarAST)adaptor.nil(); - pushFollow(FOLLOW_rewriteTreeAlt_in_rewriteAlt4099); + pushFollow(FOLLOW_rewriteTreeAlt_in_rewriteAlt4108); rewriteTreeAlt193=rewriteTreeAlt(); state._fsp--; @@ -7673,7 +7673,7 @@ public class ANTLRParser extends Parser { { root_0 = (GrammarAST)adaptor.nil(); - ETC194=(Token)match(input,ETC,FOLLOW_ETC_in_rewriteAlt4108); if (state.failed) return retval; + ETC194=(Token)match(input,ETC,FOLLOW_ETC_in_rewriteAlt4117); if (state.failed) return retval; if ( state.backtracking==0 ) { ETC194_tree = (GrammarAST)adaptor.create(ETC194); adaptor.addChild(root_0, ETC194_tree); @@ -7765,7 +7765,7 @@ public class ANTLRParser extends Parser { case 1 : // ANTLRParser.g:844:7: rewriteTreeElement { - pushFollow(FOLLOW_rewriteTreeElement_in_rewriteTreeAlt4139); + pushFollow(FOLLOW_rewriteTreeElement_in_rewriteTreeAlt4148); rewriteTreeElement195=rewriteTreeElement(); state._fsp--; @@ -7882,7 +7882,7 @@ public class ANTLRParser extends Parser { { root_0 = (GrammarAST)adaptor.nil(); - pushFollow(FOLLOW_rewriteTreeAtom_in_rewriteTreeElement4163); + pushFollow(FOLLOW_rewriteTreeAtom_in_rewriteTreeElement4172); rewriteTreeAtom196=rewriteTreeAtom(); state._fsp--; @@ -7894,13 +7894,13 @@ public class ANTLRParser extends Parser { case 2 : // ANTLRParser.g:849:4: rewriteTreeAtom ebnfSuffix { - pushFollow(FOLLOW_rewriteTreeAtom_in_rewriteTreeElement4168); + pushFollow(FOLLOW_rewriteTreeAtom_in_rewriteTreeElement4177); rewriteTreeAtom197=rewriteTreeAtom(); state._fsp--; if (state.failed) return retval; if ( state.backtracking==0 ) stream_rewriteTreeAtom.add(rewriteTreeAtom197.getTree()); - pushFollow(FOLLOW_ebnfSuffix_in_rewriteTreeElement4170); + pushFollow(FOLLOW_ebnfSuffix_in_rewriteTreeElement4179); ebnfSuffix198=ebnfSuffix(); state._fsp--; @@ -7956,7 +7956,7 @@ public class ANTLRParser extends Parser { case 3 : // ANTLRParser.g:850:6: rewriteTree ( ebnfSuffix -> ^( ebnfSuffix ^( REWRITE_BLOCK ^( ALT rewriteTree ) ) ) | -> rewriteTree ) { - pushFollow(FOLLOW_rewriteTree_in_rewriteTreeElement4195); + pushFollow(FOLLOW_rewriteTree_in_rewriteTreeElement4204); rewriteTree199=rewriteTree(); state._fsp--; @@ -7983,7 +7983,7 @@ public class ANTLRParser extends Parser { case 1 : // ANTLRParser.g:851:5: ebnfSuffix { - pushFollow(FOLLOW_ebnfSuffix_in_rewriteTreeElement4201); + pushFollow(FOLLOW_ebnfSuffix_in_rewriteTreeElement4210); ebnfSuffix200=ebnfSuffix(); state._fsp--; @@ -8072,7 +8072,7 @@ public class ANTLRParser extends Parser { { root_0 = (GrammarAST)adaptor.nil(); - pushFollow(FOLLOW_rewriteTreeEbnf_in_rewriteTreeElement4240); + pushFollow(FOLLOW_rewriteTreeEbnf_in_rewriteTreeElement4249); rewriteTreeEbnf201=rewriteTreeEbnf(); state._fsp--; @@ -8182,7 +8182,7 @@ public class ANTLRParser extends Parser { case 1 : // ANTLRParser.g:859:9: TOKEN_REF ( elementOptions )? ( ARG_ACTION )? { - TOKEN_REF202=(Token)match(input,TOKEN_REF,FOLLOW_TOKEN_REF_in_rewriteTreeAtom4256); if (state.failed) return retval; + TOKEN_REF202=(Token)match(input,TOKEN_REF,FOLLOW_TOKEN_REF_in_rewriteTreeAtom4265); if (state.failed) return retval; if ( state.backtracking==0 ) stream_TOKEN_REF.add(TOKEN_REF202); // ANTLRParser.g:859:19: ( elementOptions )? @@ -8196,7 +8196,7 @@ public class ANTLRParser extends Parser { case 1 : // ANTLRParser.g:859:19: elementOptions { - pushFollow(FOLLOW_elementOptions_in_rewriteTreeAtom4258); + pushFollow(FOLLOW_elementOptions_in_rewriteTreeAtom4267); elementOptions203=elementOptions(); state._fsp--; @@ -8219,7 +8219,7 @@ public class ANTLRParser extends Parser { case 1 : // ANTLRParser.g:859:35: ARG_ACTION { - ARG_ACTION204=(Token)match(input,ARG_ACTION,FOLLOW_ARG_ACTION_in_rewriteTreeAtom4261); if (state.failed) return retval; + ARG_ACTION204=(Token)match(input,ARG_ACTION,FOLLOW_ARG_ACTION_in_rewriteTreeAtom4270); if (state.failed) return retval; if ( state.backtracking==0 ) stream_ARG_ACTION.add(ARG_ACTION204); @@ -8231,7 +8231,7 @@ public class ANTLRParser extends Parser { // AST REWRITE - // elements: TOKEN_REF, ARG_ACTION, elementOptions + // elements: elementOptions, TOKEN_REF, ARG_ACTION // token labels: // rule labels: retval // token list labels: @@ -8275,7 +8275,7 @@ public class ANTLRParser extends Parser { { root_0 = (GrammarAST)adaptor.nil(); - RULE_REF205=(Token)match(input,RULE_REF,FOLLOW_RULE_REF_in_rewriteTreeAtom4288); if (state.failed) return retval; + RULE_REF205=(Token)match(input,RULE_REF,FOLLOW_RULE_REF_in_rewriteTreeAtom4297); if (state.failed) return retval; if ( state.backtracking==0 ) { RULE_REF205_tree = (GrammarAST)adaptor.create(RULE_REF205); adaptor.addChild(root_0, RULE_REF205_tree); @@ -8286,7 +8286,7 @@ public class ANTLRParser extends Parser { case 3 : // ANTLRParser.g:861:6: STRING_LITERAL ( elementOptions )? { - STRING_LITERAL206=(Token)match(input,STRING_LITERAL,FOLLOW_STRING_LITERAL_in_rewriteTreeAtom4295); if (state.failed) return retval; + STRING_LITERAL206=(Token)match(input,STRING_LITERAL,FOLLOW_STRING_LITERAL_in_rewriteTreeAtom4304); if (state.failed) return retval; if ( state.backtracking==0 ) stream_STRING_LITERAL.add(STRING_LITERAL206); // ANTLRParser.g:861:21: ( elementOptions )? @@ -8300,7 +8300,7 @@ public class ANTLRParser extends Parser { case 1 : // ANTLRParser.g:861:21: elementOptions { - pushFollow(FOLLOW_elementOptions_in_rewriteTreeAtom4297); + pushFollow(FOLLOW_elementOptions_in_rewriteTreeAtom4306); elementOptions207=elementOptions(); state._fsp--; @@ -8315,7 +8315,7 @@ public class ANTLRParser extends Parser { // AST REWRITE - // elements: elementOptions, STRING_LITERAL + // elements: STRING_LITERAL, elementOptions // token labels: // rule labels: retval // token list labels: @@ -8351,10 +8351,10 @@ public class ANTLRParser extends Parser { case 4 : // ANTLRParser.g:862:6: DOLLAR id { - DOLLAR208=(Token)match(input,DOLLAR,FOLLOW_DOLLAR_in_rewriteTreeAtom4320); if (state.failed) return retval; + DOLLAR208=(Token)match(input,DOLLAR,FOLLOW_DOLLAR_in_rewriteTreeAtom4329); if (state.failed) return retval; if ( state.backtracking==0 ) stream_DOLLAR.add(DOLLAR208); - pushFollow(FOLLOW_id_in_rewriteTreeAtom4322); + pushFollow(FOLLOW_id_in_rewriteTreeAtom4331); id209=id(); state._fsp--; @@ -8388,7 +8388,7 @@ public class ANTLRParser extends Parser { { root_0 = (GrammarAST)adaptor.nil(); - ACTION210=(Token)match(input,ACTION,FOLLOW_ACTION_in_rewriteTreeAtom4333); if (state.failed) return retval; + ACTION210=(Token)match(input,ACTION,FOLLOW_ACTION_in_rewriteTreeAtom4342); if (state.failed) return retval; if ( state.backtracking==0 ) { ACTION210_tree = new ActionAST(ACTION210) ; adaptor.addChild(root_0, ACTION210_tree); @@ -8451,19 +8451,19 @@ public class ANTLRParser extends Parser { // ANTLRParser.g:874:2: (lp= LPAREN rewriteTreeAlt RPAREN ebnfSuffix -> ^( ebnfSuffix ^( REWRITE_BLOCK[$lp] rewriteTreeAlt ) ) ) // ANTLRParser.g:874:4: lp= LPAREN rewriteTreeAlt RPAREN ebnfSuffix { - lp=(Token)match(input,LPAREN,FOLLOW_LPAREN_in_rewriteTreeEbnf4359); if (state.failed) return retval; + lp=(Token)match(input,LPAREN,FOLLOW_LPAREN_in_rewriteTreeEbnf4368); if (state.failed) return retval; if ( state.backtracking==0 ) stream_LPAREN.add(lp); - pushFollow(FOLLOW_rewriteTreeAlt_in_rewriteTreeEbnf4361); + pushFollow(FOLLOW_rewriteTreeAlt_in_rewriteTreeEbnf4370); rewriteTreeAlt211=rewriteTreeAlt(); state._fsp--; if (state.failed) return retval; if ( state.backtracking==0 ) stream_rewriteTreeAlt.add(rewriteTreeAlt211.getTree()); - RPAREN212=(Token)match(input,RPAREN,FOLLOW_RPAREN_in_rewriteTreeEbnf4363); if (state.failed) return retval; + RPAREN212=(Token)match(input,RPAREN,FOLLOW_RPAREN_in_rewriteTreeEbnf4372); if (state.failed) return retval; if ( state.backtracking==0 ) stream_RPAREN.add(RPAREN212); - pushFollow(FOLLOW_ebnfSuffix_in_rewriteTreeEbnf4365); + pushFollow(FOLLOW_ebnfSuffix_in_rewriteTreeEbnf4374); ebnfSuffix213=ebnfSuffix(); state._fsp--; @@ -8564,10 +8564,10 @@ public class ANTLRParser extends Parser { // ANTLRParser.g:878:2: ( TREE_BEGIN rewriteTreeAtom ( rewriteTreeElement )* RPAREN -> ^( TREE_BEGIN rewriteTreeAtom ( rewriteTreeElement )* ) ) // ANTLRParser.g:878:4: TREE_BEGIN rewriteTreeAtom ( rewriteTreeElement )* RPAREN { - TREE_BEGIN214=(Token)match(input,TREE_BEGIN,FOLLOW_TREE_BEGIN_in_rewriteTree4389); if (state.failed) return retval; + TREE_BEGIN214=(Token)match(input,TREE_BEGIN,FOLLOW_TREE_BEGIN_in_rewriteTree4398); if (state.failed) return retval; if ( state.backtracking==0 ) stream_TREE_BEGIN.add(TREE_BEGIN214); - pushFollow(FOLLOW_rewriteTreeAtom_in_rewriteTree4391); + pushFollow(FOLLOW_rewriteTreeAtom_in_rewriteTree4400); rewriteTreeAtom215=rewriteTreeAtom(); state._fsp--; @@ -8588,7 +8588,7 @@ public class ANTLRParser extends Parser { case 1 : // ANTLRParser.g:878:31: rewriteTreeElement { - pushFollow(FOLLOW_rewriteTreeElement_in_rewriteTree4393); + pushFollow(FOLLOW_rewriteTreeElement_in_rewriteTree4402); rewriteTreeElement216=rewriteTreeElement(); state._fsp--; @@ -8603,13 +8603,13 @@ public class ANTLRParser extends Parser { } } while (true); - RPAREN217=(Token)match(input,RPAREN,FOLLOW_RPAREN_in_rewriteTree4396); if (state.failed) return retval; + RPAREN217=(Token)match(input,RPAREN,FOLLOW_RPAREN_in_rewriteTree4405); if (state.failed) return retval; if ( state.backtracking==0 ) stream_RPAREN.add(RPAREN217); // AST REWRITE - // elements: rewriteTreeElement, TREE_BEGIN, rewriteTreeAtom + // elements: TREE_BEGIN, rewriteTreeElement, rewriteTreeAtom // token labels: // rule labels: retval // token list labels: @@ -8707,19 +8707,19 @@ public class ANTLRParser extends Parser { case 1 : // ANTLRParser.g:894:3: TEMPLATE LPAREN rewriteTemplateArgs RPAREN (str= DOUBLE_QUOTE_STRING_LITERAL | str= DOUBLE_ANGLE_STRING_LITERAL ) { - TEMPLATE218=(Token)match(input,TEMPLATE,FOLLOW_TEMPLATE_in_rewriteTemplate4428); if (state.failed) return retval; + TEMPLATE218=(Token)match(input,TEMPLATE,FOLLOW_TEMPLATE_in_rewriteTemplate4437); if (state.failed) return retval; if ( state.backtracking==0 ) stream_TEMPLATE.add(TEMPLATE218); - LPAREN219=(Token)match(input,LPAREN,FOLLOW_LPAREN_in_rewriteTemplate4430); if (state.failed) return retval; + LPAREN219=(Token)match(input,LPAREN,FOLLOW_LPAREN_in_rewriteTemplate4439); if (state.failed) return retval; if ( state.backtracking==0 ) stream_LPAREN.add(LPAREN219); - pushFollow(FOLLOW_rewriteTemplateArgs_in_rewriteTemplate4432); + pushFollow(FOLLOW_rewriteTemplateArgs_in_rewriteTemplate4441); rewriteTemplateArgs220=rewriteTemplateArgs(); state._fsp--; if (state.failed) return retval; if ( state.backtracking==0 ) stream_rewriteTemplateArgs.add(rewriteTemplateArgs220.getTree()); - RPAREN221=(Token)match(input,RPAREN,FOLLOW_RPAREN_in_rewriteTemplate4434); if (state.failed) return retval; + RPAREN221=(Token)match(input,RPAREN,FOLLOW_RPAREN_in_rewriteTemplate4443); if (state.failed) return retval; if ( state.backtracking==0 ) stream_RPAREN.add(RPAREN221); // ANTLRParser.g:895:3: (str= DOUBLE_QUOTE_STRING_LITERAL | str= DOUBLE_ANGLE_STRING_LITERAL ) @@ -8743,7 +8743,7 @@ public class ANTLRParser extends Parser { case 1 : // ANTLRParser.g:895:5: str= DOUBLE_QUOTE_STRING_LITERAL { - str=(Token)match(input,DOUBLE_QUOTE_STRING_LITERAL,FOLLOW_DOUBLE_QUOTE_STRING_LITERAL_in_rewriteTemplate4442); if (state.failed) return retval; + str=(Token)match(input,DOUBLE_QUOTE_STRING_LITERAL,FOLLOW_DOUBLE_QUOTE_STRING_LITERAL_in_rewriteTemplate4451); if (state.failed) return retval; if ( state.backtracking==0 ) stream_DOUBLE_QUOTE_STRING_LITERAL.add(str); @@ -8752,7 +8752,7 @@ public class ANTLRParser extends Parser { case 2 : // ANTLRParser.g:895:39: str= DOUBLE_ANGLE_STRING_LITERAL { - str=(Token)match(input,DOUBLE_ANGLE_STRING_LITERAL,FOLLOW_DOUBLE_ANGLE_STRING_LITERAL_in_rewriteTemplate4448); if (state.failed) return retval; + str=(Token)match(input,DOUBLE_ANGLE_STRING_LITERAL,FOLLOW_DOUBLE_ANGLE_STRING_LITERAL_in_rewriteTemplate4457); if (state.failed) return retval; if ( state.backtracking==0 ) stream_DOUBLE_ANGLE_STRING_LITERAL.add(str); @@ -8804,7 +8804,7 @@ public class ANTLRParser extends Parser { { root_0 = (GrammarAST)adaptor.nil(); - pushFollow(FOLLOW_rewriteTemplateRef_in_rewriteTemplate4474); + pushFollow(FOLLOW_rewriteTemplateRef_in_rewriteTemplate4483); rewriteTemplateRef222=rewriteTemplateRef(); state._fsp--; @@ -8818,7 +8818,7 @@ public class ANTLRParser extends Parser { { root_0 = (GrammarAST)adaptor.nil(); - pushFollow(FOLLOW_rewriteIndirectTemplateHead_in_rewriteTemplate4483); + pushFollow(FOLLOW_rewriteIndirectTemplateHead_in_rewriteTemplate4492); rewriteIndirectTemplateHead223=rewriteIndirectTemplateHead(); state._fsp--; @@ -8832,7 +8832,7 @@ public class ANTLRParser extends Parser { { root_0 = (GrammarAST)adaptor.nil(); - ACTION224=(Token)match(input,ACTION,FOLLOW_ACTION_in_rewriteTemplate4492); if (state.failed) return retval; + ACTION224=(Token)match(input,ACTION,FOLLOW_ACTION_in_rewriteTemplate4501); if (state.failed) return retval; if ( state.backtracking==0 ) { ACTION224_tree = new ActionAST(ACTION224) ; adaptor.addChild(root_0, ACTION224_tree); @@ -8892,22 +8892,22 @@ public class ANTLRParser extends Parser { // ANTLRParser.g:910:2: ( id LPAREN rewriteTemplateArgs RPAREN -> ^( TEMPLATE[$LPAREN,\"TEMPLATE\"] id ( rewriteTemplateArgs )? ) ) // ANTLRParser.g:910:4: id LPAREN rewriteTemplateArgs RPAREN { - pushFollow(FOLLOW_id_in_rewriteTemplateRef4508); + pushFollow(FOLLOW_id_in_rewriteTemplateRef4517); id225=id(); state._fsp--; if (state.failed) return retval; if ( state.backtracking==0 ) stream_id.add(id225.getTree()); - LPAREN226=(Token)match(input,LPAREN,FOLLOW_LPAREN_in_rewriteTemplateRef4510); if (state.failed) return retval; + LPAREN226=(Token)match(input,LPAREN,FOLLOW_LPAREN_in_rewriteTemplateRef4519); if (state.failed) return retval; if ( state.backtracking==0 ) stream_LPAREN.add(LPAREN226); - pushFollow(FOLLOW_rewriteTemplateArgs_in_rewriteTemplateRef4512); + pushFollow(FOLLOW_rewriteTemplateArgs_in_rewriteTemplateRef4521); rewriteTemplateArgs227=rewriteTemplateArgs(); state._fsp--; if (state.failed) return retval; if ( state.backtracking==0 ) stream_rewriteTemplateArgs.add(rewriteTemplateArgs227.getTree()); - RPAREN228=(Token)match(input,RPAREN,FOLLOW_RPAREN_in_rewriteTemplateRef4514); if (state.failed) return retval; + RPAREN228=(Token)match(input,RPAREN,FOLLOW_RPAREN_in_rewriteTemplateRef4523); if (state.failed) return retval; if ( state.backtracking==0 ) stream_RPAREN.add(RPAREN228); @@ -9001,31 +9001,31 @@ public class ANTLRParser extends Parser { // ANTLRParser.g:916:2: (lp= LPAREN ACTION RPAREN LPAREN rewriteTemplateArgs RPAREN -> ^( TEMPLATE[$lp,\"TEMPLATE\"] ACTION ( rewriteTemplateArgs )? ) ) // ANTLRParser.g:916:4: lp= LPAREN ACTION RPAREN LPAREN rewriteTemplateArgs RPAREN { - lp=(Token)match(input,LPAREN,FOLLOW_LPAREN_in_rewriteIndirectTemplateHead4543); if (state.failed) return retval; + lp=(Token)match(input,LPAREN,FOLLOW_LPAREN_in_rewriteIndirectTemplateHead4552); if (state.failed) return retval; if ( state.backtracking==0 ) stream_LPAREN.add(lp); - ACTION229=(Token)match(input,ACTION,FOLLOW_ACTION_in_rewriteIndirectTemplateHead4545); if (state.failed) return retval; + ACTION229=(Token)match(input,ACTION,FOLLOW_ACTION_in_rewriteIndirectTemplateHead4554); if (state.failed) return retval; if ( state.backtracking==0 ) stream_ACTION.add(ACTION229); - RPAREN230=(Token)match(input,RPAREN,FOLLOW_RPAREN_in_rewriteIndirectTemplateHead4547); if (state.failed) return retval; + RPAREN230=(Token)match(input,RPAREN,FOLLOW_RPAREN_in_rewriteIndirectTemplateHead4556); if (state.failed) return retval; if ( state.backtracking==0 ) stream_RPAREN.add(RPAREN230); - LPAREN231=(Token)match(input,LPAREN,FOLLOW_LPAREN_in_rewriteIndirectTemplateHead4549); if (state.failed) return retval; + LPAREN231=(Token)match(input,LPAREN,FOLLOW_LPAREN_in_rewriteIndirectTemplateHead4558); if (state.failed) return retval; if ( state.backtracking==0 ) stream_LPAREN.add(LPAREN231); - pushFollow(FOLLOW_rewriteTemplateArgs_in_rewriteIndirectTemplateHead4551); + pushFollow(FOLLOW_rewriteTemplateArgs_in_rewriteIndirectTemplateHead4560); rewriteTemplateArgs232=rewriteTemplateArgs(); state._fsp--; if (state.failed) return retval; if ( state.backtracking==0 ) stream_rewriteTemplateArgs.add(rewriteTemplateArgs232.getTree()); - RPAREN233=(Token)match(input,RPAREN,FOLLOW_RPAREN_in_rewriteIndirectTemplateHead4553); if (state.failed) return retval; + RPAREN233=(Token)match(input,RPAREN,FOLLOW_RPAREN_in_rewriteIndirectTemplateHead4562); if (state.failed) return retval; if ( state.backtracking==0 ) stream_RPAREN.add(RPAREN233); // AST REWRITE - // elements: ACTION, rewriteTemplateArgs + // elements: rewriteTemplateArgs, ACTION // token labels: // rule labels: retval // token list labels: @@ -9123,7 +9123,7 @@ public class ANTLRParser extends Parser { case 1 : // ANTLRParser.g:921:4: rewriteTemplateArg ( COMMA rewriteTemplateArg )* { - pushFollow(FOLLOW_rewriteTemplateArg_in_rewriteTemplateArgs4581); + pushFollow(FOLLOW_rewriteTemplateArg_in_rewriteTemplateArgs4590); rewriteTemplateArg234=rewriteTemplateArg(); state._fsp--; @@ -9144,10 +9144,10 @@ public class ANTLRParser extends Parser { case 1 : // ANTLRParser.g:921:24: COMMA rewriteTemplateArg { - COMMA235=(Token)match(input,COMMA,FOLLOW_COMMA_in_rewriteTemplateArgs4584); if (state.failed) return retval; + COMMA235=(Token)match(input,COMMA,FOLLOW_COMMA_in_rewriteTemplateArgs4593); if (state.failed) return retval; if ( state.backtracking==0 ) stream_COMMA.add(COMMA235); - pushFollow(FOLLOW_rewriteTemplateArg_in_rewriteTemplateArgs4586); + pushFollow(FOLLOW_rewriteTemplateArg_in_rewriteTemplateArgs4595); rewriteTemplateArg236=rewriteTemplateArg(); state._fsp--; @@ -9256,22 +9256,22 @@ public class ANTLRParser extends Parser { // ANTLRParser.g:927:2: ( id ASSIGN ACTION -> ^( ARG[$ASSIGN] id ACTION ) ) // ANTLRParser.g:927:6: id ASSIGN ACTION { - pushFollow(FOLLOW_id_in_rewriteTemplateArg4615); + pushFollow(FOLLOW_id_in_rewriteTemplateArg4624); id237=id(); state._fsp--; if (state.failed) return retval; if ( state.backtracking==0 ) stream_id.add(id237.getTree()); - ASSIGN238=(Token)match(input,ASSIGN,FOLLOW_ASSIGN_in_rewriteTemplateArg4617); if (state.failed) return retval; + ASSIGN238=(Token)match(input,ASSIGN,FOLLOW_ASSIGN_in_rewriteTemplateArg4626); if (state.failed) return retval; if ( state.backtracking==0 ) stream_ASSIGN.add(ASSIGN238); - ACTION239=(Token)match(input,ACTION,FOLLOW_ACTION_in_rewriteTemplateArg4619); if (state.failed) return retval; + ACTION239=(Token)match(input,ACTION,FOLLOW_ACTION_in_rewriteTemplateArg4628); if (state.failed) return retval; if ( state.backtracking==0 ) stream_ACTION.add(ACTION239); // AST REWRITE - // elements: id, ACTION + // elements: ACTION, id // token labels: // rule labels: retval // token list labels: @@ -9376,7 +9376,7 @@ public class ANTLRParser extends Parser { case 1 : // ANTLRParser.g:937:7: RULE_REF { - RULE_REF240=(Token)match(input,RULE_REF,FOLLOW_RULE_REF_in_id4661); if (state.failed) return retval; + RULE_REF240=(Token)match(input,RULE_REF,FOLLOW_RULE_REF_in_id4670); if (state.failed) return retval; if ( state.backtracking==0 ) stream_RULE_REF.add(RULE_REF240); @@ -9405,7 +9405,7 @@ public class ANTLRParser extends Parser { case 2 : // ANTLRParser.g:938:7: TOKEN_REF { - TOKEN_REF241=(Token)match(input,TOKEN_REF,FOLLOW_TOKEN_REF_in_id4674); if (state.failed) return retval; + TOKEN_REF241=(Token)match(input,TOKEN_REF,FOLLOW_TOKEN_REF_in_id4683); if (state.failed) return retval; if ( state.backtracking==0 ) stream_TOKEN_REF.add(TOKEN_REF241); @@ -9434,7 +9434,7 @@ public class ANTLRParser extends Parser { case 3 : // ANTLRParser.g:939:7: TEMPLATE { - TEMPLATE242=(Token)match(input,TEMPLATE,FOLLOW_TEMPLATE_in_id4686); if (state.failed) return retval; + TEMPLATE242=(Token)match(input,TEMPLATE,FOLLOW_TEMPLATE_in_id4695); if (state.failed) return retval; if ( state.backtracking==0 ) stream_TEMPLATE.add(TEMPLATE242); @@ -9512,7 +9512,7 @@ public class ANTLRParser extends Parser { // ANTLRParser.g:945:2: ( id ( DOT id )* -> ID[$qid.start, $text] ) // ANTLRParser.g:945:4: id ( DOT id )* { - pushFollow(FOLLOW_id_in_qid4720); + pushFollow(FOLLOW_id_in_qid4729); id243=id(); state._fsp--; @@ -9533,10 +9533,10 @@ public class ANTLRParser extends Parser { case 1 : // ANTLRParser.g:945:8: DOT id { - DOT244=(Token)match(input,DOT,FOLLOW_DOT_in_qid4723); if (state.failed) return retval; + DOT244=(Token)match(input,DOT,FOLLOW_DOT_in_qid4732); if (state.failed) return retval; if ( state.backtracking==0 ) stream_DOT.add(DOT244); - pushFollow(FOLLOW_id_in_qid4725); + pushFollow(FOLLOW_id_in_qid4734); id245=id(); state._fsp--; @@ -9622,13 +9622,13 @@ public class ANTLRParser extends Parser { { root_0 = (GrammarAST)adaptor.nil(); - pushFollow(FOLLOW_alternative_in_alternativeEntry4742); + pushFollow(FOLLOW_alternative_in_alternativeEntry4751); alternative246=alternative(); state._fsp--; if (state.failed) return retval; if ( state.backtracking==0 ) adaptor.addChild(root_0, alternative246.getTree()); - EOF247=(Token)match(input,EOF,FOLLOW_EOF_in_alternativeEntry4744); if (state.failed) return retval; + EOF247=(Token)match(input,EOF,FOLLOW_EOF_in_alternativeEntry4753); if (state.failed) return retval; if ( state.backtracking==0 ) { EOF247_tree = (GrammarAST)adaptor.create(EOF247); adaptor.addChild(root_0, EOF247_tree); @@ -9681,13 +9681,13 @@ public class ANTLRParser extends Parser { { root_0 = (GrammarAST)adaptor.nil(); - pushFollow(FOLLOW_element_in_elementEntry4753); + pushFollow(FOLLOW_element_in_elementEntry4762); element248=element(); state._fsp--; if (state.failed) return retval; if ( state.backtracking==0 ) adaptor.addChild(root_0, element248.getTree()); - EOF249=(Token)match(input,EOF,FOLLOW_EOF_in_elementEntry4755); if (state.failed) return retval; + EOF249=(Token)match(input,EOF,FOLLOW_EOF_in_elementEntry4764); if (state.failed) return retval; if ( state.backtracking==0 ) { EOF249_tree = (GrammarAST)adaptor.create(EOF249); adaptor.addChild(root_0, EOF249_tree); @@ -9740,13 +9740,13 @@ public class ANTLRParser extends Parser { { root_0 = (GrammarAST)adaptor.nil(); - pushFollow(FOLLOW_rule_in_ruleEntry4763); + pushFollow(FOLLOW_rule_in_ruleEntry4772); rule250=rule(); state._fsp--; if (state.failed) return retval; if ( state.backtracking==0 ) adaptor.addChild(root_0, rule250.getTree()); - EOF251=(Token)match(input,EOF,FOLLOW_EOF_in_ruleEntry4765); if (state.failed) return retval; + EOF251=(Token)match(input,EOF,FOLLOW_EOF_in_ruleEntry4774); if (state.failed) return retval; if ( state.backtracking==0 ) { EOF251_tree = (GrammarAST)adaptor.create(EOF251); adaptor.addChild(root_0, EOF251_tree); @@ -9799,13 +9799,13 @@ public class ANTLRParser extends Parser { { root_0 = (GrammarAST)adaptor.nil(); - pushFollow(FOLLOW_block_in_blockEntry4773); + pushFollow(FOLLOW_block_in_blockEntry4782); block252=block(); state._fsp--; if (state.failed) return retval; if ( state.backtracking==0 ) adaptor.addChild(root_0, block252.getTree()); - EOF253=(Token)match(input,EOF,FOLLOW_EOF_in_blockEntry4775); if (state.failed) return retval; + EOF253=(Token)match(input,EOF,FOLLOW_EOF_in_blockEntry4784); if (state.failed) return retval; if ( state.backtracking==0 ) { EOF253_tree = (GrammarAST)adaptor.create(EOF253); adaptor.addChild(root_0, EOF253_tree); @@ -9838,7 +9838,7 @@ public class ANTLRParser extends Parser { // ANTLRParser.g:830:7: ( rewriteTemplate ) // ANTLRParser.g:830:7: rewriteTemplate { - pushFollow(FOLLOW_rewriteTemplate_in_synpred1_ANTLRParser4060); + pushFollow(FOLLOW_rewriteTemplate_in_synpred1_ANTLRParser4069); rewriteTemplate(); state._fsp--; @@ -9853,7 +9853,7 @@ public class ANTLRParser extends Parser { // ANTLRParser.g:836:7: ( rewriteTreeAlt ) // ANTLRParser.g:836:7: rewriteTreeAlt { - pushFollow(FOLLOW_rewriteTreeAlt_in_synpred2_ANTLRParser4099); + pushFollow(FOLLOW_rewriteTreeAlt_in_synpred2_ANTLRParser4108); rewriteTreeAlt(); state._fsp--; @@ -10524,153 +10524,153 @@ public class ANTLRParser extends Parser { public static final BitSet FOLLOW_element_in_elements2684 = new BitSet(new long[]{0xA880020800010012L,0x0000000000000011L}); public static final BitSet FOLLOW_labeledElement_in_element2724 = new BitSet(new long[]{0x0006800000000002L}); public static final BitSet FOLLOW_ebnfSuffix_in_element2730 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_atom_in_element2773 = new BitSet(new long[]{0x0006800000000002L}); - public static final BitSet FOLLOW_ebnfSuffix_in_element2779 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_ebnf_in_element2822 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_ACTION_in_element2829 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_SEMPRED_in_element2839 = new BitSet(new long[]{0x0000080000000002L}); - public static final BitSet FOLLOW_IMPLIES_in_element2845 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_treeSpec_in_element2873 = new BitSet(new long[]{0x0006800000000002L}); - public static final BitSet FOLLOW_ebnfSuffix_in_element2879 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_id_in_labeledElement2941 = new BitSet(new long[]{0x0008400000000000L}); - public static final BitSet FOLLOW_ASSIGN_in_labeledElement2944 = new BitSet(new long[]{0xA080020800000000L,0x0000000000000011L}); - public static final BitSet FOLLOW_PLUS_ASSIGN_in_labeledElement2947 = new BitSet(new long[]{0xA080020800000000L,0x0000000000000011L}); - public static final BitSet FOLLOW_atom_in_labeledElement2952 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_block_in_labeledElement2954 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_TREE_BEGIN_in_treeSpec2972 = new BitSet(new long[]{0xA880020800010010L,0x0000000000000011L}); - public static final BitSet FOLLOW_element_in_treeSpec3013 = new BitSet(new long[]{0xA880020800010010L,0x0000000000000011L}); - public static final BitSet FOLLOW_element_in_treeSpec3044 = new BitSet(new long[]{0xA880060800010010L,0x0000000000000011L}); - public static final BitSet FOLLOW_RPAREN_in_treeSpec3053 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_block_in_ebnf3087 = new BitSet(new long[]{0x0027880000000002L}); - public static final BitSet FOLLOW_blockSuffixe_in_ebnf3122 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_ebnfSuffix_in_blockSuffixe3173 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_ROOT_in_blockSuffixe3187 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_IMPLIES_in_blockSuffixe3195 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_BANG_in_blockSuffixe3206 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_QUESTION_in_ebnfSuffix3225 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_STAR_in_ebnfSuffix3237 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_PLUS_in_ebnfSuffix3252 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_id_in_atom3300 = new BitSet(new long[]{0x0080000000000000L}); - public static final BitSet FOLLOW_DOT_in_atom3302 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000001L}); - public static final BitSet FOLLOW_ruleref_in_atom3304 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_range_in_atom3324 = new BitSet(new long[]{0x0021000000000002L}); - public static final BitSet FOLLOW_ROOT_in_atom3330 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_BANG_in_atom3335 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_terminal_in_atom3344 = new BitSet(new long[]{0x0021000000000002L}); - public static final BitSet FOLLOW_ROOT_in_atom3347 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_BANG_in_atom3352 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_ruleref_in_atom3365 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_notSet_in_atom3373 = new BitSet(new long[]{0x0021000000000002L}); - public static final BitSet FOLLOW_ROOT_in_atom3378 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_BANG_in_atom3381 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_DOT_in_atom3409 = new BitSet(new long[]{0x0000100000000002L}); - public static final BitSet FOLLOW_elementOptions_in_atom3411 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_NOT_in_notSet3469 = new BitSet(new long[]{0x8000000000000000L,0x0000000000000010L}); - public static final BitSet FOLLOW_terminal_in_notSet3471 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_NOT_in_notSet3487 = new BitSet(new long[]{0x0000020000000000L}); - public static final BitSet FOLLOW_block_in_notSet3489 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_LPAREN_in_block3522 = new BitSet(new long[]{0xBC90022900290010L,0x0000000000000011L}); - public static final BitSet FOLLOW_optionsSpec_in_block3559 = new BitSet(new long[]{0x1000002100280000L}); - public static final BitSet FOLLOW_ruleAction_in_block3564 = new BitSet(new long[]{0x1000002100280000L}); - public static final BitSet FOLLOW_COLON_in_block3567 = new BitSet(new long[]{0xAC90020800010010L,0x0000000000000011L}); - public static final BitSet FOLLOW_altList_in_block3581 = new BitSet(new long[]{0x0000040000000000L}); - public static final BitSet FOLLOW_RPAREN_in_block3598 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_RULE_REF_in_ruleref3648 = new BitSet(new long[]{0x0021000000004002L}); - public static final BitSet FOLLOW_ARG_ACTION_in_ruleref3650 = new BitSet(new long[]{0x0021000000000002L}); - public static final BitSet FOLLOW_ROOT_in_ruleref3660 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_BANG_in_ruleref3664 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_STRING_LITERAL_in_range3738 = new BitSet(new long[]{0x0100000000000000L}); - public static final BitSet FOLLOW_RANGE_in_range3743 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000010L}); - public static final BitSet FOLLOW_STRING_LITERAL_in_range3746 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_TOKEN_REF_in_terminal3771 = new BitSet(new long[]{0x0000100000004002L}); - public static final BitSet FOLLOW_ARG_ACTION_in_terminal3773 = new BitSet(new long[]{0x0000100000000002L}); - public static final BitSet FOLLOW_elementOptions_in_terminal3776 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_STRING_LITERAL_in_terminal3799 = new BitSet(new long[]{0x0000100000000002L}); - public static final BitSet FOLLOW_elementOptions_in_terminal3801 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_LT_in_elementOptions3833 = new BitSet(new long[]{0x8000000800000000L,0x0000000000000001L}); - public static final BitSet FOLLOW_elementOption_in_elementOptions3835 = new BitSet(new long[]{0x0000208000000000L}); - public static final BitSet FOLLOW_COMMA_in_elementOptions3838 = new BitSet(new long[]{0x8000000800000000L,0x0000000000000001L}); - public static final BitSet FOLLOW_elementOption_in_elementOptions3840 = new BitSet(new long[]{0x0000208000000000L}); - public static final BitSet FOLLOW_GT_in_elementOptions3844 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_qid_in_elementOption3879 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_id_in_elementOption3901 = new BitSet(new long[]{0x0000400000000000L}); - public static final BitSet FOLLOW_ASSIGN_in_elementOption3903 = new BitSet(new long[]{0x8000000800000000L,0x0000000000000011L}); - public static final BitSet FOLLOW_qid_in_elementOption3907 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_STRING_LITERAL_in_elementOption3911 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_predicatedRewrite_in_rewrite3929 = new BitSet(new long[]{0x0400000000000000L}); - public static final BitSet FOLLOW_nakedRewrite_in_rewrite3932 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_RARROW_in_predicatedRewrite3950 = new BitSet(new long[]{0x0000000000000010L}); - public static final BitSet FOLLOW_SEMPRED_in_predicatedRewrite3952 = new BitSet(new long[]{0x8A40020800010000L,0x0000000000000011L}); - public static final BitSet FOLLOW_rewriteAlt_in_predicatedRewrite3954 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_RARROW_in_nakedRewrite3994 = new BitSet(new long[]{0x8A40020800010000L,0x0000000000000011L}); - public static final BitSet FOLLOW_rewriteAlt_in_nakedRewrite3996 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_rewriteTemplate_in_rewriteAlt4060 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_rewriteTreeAlt_in_rewriteAlt4099 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_ETC_in_rewriteAlt4108 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_rewriteTreeElement_in_rewriteTreeAlt4139 = new BitSet(new long[]{0x8840020000010002L,0x0000000000000011L}); - public static final BitSet FOLLOW_rewriteTreeAtom_in_rewriteTreeElement4163 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_rewriteTreeAtom_in_rewriteTreeElement4168 = new BitSet(new long[]{0x0006800000000000L}); - public static final BitSet FOLLOW_ebnfSuffix_in_rewriteTreeElement4170 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_rewriteTree_in_rewriteTreeElement4195 = new BitSet(new long[]{0x0006800000000002L}); - public static final BitSet FOLLOW_ebnfSuffix_in_rewriteTreeElement4201 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_rewriteTreeEbnf_in_rewriteTreeElement4240 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_TOKEN_REF_in_rewriteTreeAtom4256 = new BitSet(new long[]{0x0000100000004002L}); - public static final BitSet FOLLOW_elementOptions_in_rewriteTreeAtom4258 = new BitSet(new long[]{0x0000000000004002L}); - public static final BitSet FOLLOW_ARG_ACTION_in_rewriteTreeAtom4261 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_RULE_REF_in_rewriteTreeAtom4288 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_STRING_LITERAL_in_rewriteTreeAtom4295 = new BitSet(new long[]{0x0000100000000002L}); - public static final BitSet FOLLOW_elementOptions_in_rewriteTreeAtom4297 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_DOLLAR_in_rewriteTreeAtom4320 = new BitSet(new long[]{0x8000000800000000L,0x0000000000000001L}); - public static final BitSet FOLLOW_id_in_rewriteTreeAtom4322 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_ACTION_in_rewriteTreeAtom4333 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_LPAREN_in_rewriteTreeEbnf4359 = new BitSet(new long[]{0x8840020000010000L,0x0000000000000011L}); - public static final BitSet FOLLOW_rewriteTreeAlt_in_rewriteTreeEbnf4361 = new BitSet(new long[]{0x0000040000000000L}); - public static final BitSet FOLLOW_RPAREN_in_rewriteTreeEbnf4363 = new BitSet(new long[]{0x0006800000000000L}); - public static final BitSet FOLLOW_ebnfSuffix_in_rewriteTreeEbnf4365 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_TREE_BEGIN_in_rewriteTree4389 = new BitSet(new long[]{0x8040000000010000L,0x0000000000000011L}); - public static final BitSet FOLLOW_rewriteTreeAtom_in_rewriteTree4391 = new BitSet(new long[]{0x8840060000010000L,0x0000000000000011L}); - public static final BitSet FOLLOW_rewriteTreeElement_in_rewriteTree4393 = new BitSet(new long[]{0x8840060000010000L,0x0000000000000011L}); - public static final BitSet FOLLOW_RPAREN_in_rewriteTree4396 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_TEMPLATE_in_rewriteTemplate4428 = new BitSet(new long[]{0x0000020000000000L}); - public static final BitSet FOLLOW_LPAREN_in_rewriteTemplate4430 = new BitSet(new long[]{0x8000040800000000L,0x0000000000000001L}); - public static final BitSet FOLLOW_rewriteTemplateArgs_in_rewriteTemplate4432 = new BitSet(new long[]{0x0000040000000000L}); - public static final BitSet FOLLOW_RPAREN_in_rewriteTemplate4434 = new BitSet(new long[]{0x0000000000000C00L}); - public static final BitSet FOLLOW_DOUBLE_QUOTE_STRING_LITERAL_in_rewriteTemplate4442 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_DOUBLE_ANGLE_STRING_LITERAL_in_rewriteTemplate4448 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_rewriteTemplateRef_in_rewriteTemplate4474 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_rewriteIndirectTemplateHead_in_rewriteTemplate4483 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_ACTION_in_rewriteTemplate4492 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_id_in_rewriteTemplateRef4508 = new BitSet(new long[]{0x0000020000000000L}); - public static final BitSet FOLLOW_LPAREN_in_rewriteTemplateRef4510 = new BitSet(new long[]{0x8000040800000000L,0x0000000000000001L}); - public static final BitSet FOLLOW_rewriteTemplateArgs_in_rewriteTemplateRef4512 = new BitSet(new long[]{0x0000040000000000L}); - public static final BitSet FOLLOW_RPAREN_in_rewriteTemplateRef4514 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_LPAREN_in_rewriteIndirectTemplateHead4543 = new BitSet(new long[]{0x0000000000010000L}); - public static final BitSet FOLLOW_ACTION_in_rewriteIndirectTemplateHead4545 = new BitSet(new long[]{0x0000040000000000L}); - public static final BitSet FOLLOW_RPAREN_in_rewriteIndirectTemplateHead4547 = new BitSet(new long[]{0x0000020000000000L}); - public static final BitSet FOLLOW_LPAREN_in_rewriteIndirectTemplateHead4549 = new BitSet(new long[]{0x8000040800000000L,0x0000000000000001L}); - public static final BitSet FOLLOW_rewriteTemplateArgs_in_rewriteIndirectTemplateHead4551 = new BitSet(new long[]{0x0000040000000000L}); - public static final BitSet FOLLOW_RPAREN_in_rewriteIndirectTemplateHead4553 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_rewriteTemplateArg_in_rewriteTemplateArgs4581 = new BitSet(new long[]{0x0000008000000002L}); - public static final BitSet FOLLOW_COMMA_in_rewriteTemplateArgs4584 = new BitSet(new long[]{0x8000000800000000L,0x0000000000000001L}); - public static final BitSet FOLLOW_rewriteTemplateArg_in_rewriteTemplateArgs4586 = new BitSet(new long[]{0x0000008000000002L}); - public static final BitSet FOLLOW_id_in_rewriteTemplateArg4615 = new BitSet(new long[]{0x0000400000000000L}); - public static final BitSet FOLLOW_ASSIGN_in_rewriteTemplateArg4617 = new BitSet(new long[]{0x0000000000010000L}); - public static final BitSet FOLLOW_ACTION_in_rewriteTemplateArg4619 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_RULE_REF_in_id4661 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_TOKEN_REF_in_id4674 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_TEMPLATE_in_id4686 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_id_in_qid4720 = new BitSet(new long[]{0x0080000000000002L}); - public static final BitSet FOLLOW_DOT_in_qid4723 = new BitSet(new long[]{0x8000000800000000L,0x0000000000000001L}); - public static final BitSet FOLLOW_id_in_qid4725 = new BitSet(new long[]{0x0080000000000002L}); - public static final BitSet FOLLOW_alternative_in_alternativeEntry4742 = new BitSet(new long[]{0x0000000000000000L}); - public static final BitSet FOLLOW_EOF_in_alternativeEntry4744 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_element_in_elementEntry4753 = new BitSet(new long[]{0x0000000000000000L}); - public static final BitSet FOLLOW_EOF_in_elementEntry4755 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_rule_in_ruleEntry4763 = new BitSet(new long[]{0x0000000000000000L}); - public static final BitSet FOLLOW_EOF_in_ruleEntry4765 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_block_in_blockEntry4773 = new BitSet(new long[]{0x0000000000000000L}); - public static final BitSet FOLLOW_EOF_in_blockEntry4775 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_rewriteTemplate_in_synpred1_ANTLRParser4060 = new BitSet(new long[]{0x0000000000000002L}); - public static final BitSet FOLLOW_rewriteTreeAlt_in_synpred2_ANTLRParser4099 = new BitSet(new long[]{0x0000000000000002L}); + public static final BitSet FOLLOW_atom_in_element2776 = new BitSet(new long[]{0x0006800000000002L}); + public static final BitSet FOLLOW_ebnfSuffix_in_element2782 = new BitSet(new long[]{0x0000000000000002L}); + public static final BitSet FOLLOW_ebnf_in_element2828 = new BitSet(new long[]{0x0000000000000002L}); + public static final BitSet FOLLOW_ACTION_in_element2835 = new BitSet(new long[]{0x0000000000000002L}); + public static final BitSet FOLLOW_SEMPRED_in_element2845 = new BitSet(new long[]{0x0000080000000002L}); + public static final BitSet FOLLOW_IMPLIES_in_element2851 = new BitSet(new long[]{0x0000000000000002L}); + public static final BitSet FOLLOW_treeSpec_in_element2879 = new BitSet(new long[]{0x0006800000000002L}); + public static final BitSet FOLLOW_ebnfSuffix_in_element2885 = new BitSet(new long[]{0x0000000000000002L}); + public static final BitSet FOLLOW_id_in_labeledElement2950 = new BitSet(new long[]{0x0008400000000000L}); + public static final BitSet FOLLOW_ASSIGN_in_labeledElement2953 = new BitSet(new long[]{0xA080020800000000L,0x0000000000000011L}); + public static final BitSet FOLLOW_PLUS_ASSIGN_in_labeledElement2956 = new BitSet(new long[]{0xA080020800000000L,0x0000000000000011L}); + public static final BitSet FOLLOW_atom_in_labeledElement2961 = new BitSet(new long[]{0x0000000000000002L}); + public static final BitSet FOLLOW_block_in_labeledElement2963 = new BitSet(new long[]{0x0000000000000002L}); + public static final BitSet FOLLOW_TREE_BEGIN_in_treeSpec2981 = new BitSet(new long[]{0xA880020800010010L,0x0000000000000011L}); + public static final BitSet FOLLOW_element_in_treeSpec3022 = new BitSet(new long[]{0xA880020800010010L,0x0000000000000011L}); + public static final BitSet FOLLOW_element_in_treeSpec3053 = new BitSet(new long[]{0xA880060800010010L,0x0000000000000011L}); + public static final BitSet FOLLOW_RPAREN_in_treeSpec3062 = new BitSet(new long[]{0x0000000000000002L}); + public static final BitSet FOLLOW_block_in_ebnf3096 = new BitSet(new long[]{0x0027880000000002L}); + public static final BitSet FOLLOW_blockSuffixe_in_ebnf3131 = new BitSet(new long[]{0x0000000000000002L}); + public static final BitSet FOLLOW_ebnfSuffix_in_blockSuffixe3182 = new BitSet(new long[]{0x0000000000000002L}); + public static final BitSet FOLLOW_ROOT_in_blockSuffixe3196 = new BitSet(new long[]{0x0000000000000002L}); + public static final BitSet FOLLOW_IMPLIES_in_blockSuffixe3204 = new BitSet(new long[]{0x0000000000000002L}); + public static final BitSet FOLLOW_BANG_in_blockSuffixe3215 = new BitSet(new long[]{0x0000000000000002L}); + public static final BitSet FOLLOW_QUESTION_in_ebnfSuffix3234 = new BitSet(new long[]{0x0000000000000002L}); + public static final BitSet FOLLOW_STAR_in_ebnfSuffix3246 = new BitSet(new long[]{0x0000000000000002L}); + public static final BitSet FOLLOW_PLUS_in_ebnfSuffix3261 = new BitSet(new long[]{0x0000000000000002L}); + public static final BitSet FOLLOW_id_in_atom3309 = new BitSet(new long[]{0x0080000000000000L}); + public static final BitSet FOLLOW_DOT_in_atom3311 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000001L}); + public static final BitSet FOLLOW_ruleref_in_atom3313 = new BitSet(new long[]{0x0000000000000002L}); + public static final BitSet FOLLOW_range_in_atom3333 = new BitSet(new long[]{0x0021000000000002L}); + public static final BitSet FOLLOW_ROOT_in_atom3339 = new BitSet(new long[]{0x0000000000000002L}); + public static final BitSet FOLLOW_BANG_in_atom3344 = new BitSet(new long[]{0x0000000000000002L}); + public static final BitSet FOLLOW_terminal_in_atom3353 = new BitSet(new long[]{0x0021000000000002L}); + public static final BitSet FOLLOW_ROOT_in_atom3356 = new BitSet(new long[]{0x0000000000000002L}); + public static final BitSet FOLLOW_BANG_in_atom3361 = new BitSet(new long[]{0x0000000000000002L}); + public static final BitSet FOLLOW_ruleref_in_atom3374 = new BitSet(new long[]{0x0000000000000002L}); + public static final BitSet FOLLOW_notSet_in_atom3382 = new BitSet(new long[]{0x0021000000000002L}); + public static final BitSet FOLLOW_ROOT_in_atom3387 = new BitSet(new long[]{0x0000000000000002L}); + public static final BitSet FOLLOW_BANG_in_atom3390 = new BitSet(new long[]{0x0000000000000002L}); + public static final BitSet FOLLOW_DOT_in_atom3418 = new BitSet(new long[]{0x0000100000000002L}); + public static final BitSet FOLLOW_elementOptions_in_atom3420 = new BitSet(new long[]{0x0000000000000002L}); + public static final BitSet FOLLOW_NOT_in_notSet3478 = new BitSet(new long[]{0x8000000000000000L,0x0000000000000010L}); + public static final BitSet FOLLOW_terminal_in_notSet3480 = new BitSet(new long[]{0x0000000000000002L}); + public static final BitSet FOLLOW_NOT_in_notSet3496 = new BitSet(new long[]{0x0000020000000000L}); + public static final BitSet FOLLOW_block_in_notSet3498 = new BitSet(new long[]{0x0000000000000002L}); + public static final BitSet FOLLOW_LPAREN_in_block3531 = new BitSet(new long[]{0xBC90022900290010L,0x0000000000000011L}); + public static final BitSet FOLLOW_optionsSpec_in_block3568 = new BitSet(new long[]{0x1000002100280000L}); + public static final BitSet FOLLOW_ruleAction_in_block3573 = new BitSet(new long[]{0x1000002100280000L}); + public static final BitSet FOLLOW_COLON_in_block3576 = new BitSet(new long[]{0xAC90020800010010L,0x0000000000000011L}); + public static final BitSet FOLLOW_altList_in_block3590 = new BitSet(new long[]{0x0000040000000000L}); + public static final BitSet FOLLOW_RPAREN_in_block3607 = new BitSet(new long[]{0x0000000000000002L}); + public static final BitSet FOLLOW_RULE_REF_in_ruleref3657 = new BitSet(new long[]{0x0021000000004002L}); + public static final BitSet FOLLOW_ARG_ACTION_in_ruleref3659 = new BitSet(new long[]{0x0021000000000002L}); + public static final BitSet FOLLOW_ROOT_in_ruleref3669 = new BitSet(new long[]{0x0000000000000002L}); + public static final BitSet FOLLOW_BANG_in_ruleref3673 = new BitSet(new long[]{0x0000000000000002L}); + public static final BitSet FOLLOW_STRING_LITERAL_in_range3747 = new BitSet(new long[]{0x0100000000000000L}); + public static final BitSet FOLLOW_RANGE_in_range3752 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000010L}); + public static final BitSet FOLLOW_STRING_LITERAL_in_range3755 = new BitSet(new long[]{0x0000000000000002L}); + public static final BitSet FOLLOW_TOKEN_REF_in_terminal3780 = new BitSet(new long[]{0x0000100000004002L}); + public static final BitSet FOLLOW_ARG_ACTION_in_terminal3782 = new BitSet(new long[]{0x0000100000000002L}); + public static final BitSet FOLLOW_elementOptions_in_terminal3785 = new BitSet(new long[]{0x0000000000000002L}); + public static final BitSet FOLLOW_STRING_LITERAL_in_terminal3808 = new BitSet(new long[]{0x0000100000000002L}); + public static final BitSet FOLLOW_elementOptions_in_terminal3810 = new BitSet(new long[]{0x0000000000000002L}); + public static final BitSet FOLLOW_LT_in_elementOptions3842 = new BitSet(new long[]{0x8000000800000000L,0x0000000000000001L}); + public static final BitSet FOLLOW_elementOption_in_elementOptions3844 = new BitSet(new long[]{0x0000208000000000L}); + public static final BitSet FOLLOW_COMMA_in_elementOptions3847 = new BitSet(new long[]{0x8000000800000000L,0x0000000000000001L}); + public static final BitSet FOLLOW_elementOption_in_elementOptions3849 = new BitSet(new long[]{0x0000208000000000L}); + public static final BitSet FOLLOW_GT_in_elementOptions3853 = new BitSet(new long[]{0x0000000000000002L}); + public static final BitSet FOLLOW_qid_in_elementOption3888 = new BitSet(new long[]{0x0000000000000002L}); + public static final BitSet FOLLOW_id_in_elementOption3910 = new BitSet(new long[]{0x0000400000000000L}); + public static final BitSet FOLLOW_ASSIGN_in_elementOption3912 = new BitSet(new long[]{0x8000000800000000L,0x0000000000000011L}); + public static final BitSet FOLLOW_qid_in_elementOption3916 = new BitSet(new long[]{0x0000000000000002L}); + public static final BitSet FOLLOW_STRING_LITERAL_in_elementOption3920 = new BitSet(new long[]{0x0000000000000002L}); + public static final BitSet FOLLOW_predicatedRewrite_in_rewrite3938 = new BitSet(new long[]{0x0400000000000000L}); + public static final BitSet FOLLOW_nakedRewrite_in_rewrite3941 = new BitSet(new long[]{0x0000000000000002L}); + public static final BitSet FOLLOW_RARROW_in_predicatedRewrite3959 = new BitSet(new long[]{0x0000000000000010L}); + public static final BitSet FOLLOW_SEMPRED_in_predicatedRewrite3961 = new BitSet(new long[]{0x8A40020800010000L,0x0000000000000011L}); + public static final BitSet FOLLOW_rewriteAlt_in_predicatedRewrite3963 = new BitSet(new long[]{0x0000000000000002L}); + public static final BitSet FOLLOW_RARROW_in_nakedRewrite4003 = new BitSet(new long[]{0x8A40020800010000L,0x0000000000000011L}); + public static final BitSet FOLLOW_rewriteAlt_in_nakedRewrite4005 = new BitSet(new long[]{0x0000000000000002L}); + public static final BitSet FOLLOW_rewriteTemplate_in_rewriteAlt4069 = new BitSet(new long[]{0x0000000000000002L}); + public static final BitSet FOLLOW_rewriteTreeAlt_in_rewriteAlt4108 = new BitSet(new long[]{0x0000000000000002L}); + public static final BitSet FOLLOW_ETC_in_rewriteAlt4117 = new BitSet(new long[]{0x0000000000000002L}); + public static final BitSet FOLLOW_rewriteTreeElement_in_rewriteTreeAlt4148 = new BitSet(new long[]{0x8840020000010002L,0x0000000000000011L}); + public static final BitSet FOLLOW_rewriteTreeAtom_in_rewriteTreeElement4172 = new BitSet(new long[]{0x0000000000000002L}); + public static final BitSet FOLLOW_rewriteTreeAtom_in_rewriteTreeElement4177 = new BitSet(new long[]{0x0006800000000000L}); + public static final BitSet FOLLOW_ebnfSuffix_in_rewriteTreeElement4179 = new BitSet(new long[]{0x0000000000000002L}); + public static final BitSet FOLLOW_rewriteTree_in_rewriteTreeElement4204 = new BitSet(new long[]{0x0006800000000002L}); + public static final BitSet FOLLOW_ebnfSuffix_in_rewriteTreeElement4210 = new BitSet(new long[]{0x0000000000000002L}); + public static final BitSet FOLLOW_rewriteTreeEbnf_in_rewriteTreeElement4249 = new BitSet(new long[]{0x0000000000000002L}); + public static final BitSet FOLLOW_TOKEN_REF_in_rewriteTreeAtom4265 = new BitSet(new long[]{0x0000100000004002L}); + public static final BitSet FOLLOW_elementOptions_in_rewriteTreeAtom4267 = new BitSet(new long[]{0x0000000000004002L}); + public static final BitSet FOLLOW_ARG_ACTION_in_rewriteTreeAtom4270 = new BitSet(new long[]{0x0000000000000002L}); + public static final BitSet FOLLOW_RULE_REF_in_rewriteTreeAtom4297 = new BitSet(new long[]{0x0000000000000002L}); + public static final BitSet FOLLOW_STRING_LITERAL_in_rewriteTreeAtom4304 = new BitSet(new long[]{0x0000100000000002L}); + public static final BitSet FOLLOW_elementOptions_in_rewriteTreeAtom4306 = new BitSet(new long[]{0x0000000000000002L}); + public static final BitSet FOLLOW_DOLLAR_in_rewriteTreeAtom4329 = new BitSet(new long[]{0x8000000800000000L,0x0000000000000001L}); + public static final BitSet FOLLOW_id_in_rewriteTreeAtom4331 = new BitSet(new long[]{0x0000000000000002L}); + public static final BitSet FOLLOW_ACTION_in_rewriteTreeAtom4342 = new BitSet(new long[]{0x0000000000000002L}); + public static final BitSet FOLLOW_LPAREN_in_rewriteTreeEbnf4368 = new BitSet(new long[]{0x8840020000010000L,0x0000000000000011L}); + public static final BitSet FOLLOW_rewriteTreeAlt_in_rewriteTreeEbnf4370 = new BitSet(new long[]{0x0000040000000000L}); + public static final BitSet FOLLOW_RPAREN_in_rewriteTreeEbnf4372 = new BitSet(new long[]{0x0006800000000000L}); + public static final BitSet FOLLOW_ebnfSuffix_in_rewriteTreeEbnf4374 = new BitSet(new long[]{0x0000000000000002L}); + public static final BitSet FOLLOW_TREE_BEGIN_in_rewriteTree4398 = new BitSet(new long[]{0x8040000000010000L,0x0000000000000011L}); + public static final BitSet FOLLOW_rewriteTreeAtom_in_rewriteTree4400 = new BitSet(new long[]{0x8840060000010000L,0x0000000000000011L}); + public static final BitSet FOLLOW_rewriteTreeElement_in_rewriteTree4402 = new BitSet(new long[]{0x8840060000010000L,0x0000000000000011L}); + public static final BitSet FOLLOW_RPAREN_in_rewriteTree4405 = new BitSet(new long[]{0x0000000000000002L}); + public static final BitSet FOLLOW_TEMPLATE_in_rewriteTemplate4437 = new BitSet(new long[]{0x0000020000000000L}); + public static final BitSet FOLLOW_LPAREN_in_rewriteTemplate4439 = new BitSet(new long[]{0x8000040800000000L,0x0000000000000001L}); + public static final BitSet FOLLOW_rewriteTemplateArgs_in_rewriteTemplate4441 = new BitSet(new long[]{0x0000040000000000L}); + public static final BitSet FOLLOW_RPAREN_in_rewriteTemplate4443 = new BitSet(new long[]{0x0000000000000C00L}); + public static final BitSet FOLLOW_DOUBLE_QUOTE_STRING_LITERAL_in_rewriteTemplate4451 = new BitSet(new long[]{0x0000000000000002L}); + public static final BitSet FOLLOW_DOUBLE_ANGLE_STRING_LITERAL_in_rewriteTemplate4457 = new BitSet(new long[]{0x0000000000000002L}); + public static final BitSet FOLLOW_rewriteTemplateRef_in_rewriteTemplate4483 = new BitSet(new long[]{0x0000000000000002L}); + public static final BitSet FOLLOW_rewriteIndirectTemplateHead_in_rewriteTemplate4492 = new BitSet(new long[]{0x0000000000000002L}); + public static final BitSet FOLLOW_ACTION_in_rewriteTemplate4501 = new BitSet(new long[]{0x0000000000000002L}); + public static final BitSet FOLLOW_id_in_rewriteTemplateRef4517 = new BitSet(new long[]{0x0000020000000000L}); + public static final BitSet FOLLOW_LPAREN_in_rewriteTemplateRef4519 = new BitSet(new long[]{0x8000040800000000L,0x0000000000000001L}); + public static final BitSet FOLLOW_rewriteTemplateArgs_in_rewriteTemplateRef4521 = new BitSet(new long[]{0x0000040000000000L}); + public static final BitSet FOLLOW_RPAREN_in_rewriteTemplateRef4523 = new BitSet(new long[]{0x0000000000000002L}); + public static final BitSet FOLLOW_LPAREN_in_rewriteIndirectTemplateHead4552 = new BitSet(new long[]{0x0000000000010000L}); + public static final BitSet FOLLOW_ACTION_in_rewriteIndirectTemplateHead4554 = new BitSet(new long[]{0x0000040000000000L}); + public static final BitSet FOLLOW_RPAREN_in_rewriteIndirectTemplateHead4556 = new BitSet(new long[]{0x0000020000000000L}); + public static final BitSet FOLLOW_LPAREN_in_rewriteIndirectTemplateHead4558 = new BitSet(new long[]{0x8000040800000000L,0x0000000000000001L}); + public static final BitSet FOLLOW_rewriteTemplateArgs_in_rewriteIndirectTemplateHead4560 = new BitSet(new long[]{0x0000040000000000L}); + public static final BitSet FOLLOW_RPAREN_in_rewriteIndirectTemplateHead4562 = new BitSet(new long[]{0x0000000000000002L}); + public static final BitSet FOLLOW_rewriteTemplateArg_in_rewriteTemplateArgs4590 = new BitSet(new long[]{0x0000008000000002L}); + public static final BitSet FOLLOW_COMMA_in_rewriteTemplateArgs4593 = new BitSet(new long[]{0x8000000800000000L,0x0000000000000001L}); + public static final BitSet FOLLOW_rewriteTemplateArg_in_rewriteTemplateArgs4595 = new BitSet(new long[]{0x0000008000000002L}); + public static final BitSet FOLLOW_id_in_rewriteTemplateArg4624 = new BitSet(new long[]{0x0000400000000000L}); + public static final BitSet FOLLOW_ASSIGN_in_rewriteTemplateArg4626 = new BitSet(new long[]{0x0000000000010000L}); + public static final BitSet FOLLOW_ACTION_in_rewriteTemplateArg4628 = new BitSet(new long[]{0x0000000000000002L}); + public static final BitSet FOLLOW_RULE_REF_in_id4670 = new BitSet(new long[]{0x0000000000000002L}); + public static final BitSet FOLLOW_TOKEN_REF_in_id4683 = new BitSet(new long[]{0x0000000000000002L}); + public static final BitSet FOLLOW_TEMPLATE_in_id4695 = new BitSet(new long[]{0x0000000000000002L}); + public static final BitSet FOLLOW_id_in_qid4729 = new BitSet(new long[]{0x0080000000000002L}); + public static final BitSet FOLLOW_DOT_in_qid4732 = new BitSet(new long[]{0x8000000800000000L,0x0000000000000001L}); + public static final BitSet FOLLOW_id_in_qid4734 = new BitSet(new long[]{0x0080000000000002L}); + public static final BitSet FOLLOW_alternative_in_alternativeEntry4751 = new BitSet(new long[]{0x0000000000000000L}); + public static final BitSet FOLLOW_EOF_in_alternativeEntry4753 = new BitSet(new long[]{0x0000000000000002L}); + public static final BitSet FOLLOW_element_in_elementEntry4762 = new BitSet(new long[]{0x0000000000000000L}); + public static final BitSet FOLLOW_EOF_in_elementEntry4764 = new BitSet(new long[]{0x0000000000000002L}); + public static final BitSet FOLLOW_rule_in_ruleEntry4772 = new BitSet(new long[]{0x0000000000000000L}); + public static final BitSet FOLLOW_EOF_in_ruleEntry4774 = new BitSet(new long[]{0x0000000000000002L}); + public static final BitSet FOLLOW_block_in_blockEntry4782 = new BitSet(new long[]{0x0000000000000000L}); + public static final BitSet FOLLOW_EOF_in_blockEntry4784 = new BitSet(new long[]{0x0000000000000002L}); + public static final BitSet FOLLOW_rewriteTemplate_in_synpred1_ANTLRParser4069 = new BitSet(new long[]{0x0000000000000002L}); + public static final BitSet FOLLOW_rewriteTreeAlt_in_synpred2_ANTLRParser4108 = new BitSet(new long[]{0x0000000000000002L}); } \ No newline at end of file diff --git a/tool/src/org/antlr/v4/parse/ASTVerifier.java b/tool/src/org/antlr/v4/parse/ASTVerifier.java index ed7c2e024..ecdbb7811 100644 --- a/tool/src/org/antlr/v4/parse/ASTVerifier.java +++ b/tool/src/org/antlr/v4/parse/ASTVerifier.java @@ -1,4 +1,4 @@ -// $ANTLR ${project.version} ${buildNumber} ASTVerifier.g 2010-05-19 15:07:27 +// $ANTLR ${project.version} ${buildNumber} ASTVerifier.g 2010-05-21 18:41:01 /* [The "BSD license"] diff --git a/tool/src/org/antlr/v4/parse/ActionSplitter.java b/tool/src/org/antlr/v4/parse/ActionSplitter.java index a18f6774b..97f935b3b 100644 --- a/tool/src/org/antlr/v4/parse/ActionSplitter.java +++ b/tool/src/org/antlr/v4/parse/ActionSplitter.java @@ -1,4 +1,4 @@ -// $ANTLR ${project.version} ${buildNumber} ActionSplitter.g 2010-05-19 15:07:26 +// $ANTLR ${project.version} ${buildNumber} ActionSplitter.g 2010-05-21 18:41:01 package org.antlr.v4.parse; @@ -2399,11 +2399,11 @@ public class ActionSplitter extends Lexer { state.failed=false; return success; } - public final boolean synpred15_ActionSplitter() { + public final boolean synpred3_ActionSplitter() { state.backtracking++; int start = input.mark(); try { - synpred15_ActionSplitter_fragment(); // can never throw exception + synpred3_ActionSplitter_fragment(); // can never throw exception } catch (RecognitionException re) { System.err.println("impossible: "+re); } @@ -2413,11 +2413,11 @@ public class ActionSplitter extends Lexer { state.failed=false; return success; } - public final boolean synpred3_ActionSplitter() { + public final boolean synpred15_ActionSplitter() { state.backtracking++; int start = input.mark(); try { - synpred3_ActionSplitter_fragment(); // can never throw exception + synpred15_ActionSplitter_fragment(); // can never throw exception } catch (RecognitionException re) { System.err.println("impossible: "+re); } @@ -2495,20 +2495,23 @@ public class ActionSplitter extends Lexer { static final String DFA29_eofS = "\32\uffff"; static final String DFA29_minS = - "\2\0\6\uffff\1\0\2\uffff\1\0\2\uffff\1\0\13\uffff"; + "\2\0\2\uffff\1\0\7\uffff\1\0\2\uffff\1\0\12\uffff"; static final String DFA29_maxS = - "\1\uffff\1\0\6\uffff\1\0\2\uffff\1\0\2\uffff\1\0\13\uffff"; + "\1\uffff\1\0\2\uffff\1\0\7\uffff\1\0\2\uffff\1\0\12\uffff"; static final String DFA29_acceptS = - "\2\uffff\1\16\1\17\1\20\1\21\1\22\1\23\1\uffff\1\3\1\24\1\uffff"+ - "\1\1\1\2\1\uffff\1\4\1\5\1\6\1\7\1\10\1\11\1\12\1\13\1\14\1\15\1"+ - "\24"; + "\2\uffff\1\3\1\24\1\uffff\1\16\1\17\1\20\1\21\1\22\1\23\1\24\1\uffff"+ + "\1\1\1\2\1\uffff\1\4\1\5\1\6\1\7\1\10\1\11\1\12\1\13\1\14\1\15"; static final String DFA29_specialS = - "\1\0\1\1\6\uffff\1\2\2\uffff\1\3\2\uffff\1\4\13\uffff}>"; + "\1\0\1\1\2\uffff\1\2\7\uffff\1\3\2\uffff\1\4\12\uffff}>"; static final String[] DFA29_transitionS = { - "\44\31\1\16\1\1\11\31\1\13\54\31\1\10\uffa3\31", + "\44\13\1\17\1\4\11\13\1\14\54\13\1\1\uffa3\13", "\1\uffff", "", "", + "\1\uffff", + "", + "", + "", "", "", "", @@ -2519,10 +2522,6 @@ public class ActionSplitter extends Lexer { "\1\uffff", "", "", - "\1\uffff", - "", - "", - "", "", "", "", @@ -2573,15 +2572,15 @@ public class ActionSplitter extends Lexer { int LA29_0 = input.LA(1); s = -1; - if ( (LA29_0=='%') ) {s = 1;} + if ( (LA29_0=='\\') ) {s = 1;} - else if ( (LA29_0=='\\') ) {s = 8;} + else if ( (LA29_0=='%') ) {s = 4;} - else if ( (LA29_0=='/') ) {s = 11;} + else if ( ((LA29_0>='\u0000' && LA29_0<='#')||(LA29_0>='&' && LA29_0<='.')||(LA29_0>='0' && LA29_0<='[')||(LA29_0>=']' && LA29_0<='\uFFFF')) ) {s = 11;} - else if ( (LA29_0=='$') ) {s = 14;} + else if ( (LA29_0=='/') ) {s = 12;} - else if ( ((LA29_0>='\u0000' && LA29_0<='#')||(LA29_0>='&' && LA29_0<='.')||(LA29_0>='0' && LA29_0<='[')||(LA29_0>=']' && LA29_0<='\uFFFF')) ) {s = 25;} + else if ( (LA29_0=='$') ) {s = 15;} if ( s>=0 ) return s; break; @@ -2592,83 +2591,83 @@ public class ActionSplitter extends Lexer { int index29_1 = input.index(); input.rewind(); s = -1; - if ( (synpred14_ActionSplitter()) ) {s = 2;} + if ( (synpred3_ActionSplitter()) ) {s = 2;} - else if ( (synpred15_ActionSplitter()) ) {s = 3;} - - else if ( (synpred16_ActionSplitter()) ) {s = 4;} - - else if ( (synpred17_ActionSplitter()) ) {s = 5;} - - else if ( (synpred18_ActionSplitter()) ) {s = 6;} - - else if ( (synpred19_ActionSplitter()) ) {s = 7;} + else if ( (true) ) {s = 3;} input.seek(index29_1); if ( s>=0 ) return s; break; case 2 : - int LA29_8 = input.LA(1); + int LA29_4 = input.LA(1); - int index29_8 = input.index(); + int index29_4 = input.index(); input.rewind(); s = -1; - if ( (synpred3_ActionSplitter()) ) {s = 9;} + if ( (synpred14_ActionSplitter()) ) {s = 5;} - else if ( (true) ) {s = 10;} + else if ( (synpred15_ActionSplitter()) ) {s = 6;} + + else if ( (synpred16_ActionSplitter()) ) {s = 7;} + + else if ( (synpred17_ActionSplitter()) ) {s = 8;} + + else if ( (synpred18_ActionSplitter()) ) {s = 9;} + + else if ( (synpred19_ActionSplitter()) ) {s = 10;} - input.seek(index29_8); + input.seek(index29_4); if ( s>=0 ) return s; break; case 3 : - int LA29_11 = input.LA(1); + int LA29_12 = input.LA(1); - int index29_11 = input.index(); + int index29_12 = input.index(); input.rewind(); s = -1; - if ( (synpred1_ActionSplitter()) ) {s = 12;} + if ( (synpred1_ActionSplitter()) ) {s = 13;} - else if ( (synpred2_ActionSplitter()) ) {s = 13;} + else if ( (synpred2_ActionSplitter()) ) {s = 14;} - else if ( (true) ) {s = 10;} + else if ( (true) ) {s = 11;} - input.seek(index29_11); + input.seek(index29_12); if ( s>=0 ) return s; break; case 4 : - int LA29_14 = input.LA(1); + int LA29_15 = input.LA(1); - int index29_14 = input.index(); + int index29_15 = input.index(); input.rewind(); s = -1; - if ( (synpred4_ActionSplitter()) ) {s = 15;} + if ( (synpred4_ActionSplitter()) ) {s = 16;} - else if ( (synpred5_ActionSplitter()) ) {s = 16;} + else if ( (synpred5_ActionSplitter()) ) {s = 17;} - else if ( (synpred6_ActionSplitter()) ) {s = 17;} + else if ( (synpred6_ActionSplitter()) ) {s = 18;} - else if ( (synpred7_ActionSplitter()) ) {s = 18;} + else if ( (synpred7_ActionSplitter()) ) {s = 19;} - else if ( (synpred8_ActionSplitter()) ) {s = 19;} + else if ( (synpred8_ActionSplitter()) ) {s = 20;} - else if ( (synpred9_ActionSplitter()) ) {s = 20;} + else if ( (synpred9_ActionSplitter()) ) {s = 21;} - else if ( (synpred10_ActionSplitter()) ) {s = 21;} + else if ( (synpred10_ActionSplitter()) ) {s = 22;} - else if ( (synpred11_ActionSplitter()) ) {s = 22;} + else if ( (synpred11_ActionSplitter()) ) {s = 23;} - else if ( (synpred12_ActionSplitter()) ) {s = 23;} + else if ( (synpred12_ActionSplitter()) ) {s = 24;} - else if ( (synpred13_ActionSplitter()) ) {s = 24;} + else if ( (synpred13_ActionSplitter()) ) {s = 25;} - input.seek(index29_14); + input.seek(index29_15); if ( s>=0 ) return s; break; } diff --git a/tool/src/org/antlr/v4/parse/NFABuilder.java b/tool/src/org/antlr/v4/parse/NFABuilder.java index 26c487dcf..449aa3e7e 100644 --- a/tool/src/org/antlr/v4/parse/NFABuilder.java +++ b/tool/src/org/antlr/v4/parse/NFABuilder.java @@ -1,4 +1,4 @@ -// $ANTLR ${project.version} ${buildNumber} NFABuilder.g 2010-05-19 15:07:26 +// $ANTLR ${project.version} ${buildNumber} NFABuilder.g 2010-05-21 18:41:01 /* [The "BSD license"] diff --git a/tool/test/org/antlr/v4/test/TestLinearApproximateLookahead.java b/tool/test/org/antlr/v4/test/TestLinearApproximateLookahead.java index aafaf2d97..f37cd6a69 100644 --- a/tool/test/org/antlr/v4/test/TestLinearApproximateLookahead.java +++ b/tool/test/org/antlr/v4/test/TestLinearApproximateLookahead.java @@ -102,7 +102,7 @@ public class TestLinearApproximateLookahead extends BaseTest { return; } DecisionState blk = (DecisionState)s.transition(0).target; - LinearApproximator lin = new LinearApproximator(g, blk.decision); + LinearApproximator lin = new LinearApproximator(g); DFA dfa = lin.createDFA(blk); String result = null; if ( dfa!=null ) result = dfa.toString();