From bf088010224d2ca5041ee61b68e95469739d609c Mon Sep 17 00:00:00 2001 From: parrt Date: Fri, 26 Feb 2010 19:13:08 -0800 Subject: [PATCH] got more NFA created [git-p4: depot-paths = "//depot/code/antlr4/main/": change = 6732] --- .../antlr/v4/automata/ActionTransition.java | 3 +- .../src/org/antlr/v4/automata/BasicState.java | 2 +- .../antlr/v4/automata/BlockStartState.java | 9 + .../antlr/v4/automata/ParserNFAFactory.java | 74 +- .../v4/automata/PredicateTransition.java | 9 +- tool/src/org/antlr/v4/parse/NFABuilder.g | 103 +- tool/src/org/antlr/v4/parse/NFABuilder.java | 1092 ++++++++++------- 7 files changed, 761 insertions(+), 531 deletions(-) diff --git a/tool/src/org/antlr/v4/automata/ActionTransition.java b/tool/src/org/antlr/v4/automata/ActionTransition.java index 51896fd68..6200b72b6 100644 --- a/tool/src/org/antlr/v4/automata/ActionTransition.java +++ b/tool/src/org/antlr/v4/automata/ActionTransition.java @@ -6,7 +6,8 @@ import org.antlr.v4.tool.GrammarAST; public class ActionTransition extends Transition { public GrammarAST actionAST; - public ActionTransition(GrammarAST actionAST) { + public ActionTransition(GrammarAST actionAST, NFAState target) { + super(target); this.actionAST = actionAST; } diff --git a/tool/src/org/antlr/v4/automata/BasicState.java b/tool/src/org/antlr/v4/automata/BasicState.java index 5c3bbdf67..cd80b5136 100644 --- a/tool/src/org/antlr/v4/automata/BasicState.java +++ b/tool/src/org/antlr/v4/automata/BasicState.java @@ -2,7 +2,7 @@ package org.antlr.v4.automata; /** */ public class BasicState extends NFAState { - public Transition target; + public Transition transition; /** For o-A->o type NFA tranitions, record the label that leads to this * state. Useful for creating rich error messages when we find diff --git a/tool/src/org/antlr/v4/automata/BlockStartState.java b/tool/src/org/antlr/v4/automata/BlockStartState.java index 9d6d82271..7ac6e05b8 100644 --- a/tool/src/org/antlr/v4/automata/BlockStartState.java +++ b/tool/src/org/antlr/v4/automata/BlockStartState.java @@ -17,4 +17,13 @@ public class BlockStartState extends NFAState { new ArrayList(INITIAL_NUM_TRANSITIONS); public BlockStartState(NFA nfa) { super(nfa); } + + @Override + public int getNumberOfTransitions() { return transitions.size(); } + + @Override + public void addTransition(Transition e) { transitions.add(e); } + + @Override + public Transition transition(int i) { return transitions.get(i); } } diff --git a/tool/src/org/antlr/v4/automata/ParserNFAFactory.java b/tool/src/org/antlr/v4/automata/ParserNFAFactory.java index 8c0ab0302..c3afdb18a 100644 --- a/tool/src/org/antlr/v4/automata/ParserNFAFactory.java +++ b/tool/src/org/antlr/v4/automata/ParserNFAFactory.java @@ -10,6 +10,8 @@ import org.antlr.v4.tool.TerminalAST; import java.util.Collection; import java.util.List; +// TODO: investigate o-X->o for basic states with typename for transition + /** Superclass of NFABuilder.g that provides actual NFA construction routines. */ public class ParserNFAFactory implements NFAFactory { public Grammar g; @@ -41,22 +43,22 @@ public class ParserNFAFactory implements NFAFactory { this.currentRule = g.getRule(name); } - public NFAState newState() { - NFAState n = new BasicState(nfa); + public BasicState newState(GrammarAST node) { + BasicState n = new BasicState(nfa); + n.ast = node; nfa.addState(n); return n; } + public BasicState newState() { return newState(null); } + /** From label A build Graph o-A->o */ public Handle tokenRef(TerminalAST node) { System.out.println("tokenRef: "+node); - NFAState left = newState(); - NFAState right = newState(); - left.ast = node; - right.ast = node; + BasicState left = newState(node); + BasicState right = newState(node); int ttype = g.getTokenType(node.getText()); - Transition e = new AtomTransition(ttype, right); - left.addTransition(e); + left.transition = new AtomTransition(ttype, right); return new Handle(left, right); } @@ -65,19 +67,20 @@ public class ParserNFAFactory implements NFAFactory { */ public Handle set(IntSet set, GrammarAST associatedAST) { return null; } + public Handle tree(List els) { + return null; + } + public Handle range(GrammarAST a, GrammarAST b) { return null; } - /** From char 'c' build Grip o-intValue(c)->o + public Handle not(Handle A) { + return null; + } + + /** From char 'c' build o-intValue(c)->o */ public Handle charLiteral(GrammarAST charLiteralAST) { return null; } - /** From char 'c' build Grip o-intValue(c)->o - * can include unicode spec likes '\u0024' later. Accepts - * actual unicode 16-bit now, of course, by default. - * TODO not supplemental char clean! - */ - public Handle charRange(String a, String b) { return null; } - /** For a non-lexer, just build a simple token reference atom. * For a lexer, a string is a sequence of char to match. That is, * "fog" is treated as 'f' 'o' 'g' not as a single transition in @@ -107,21 +110,37 @@ public class ParserNFAFactory implements NFAFactory { */ public Handle ruleRef(GrammarAST node) { return null; } - /** From an empty alternative build Grip o-e->o */ + /** From an empty alternative build o-e->o */ public Handle epsilon() { return null; } /** Build what amounts to an epsilon transition with a semantic * predicate action. The pred is a pointer into the AST of * the SEMPRED token. */ - public Handle sempred(GrammarAST pred) { return null; } + public Handle sempred(GrammarAST pred) { + System.out.println("sempred: "+ pred); + BasicState left = newState(pred); + NFAState right = newState(pred); + left.transition = new PredicateTransition(pred, right); + return new Handle(left, right); + } + + public Handle gated_sempred(GrammarAST pred) { + return null; + } /** Build what amounts to an epsilon transition with an action. * The action goes into NFA though it is ignored during analysis. * It slows things down a bit, but I must ignore predicates after * having seen an action (5-5-2008). */ - public Handle action(GrammarAST action) { return null; } + public Handle action(GrammarAST action) { + System.out.println("action: "+action); + BasicState left = newState(action); + NFAState right = newState(action); + left.transition = new ActionTransition(action, right); + return new Handle(left, right); + } /** From A B build A-e->B (that is, build an epsilon arc from right * of A to left of B). @@ -148,7 +167,7 @@ public class ParserNFAFactory implements NFAFactory { * * So every alternative gets begin NFAState connected by epsilon * and every alt right side points at a block end NFAState. There is a - * new NFAState in the NFAState in the Grip for each alt plus one for the + * new NFAState in the NFAState in the handle for each alt plus one for the * end NFAState. * * Special case: only one alternative: don't make a block with alt @@ -164,6 +183,12 @@ public class ParserNFAFactory implements NFAFactory { return null; } + public Handle alt(List els) { + Handle first = els.get(0); + Handle last = els.get(els.size()-1); + return new Handle(first.left, last.right); + } + /** From (A)? build either: * * o--A->o @@ -172,7 +197,14 @@ public class ParserNFAFactory implements NFAFactory { * * or, if A is a block, just add an empty alt to the end of the block */ - public Handle optional(Handle A) { return null; } + public Handle optional(Handle A) { + OptionalBlockStartState left = new OptionalBlockStartState(nfa); + BlockEndState right = new BlockEndState(nfa); + epsilon(left, A.left); + epsilon(A.right, right); + epsilon(left, right); + return new Handle(left, right); + } /** From (A)+ build * diff --git a/tool/src/org/antlr/v4/automata/PredicateTransition.java b/tool/src/org/antlr/v4/automata/PredicateTransition.java index 26a3adec6..470b5ff27 100644 --- a/tool/src/org/antlr/v4/automata/PredicateTransition.java +++ b/tool/src/org/antlr/v4/automata/PredicateTransition.java @@ -9,15 +9,16 @@ import org.antlr.v4.tool.GrammarAST; * may have to combine a bunch of them as it collects predicates from * multiple NFA configurations into a single DFA state. */ -public class PredicateTransition extends Label { +public class PredicateTransition extends Transition { protected SemanticContext semanticContext; - public PredicateTransition(GrammarAST predicateASTNode) { + public PredicateTransition(GrammarAST predicateASTNode, NFAState target) { + super(target); this.semanticContext = new SemanticContext.Predicate(predicateASTNode); } - public PredicateTransition(SemanticContext semCtx) { - this.semanticContext = semCtx; + public int compareTo(Object o) { + return 0; } public int hashCode() { diff --git a/tool/src/org/antlr/v4/parse/NFABuilder.g b/tool/src/org/antlr/v4/parse/NFABuilder.g index 897f98c46..423cc6977 100644 --- a/tool/src/org/antlr/v4/parse/NFABuilder.g +++ b/tool/src/org/antlr/v4/parse/NFABuilder.g @@ -94,90 +94,89 @@ block returns [NFAFactory.Handle p] ; alternative returns [NFAFactory.Handle p] - : ^(ALT_REWRITE alternative .) - | ^(ALT EPSILON) - | ^(ALT element+) +@init {List els = new ArrayList();} + : ^(ALT_REWRITE a=alternative .) {$p = $a.p;} + | ^(ALT EPSILON) {$p = factory.epsilon();} + | ^(ALT (e=element {els.add($e.p);})+) + {$p = factory.alt(els);} ; element returns [NFAFactory.Handle p] - : labeledElement - | atom - | ebnf - | ACTION - | SEMPRED - | GATED_SEMPRED - | treeSpec + : labeledElement {$p = $labeledElement.p;} + | atom {$p = $atom.p;} + | ebnf {$p = $ebnf.p;} + | ACTION {$p = factory.action($ACTION);} + | SEMPRED {$p = factory.sempred($SEMPRED);} + | GATED_SEMPRED {$p = factory.gated_sempred($GATED_SEMPRED);} + | treeSpec {$p = $treeSpec.p;} ; labeledElement returns [NFAFactory.Handle p] - : ^(ASSIGN ID atom) - | ^(ASSIGN ID block) - | ^(PLUS_ASSIGN ID atom) - | ^(PLUS_ASSIGN ID block) + : ^(ASSIGN ID atom) {$p = $atom.p;} + | ^(ASSIGN ID block) {$p = $block.p;} + | ^(PLUS_ASSIGN ID atom) {$p = $atom.p;} + | ^(PLUS_ASSIGN ID block) {$p = $block.p;} ; treeSpec returns [NFAFactory.Handle p] - : ^(TREE_BEGIN element+) +@init {List els = new ArrayList();} + : ^(TREE_BEGIN (e=element {els.add($e.p);})+) {$p = factory.tree(els);} ; ebnf returns [NFAFactory.Handle p] - : ^(blockSuffix block) - | block + : ^(astBlockSuffix block) {$p = $block.p;} + | ^(OPTIONAL block) {$p = factory.optional($block.p);} + | ^(CLOSURE block) {$p = factory.star($block.p);} + | ^(POSITIVE_CLOSURE block) {$p = factory.plus($block.p);} + | block {$p = $block.p;} ; -blockSuffix returns [NFAFactory.Handle p] - : ebnfSuffix - | ROOT +astBlockSuffix + : ROOT | IMPLIES | BANG ; -ebnfSuffix returns [NFAFactory.Handle p] - : OPTIONAL - | CLOSURE - | POSITIVE_CLOSURE - ; - atom returns [NFAFactory.Handle p] - : ^(ROOT range) - | ^(BANG range) - | ^(ROOT notSet) - | ^(BANG notSet) - | range - | ^(DOT ID terminal) - | ^(DOT ID ruleref) - | terminal - | ruleref + : ^(ROOT range) {$p = $range.p;} + | ^(BANG range) {$p = $range.p;} + | ^(ROOT notSet) {$p = $notSet.p;} + | ^(BANG notSet) {$p = $notSet.p;} + | range {$p = $range.p;} + | ^(DOT ID terminal) {$p = $terminal.p;} + | ^(DOT ID ruleref) {$p = $ruleref.p;} + | terminal {$p = $terminal.p;} + | ruleref {$p = $ruleref.p;} ; notSet returns [NFAFactory.Handle p] - : ^(NOT notTerminal) - | ^(NOT block) + : ^(NOT notTerminal) {$p = factory.not($notTerminal.p);} + | ^(NOT block) {$p = factory.not($block.p);} ; notTerminal returns [NFAFactory.Handle p] - : TOKEN_REF - | STRING_LITERAL + : TOKEN_REF {$p = factory.tokenRef((TerminalAST)$TOKEN_REF);} + | STRING_LITERAL {$p = factory.stringLiteral($start);} ; ruleref returns [NFAFactory.Handle p] - : ^(ROOT ^(RULE_REF ARG_ACTION?)) {factory.ruleRef($RULE_REF);} - | ^(BANG ^(RULE_REF ARG_ACTION?)) {factory.ruleRef($RULE_REF);} - | ^(RULE_REF ARG_ACTION?) {factory.ruleRef($RULE_REF);} + : ^(ROOT ^(RULE_REF ARG_ACTION?)) {$p = factory.ruleRef($RULE_REF);} + | ^(BANG ^(RULE_REF ARG_ACTION?)) {$p = factory.ruleRef($RULE_REF);} + | ^(RULE_REF ARG_ACTION?) {$p = factory.ruleRef($RULE_REF);} ; range returns [NFAFactory.Handle p] - : ^(RANGE a=STRING_LITERAL b=STRING_LITERAL) {factory.range($a,$b);} + : ^(RANGE a=STRING_LITERAL b=STRING_LITERAL) {$p = factory.range($a,$b);} ; terminal returns [NFAFactory.Handle p] - : ^(STRING_LITERAL .) {factory.stringLiteral($start);} - | STRING_LITERAL {factory.stringLiteral($start);} - | ^(TOKEN_REF ARG_ACTION .) {factory.tokenRef((TerminalAST)$start);} - | ^(TOKEN_REF .) {factory.tokenRef((TerminalAST)$start);} - | TOKEN_REF {factory.tokenRef((TerminalAST)$start);} - | ^(WILDCARD .) {factory.wildcard($start);} - | WILDCARD {factory.wildcard($start);} - | ^(ROOT terminal) - | ^(BANG terminal) + : ^(STRING_LITERAL .) {$p = factory.stringLiteral($start);} + | STRING_LITERAL {$p = factory.stringLiteral($start);} + | ^(TOKEN_REF ARG_ACTION .) {$p = factory.tokenRef((TerminalAST)$start);} + | ^(TOKEN_REF .) {$p = factory.tokenRef((TerminalAST)$start);} + | TOKEN_REF {$p = factory.tokenRef((TerminalAST)$start);} + | ^(WILDCARD .) {$p = factory.wildcard($start);} + | WILDCARD {$p = factory.wildcard($start);} + | ^(ROOT t=terminal) {$p = $t.p;} + | ^(BANG t=terminal) {$p = $t.p;} ; \ No newline at end of file diff --git a/tool/src/org/antlr/v4/parse/NFABuilder.java b/tool/src/org/antlr/v4/parse/NFABuilder.java index ccef27789..f7e9aad5f 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-02-25 18:51:26 +// $ANTLR ${project.version} ${buildNumber} NFABuilder.g 2010-02-26 18:49:45 /* [The "BSD license"] @@ -407,12 +407,18 @@ public class NFABuilder extends TreeFilter { // $ANTLR start "alternative" - // NFABuilder.g:96:1: alternative returns [NFAFactory.Handle p] : ( ^( ALT_REWRITE alternative . ) | ^( ALT EPSILON ) | ^( ALT ( element )+ ) ); + // NFABuilder.g:96:1: alternative returns [NFAFactory.Handle p] : ( ^( ALT_REWRITE a= alternative . ) | ^( ALT EPSILON ) | ^( ALT (e= element )+ ) ); public final NFAFactory.Handle alternative() throws RecognitionException { NFAFactory.Handle p = null; + NFAFactory.Handle a = null; + + NFAFactory.Handle e = null; + + + List els = new ArrayList(); try { - // NFABuilder.g:97:5: ( ^( ALT_REWRITE alternative . ) | ^( ALT EPSILON ) | ^( ALT ( element )+ ) ) + // NFABuilder.g:98:5: ( ^( ALT_REWRITE a= alternative . ) | ^( ALT EPSILON ) | ^( ALT (e= element )+ ) ) int alt5=3; int LA5_0 = input.LA(1); @@ -456,41 +462,47 @@ public class NFABuilder extends TreeFilter { } switch (alt5) { case 1 : - // NFABuilder.g:97:7: ^( ALT_REWRITE alternative . ) + // NFABuilder.g:98:7: ^( ALT_REWRITE a= alternative . ) { - match(input,ALT_REWRITE,FOLLOW_ALT_REWRITE_in_alternative186); if (state.failed) return p; + match(input,ALT_REWRITE,FOLLOW_ALT_REWRITE_in_alternative191); if (state.failed) return p; match(input, Token.DOWN, null); if (state.failed) return p; - pushFollow(FOLLOW_alternative_in_alternative188); - alternative(); + pushFollow(FOLLOW_alternative_in_alternative195); + a=alternative(); state._fsp--; if (state.failed) return p; matchAny(input); if (state.failed) return p; match(input, Token.UP, null); if (state.failed) return p; + if ( state.backtracking==1 ) { + p = a; + } } break; case 2 : - // NFABuilder.g:98:7: ^( ALT EPSILON ) + // NFABuilder.g:99:7: ^( ALT EPSILON ) { - match(input,ALT,FOLLOW_ALT_in_alternative200); if (state.failed) return p; + match(input,ALT,FOLLOW_ALT_in_alternative209); if (state.failed) return p; match(input, Token.DOWN, null); if (state.failed) return p; - match(input,EPSILON,FOLLOW_EPSILON_in_alternative202); if (state.failed) return p; + match(input,EPSILON,FOLLOW_EPSILON_in_alternative211); if (state.failed) return p; match(input, Token.UP, null); if (state.failed) return p; + if ( state.backtracking==1 ) { + p = factory.epsilon(); + } } break; case 3 : - // NFABuilder.g:99:9: ^( ALT ( element )+ ) + // NFABuilder.g:100:9: ^( ALT (e= element )+ ) { - match(input,ALT,FOLLOW_ALT_in_alternative214); if (state.failed) return p; + match(input,ALT,FOLLOW_ALT_in_alternative229); if (state.failed) return p; match(input, Token.DOWN, null); if (state.failed) return p; - // NFABuilder.g:99:15: ( element )+ + // NFABuilder.g:100:15: (e= element )+ int cnt4=0; loop4: do { @@ -504,13 +516,16 @@ public class NFABuilder extends TreeFilter { switch (alt4) { case 1 : - // NFABuilder.g:99:15: element + // NFABuilder.g:100:16: e= element { - pushFollow(FOLLOW_element_in_alternative216); - element(); + pushFollow(FOLLOW_element_in_alternative234); + e=element(); state._fsp--; if (state.failed) return p; + if ( state.backtracking==1 ) { + els.add(e); + } } break; @@ -527,6 +542,9 @@ public class NFABuilder extends TreeFilter { match(input, Token.UP, null); if (state.failed) return p; + if ( state.backtracking==1 ) { + p = factory.alt(els); + } } break; @@ -545,77 +563,110 @@ public class NFABuilder extends TreeFilter { // $ANTLR start "element" - // NFABuilder.g:102:1: element returns [NFAFactory.Handle p] : ( labeledElement | atom | ebnf | ACTION | SEMPRED | GATED_SEMPRED | treeSpec ); + // NFABuilder.g:104:1: element returns [NFAFactory.Handle p] : ( labeledElement | atom | ebnf | ACTION | SEMPRED | GATED_SEMPRED | treeSpec ); public final NFAFactory.Handle element() throws RecognitionException { NFAFactory.Handle p = null; + GrammarAST ACTION4=null; + GrammarAST SEMPRED5=null; + GrammarAST GATED_SEMPRED6=null; + NFAFactory.Handle labeledElement1 = null; + + NFAFactory.Handle atom2 = null; + + NFAFactory.Handle ebnf3 = null; + + NFAFactory.Handle treeSpec7 = null; + + try { - // NFABuilder.g:103:2: ( labeledElement | atom | ebnf | ACTION | SEMPRED | GATED_SEMPRED | treeSpec ) + // NFABuilder.g:105:2: ( labeledElement | atom | ebnf | ACTION | SEMPRED | GATED_SEMPRED | treeSpec ) int alt6=7; alt6 = dfa6.predict(input); switch (alt6) { case 1 : - // NFABuilder.g:103:4: labeledElement + // NFABuilder.g:105:4: labeledElement { - pushFollow(FOLLOW_labeledElement_in_element236); - labeledElement(); + pushFollow(FOLLOW_labeledElement_in_element272); + labeledElement1=labeledElement(); state._fsp--; if (state.failed) return p; + if ( state.backtracking==1 ) { + p = labeledElement1; + } } break; case 2 : - // NFABuilder.g:104:4: atom + // NFABuilder.g:106:4: atom { - pushFollow(FOLLOW_atom_in_element241); - atom(); + pushFollow(FOLLOW_atom_in_element282); + atom2=atom(); state._fsp--; if (state.failed) return p; + if ( state.backtracking==1 ) { + p = atom2; + } } break; case 3 : - // NFABuilder.g:105:4: ebnf + // NFABuilder.g:107:4: ebnf { - pushFollow(FOLLOW_ebnf_in_element246); - ebnf(); + pushFollow(FOLLOW_ebnf_in_element294); + ebnf3=ebnf(); state._fsp--; if (state.failed) return p; + if ( state.backtracking==1 ) { + p = ebnf3; + } } break; case 4 : - // NFABuilder.g:106:6: ACTION + // NFABuilder.g:108:6: ACTION { - match(input,ACTION,FOLLOW_ACTION_in_element253); if (state.failed) return p; + ACTION4=(GrammarAST)match(input,ACTION,FOLLOW_ACTION_in_element308); if (state.failed) return p; + if ( state.backtracking==1 ) { + p = factory.action(ACTION4); + } } break; case 5 : - // NFABuilder.g:107:6: SEMPRED + // NFABuilder.g:109:6: SEMPRED { - match(input,SEMPRED,FOLLOW_SEMPRED_in_element260); if (state.failed) return p; + SEMPRED5=(GrammarAST)match(input,SEMPRED,FOLLOW_SEMPRED_in_element322); if (state.failed) return p; + if ( state.backtracking==1 ) { + p = factory.sempred(SEMPRED5); + } } break; case 6 : - // NFABuilder.g:108:4: GATED_SEMPRED + // NFABuilder.g:110:4: GATED_SEMPRED { - match(input,GATED_SEMPRED,FOLLOW_GATED_SEMPRED_in_element265); if (state.failed) return p; + GATED_SEMPRED6=(GrammarAST)match(input,GATED_SEMPRED,FOLLOW_GATED_SEMPRED_in_element334); if (state.failed) return p; + if ( state.backtracking==1 ) { + p = factory.gated_sempred(GATED_SEMPRED6); + } } break; case 7 : - // NFABuilder.g:109:4: treeSpec + // NFABuilder.g:111:4: treeSpec { - pushFollow(FOLLOW_treeSpec_in_element270); - treeSpec(); + pushFollow(FOLLOW_treeSpec_in_element344); + treeSpec7=treeSpec(); state._fsp--; if (state.failed) return p; + if ( state.backtracking==1 ) { + p = treeSpec7; + } } break; @@ -634,80 +685,101 @@ public class NFABuilder extends TreeFilter { // $ANTLR start "labeledElement" - // NFABuilder.g:112:1: labeledElement returns [NFAFactory.Handle p] : ( ^( ASSIGN ID atom ) | ^( ASSIGN ID block ) | ^( PLUS_ASSIGN ID atom ) | ^( PLUS_ASSIGN ID block ) ); + // NFABuilder.g:114:1: labeledElement returns [NFAFactory.Handle p] : ( ^( ASSIGN ID atom ) | ^( ASSIGN ID block ) | ^( PLUS_ASSIGN ID atom ) | ^( PLUS_ASSIGN ID block ) ); public final NFAFactory.Handle labeledElement() throws RecognitionException { NFAFactory.Handle p = null; + NFAFactory.Handle atom8 = null; + + NFAFactory.Handle block9 = null; + + NFAFactory.Handle atom10 = null; + + NFAFactory.Handle block11 = null; + + try { - // NFABuilder.g:113:2: ( ^( ASSIGN ID atom ) | ^( ASSIGN ID block ) | ^( PLUS_ASSIGN ID atom ) | ^( PLUS_ASSIGN ID block ) ) + // NFABuilder.g:115:2: ( ^( ASSIGN ID atom ) | ^( ASSIGN ID block ) | ^( PLUS_ASSIGN ID atom ) | ^( PLUS_ASSIGN ID block ) ) int alt7=4; alt7 = dfa7.predict(input); switch (alt7) { case 1 : - // NFABuilder.g:113:4: ^( ASSIGN ID atom ) + // NFABuilder.g:115:4: ^( ASSIGN ID atom ) { - match(input,ASSIGN,FOLLOW_ASSIGN_in_labeledElement287); if (state.failed) return p; + match(input,ASSIGN,FOLLOW_ASSIGN_in_labeledElement367); if (state.failed) return p; match(input, Token.DOWN, null); if (state.failed) return p; - match(input,ID,FOLLOW_ID_in_labeledElement289); if (state.failed) return p; - pushFollow(FOLLOW_atom_in_labeledElement291); - atom(); + match(input,ID,FOLLOW_ID_in_labeledElement369); if (state.failed) return p; + pushFollow(FOLLOW_atom_in_labeledElement371); + atom8=atom(); state._fsp--; if (state.failed) return p; match(input, Token.UP, null); if (state.failed) return p; + if ( state.backtracking==1 ) { + p = atom8; + } } break; case 2 : - // NFABuilder.g:114:4: ^( ASSIGN ID block ) + // NFABuilder.g:116:4: ^( ASSIGN ID block ) { - match(input,ASSIGN,FOLLOW_ASSIGN_in_labeledElement298); if (state.failed) return p; + match(input,ASSIGN,FOLLOW_ASSIGN_in_labeledElement382); if (state.failed) return p; match(input, Token.DOWN, null); if (state.failed) return p; - match(input,ID,FOLLOW_ID_in_labeledElement300); if (state.failed) return p; - pushFollow(FOLLOW_block_in_labeledElement302); - block(); + match(input,ID,FOLLOW_ID_in_labeledElement384); if (state.failed) return p; + pushFollow(FOLLOW_block_in_labeledElement386); + block9=block(); state._fsp--; if (state.failed) return p; match(input, Token.UP, null); if (state.failed) return p; + if ( state.backtracking==1 ) { + p = block9; + } } break; case 3 : - // NFABuilder.g:115:4: ^( PLUS_ASSIGN ID atom ) + // NFABuilder.g:117:4: ^( PLUS_ASSIGN ID atom ) { - match(input,PLUS_ASSIGN,FOLLOW_PLUS_ASSIGN_in_labeledElement309); if (state.failed) return p; + match(input,PLUS_ASSIGN,FOLLOW_PLUS_ASSIGN_in_labeledElement397); if (state.failed) return p; match(input, Token.DOWN, null); if (state.failed) return p; - match(input,ID,FOLLOW_ID_in_labeledElement311); if (state.failed) return p; - pushFollow(FOLLOW_atom_in_labeledElement313); - atom(); + match(input,ID,FOLLOW_ID_in_labeledElement399); if (state.failed) return p; + pushFollow(FOLLOW_atom_in_labeledElement401); + atom10=atom(); state._fsp--; if (state.failed) return p; match(input, Token.UP, null); if (state.failed) return p; + if ( state.backtracking==1 ) { + p = atom10; + } } break; case 4 : - // NFABuilder.g:116:4: ^( PLUS_ASSIGN ID block ) + // NFABuilder.g:118:4: ^( PLUS_ASSIGN ID block ) { - match(input,PLUS_ASSIGN,FOLLOW_PLUS_ASSIGN_in_labeledElement320); if (state.failed) return p; + match(input,PLUS_ASSIGN,FOLLOW_PLUS_ASSIGN_in_labeledElement411); if (state.failed) return p; match(input, Token.DOWN, null); if (state.failed) return p; - match(input,ID,FOLLOW_ID_in_labeledElement322); if (state.failed) return p; - pushFollow(FOLLOW_block_in_labeledElement324); - block(); + match(input,ID,FOLLOW_ID_in_labeledElement413); if (state.failed) return p; + pushFollow(FOLLOW_block_in_labeledElement415); + block11=block(); state._fsp--; if (state.failed) return p; match(input, Token.UP, null); if (state.failed) return p; + if ( state.backtracking==1 ) { + p = block11; + } } break; @@ -726,18 +798,22 @@ public class NFABuilder extends TreeFilter { // $ANTLR start "treeSpec" - // NFABuilder.g:119:1: treeSpec returns [NFAFactory.Handle p] : ^( TREE_BEGIN ( element )+ ) ; + // NFABuilder.g:121:1: treeSpec returns [NFAFactory.Handle p] : ^( TREE_BEGIN (e= element )+ ) ; public final NFAFactory.Handle treeSpec() throws RecognitionException { NFAFactory.Handle p = null; + NFAFactory.Handle e = null; + + + List els = new ArrayList(); try { - // NFABuilder.g:120:5: ( ^( TREE_BEGIN ( element )+ ) ) - // NFABuilder.g:120:7: ^( TREE_BEGIN ( element )+ ) + // NFABuilder.g:123:5: ( ^( TREE_BEGIN (e= element )+ ) ) + // NFABuilder.g:123:7: ^( TREE_BEGIN (e= element )+ ) { - match(input,TREE_BEGIN,FOLLOW_TREE_BEGIN_in_treeSpec344); if (state.failed) return p; + match(input,TREE_BEGIN,FOLLOW_TREE_BEGIN_in_treeSpec443); if (state.failed) return p; match(input, Token.DOWN, null); if (state.failed) return p; - // NFABuilder.g:120:20: ( element )+ + // NFABuilder.g:123:21: (e= element )+ int cnt8=0; loop8: do { @@ -751,13 +827,16 @@ public class NFABuilder extends TreeFilter { switch (alt8) { case 1 : - // NFABuilder.g:120:20: element + // NFABuilder.g:123:22: e= element { - pushFollow(FOLLOW_element_in_treeSpec346); - element(); + pushFollow(FOLLOW_element_in_treeSpec449); + e=element(); state._fsp--; if (state.failed) return p; + if ( state.backtracking==1 ) { + els.add(e); + } } break; @@ -774,6 +853,9 @@ public class NFABuilder extends TreeFilter { match(input, Token.UP, null); if (state.failed) return p; + if ( state.backtracking==1 ) { + p = factory.tree(els); + } } @@ -790,58 +872,153 @@ public class NFABuilder extends TreeFilter { // $ANTLR start "ebnf" - // NFABuilder.g:123:1: ebnf returns [NFAFactory.Handle p] : ( ^( blockSuffix block ) | block ); + // NFABuilder.g:126:1: ebnf returns [NFAFactory.Handle p] : ( ^( astBlockSuffix block ) | ^( OPTIONAL block ) | ^( CLOSURE block ) | ^( POSITIVE_CLOSURE block ) | block ); public final NFAFactory.Handle ebnf() throws RecognitionException { NFAFactory.Handle p = null; - try { - // NFABuilder.g:124:2: ( ^( blockSuffix block ) | block ) - int alt9=2; - int LA9_0 = input.LA(1); + NFAFactory.Handle block12 = null; - if ( (LA9_0==IMPLIES||LA9_0==BANG||LA9_0==ROOT||(LA9_0>=OPTIONAL && LA9_0<=POSITIVE_CLOSURE)) ) { + NFAFactory.Handle block13 = null; + + NFAFactory.Handle block14 = null; + + NFAFactory.Handle block15 = null; + + NFAFactory.Handle block16 = null; + + + try { + // NFABuilder.g:127:2: ( ^( astBlockSuffix block ) | ^( OPTIONAL block ) | ^( CLOSURE block ) | ^( POSITIVE_CLOSURE block ) | block ) + int alt9=5; + switch ( input.LA(1) ) { + case IMPLIES: + case BANG: + case ROOT: + { alt9=1; - } - else if ( (LA9_0==BLOCK) ) { + } + break; + case OPTIONAL: + { alt9=2; - } - else { + } + break; + case CLOSURE: + { + alt9=3; + } + break; + case POSITIVE_CLOSURE: + { + alt9=4; + } + break; + case BLOCK: + { + alt9=5; + } + break; + default: if (state.backtracking>0) {state.failed=true; return p;} NoViableAltException nvae = new NoViableAltException("", 9, 0, input); throw nvae; } + switch (alt9) { case 1 : - // NFABuilder.g:124:4: ^( blockSuffix block ) + // NFABuilder.g:127:4: ^( astBlockSuffix block ) { - pushFollow(FOLLOW_blockSuffix_in_ebnf367); - blockSuffix(); + pushFollow(FOLLOW_astBlockSuffix_in_ebnf475); + astBlockSuffix(); state._fsp--; if (state.failed) return p; match(input, Token.DOWN, null); if (state.failed) return p; - pushFollow(FOLLOW_block_in_ebnf369); - block(); + pushFollow(FOLLOW_block_in_ebnf477); + block12=block(); state._fsp--; if (state.failed) return p; match(input, Token.UP, null); if (state.failed) return p; + if ( state.backtracking==1 ) { + p = block12; + } } break; case 2 : - // NFABuilder.g:125:5: block + // NFABuilder.g:128:4: ^( OPTIONAL block ) { - pushFollow(FOLLOW_block_in_ebnf376); - block(); + match(input,OPTIONAL,FOLLOW_OPTIONAL_in_ebnf487); if (state.failed) return p; + + match(input, Token.DOWN, null); if (state.failed) return p; + pushFollow(FOLLOW_block_in_ebnf489); + block13=block(); state._fsp--; if (state.failed) return p; + match(input, Token.UP, null); if (state.failed) return p; + if ( state.backtracking==1 ) { + p = factory.optional(block13); + } + + } + break; + case 3 : + // NFABuilder.g:129:4: ^( CLOSURE block ) + { + match(input,CLOSURE,FOLLOW_CLOSURE_in_ebnf500); if (state.failed) return p; + + match(input, Token.DOWN, null); if (state.failed) return p; + pushFollow(FOLLOW_block_in_ebnf502); + block14=block(); + + state._fsp--; + if (state.failed) return p; + + match(input, Token.UP, null); if (state.failed) return p; + if ( state.backtracking==1 ) { + p = factory.star(block14); + } + + } + break; + case 4 : + // NFABuilder.g:130:4: ^( POSITIVE_CLOSURE block ) + { + match(input,POSITIVE_CLOSURE,FOLLOW_POSITIVE_CLOSURE_in_ebnf513); if (state.failed) return p; + + match(input, Token.DOWN, null); if (state.failed) return p; + pushFollow(FOLLOW_block_in_ebnf515); + block15=block(); + + state._fsp--; + if (state.failed) return p; + + match(input, Token.UP, null); if (state.failed) return p; + if ( state.backtracking==1 ) { + p = factory.plus(block15); + } + + } + break; + case 5 : + // NFABuilder.g:131:5: block + { + pushFollow(FOLLOW_block_in_ebnf524); + block16=block(); + + state._fsp--; + if (state.failed) return p; + if ( state.backtracking==1 ) { + p = block16; + } + } break; @@ -858,107 +1035,19 @@ public class NFABuilder extends TreeFilter { // $ANTLR end "ebnf" - // $ANTLR start "blockSuffix" - // NFABuilder.g:128:1: blockSuffix returns [NFAFactory.Handle p] : ( ebnfSuffix | ROOT | IMPLIES | BANG ); - public final NFAFactory.Handle blockSuffix() throws RecognitionException { - NFAFactory.Handle p = null; - + // $ANTLR start "astBlockSuffix" + // NFABuilder.g:134:1: astBlockSuffix : ( ROOT | IMPLIES | BANG ); + public final void astBlockSuffix() throws RecognitionException { try { - // NFABuilder.g:129:5: ( ebnfSuffix | ROOT | IMPLIES | BANG ) - int alt10=4; - switch ( input.LA(1) ) { - case OPTIONAL: - case CLOSURE: - case POSITIVE_CLOSURE: - { - alt10=1; - } - break; - case ROOT: - { - alt10=2; - } - break; - case IMPLIES: - { - alt10=3; - } - break; - case BANG: - { - alt10=4; - } - break; - default: - if (state.backtracking>0) {state.failed=true; return p;} - NoViableAltException nvae = - new NoViableAltException("", 10, 0, input); - - throw nvae; - } - - switch (alt10) { - case 1 : - // NFABuilder.g:129:7: ebnfSuffix - { - pushFollow(FOLLOW_ebnfSuffix_in_blockSuffix397); - ebnfSuffix(); - - state._fsp--; - if (state.failed) return p; - - } - break; - case 2 : - // NFABuilder.g:130:7: ROOT - { - match(input,ROOT,FOLLOW_ROOT_in_blockSuffix405); if (state.failed) return p; - - } - break; - case 3 : - // NFABuilder.g:131:7: IMPLIES - { - match(input,IMPLIES,FOLLOW_IMPLIES_in_blockSuffix413); if (state.failed) return p; - - } - break; - case 4 : - // NFABuilder.g:132:7: BANG - { - match(input,BANG,FOLLOW_BANG_in_blockSuffix421); if (state.failed) return p; - - } - break; - - } - } - catch (RecognitionException re) { - reportError(re); - recover(input,re); - } - finally { - } - return p; - } - // $ANTLR end "blockSuffix" - - - // $ANTLR start "ebnfSuffix" - // NFABuilder.g:135:1: ebnfSuffix returns [NFAFactory.Handle p] : ( OPTIONAL | CLOSURE | POSITIVE_CLOSURE ); - public final NFAFactory.Handle ebnfSuffix() throws RecognitionException { - NFAFactory.Handle p = null; - - try { - // NFABuilder.g:136:2: ( OPTIONAL | CLOSURE | POSITIVE_CLOSURE ) + // NFABuilder.g:135:5: ( ROOT | IMPLIES | BANG ) // NFABuilder.g: { - if ( (input.LA(1)>=OPTIONAL && input.LA(1)<=POSITIVE_CLOSURE) ) { + if ( input.LA(1)==IMPLIES||input.LA(1)==BANG||input.LA(1)==ROOT ) { input.consume(); state.errorRecovery=false;state.failed=false; } else { - if (state.backtracking>0) {state.failed=true; return p;} + if (state.backtracking>0) {state.failed=true; return ;} MismatchedSetException mse = new MismatchedSetException(null,input); throw mse; } @@ -973,149 +1062,195 @@ public class NFABuilder extends TreeFilter { } finally { } - return p; + return ; } - // $ANTLR end "ebnfSuffix" + // $ANTLR end "astBlockSuffix" // $ANTLR start "atom" - // NFABuilder.g:141:1: atom returns [NFAFactory.Handle p] : ( ^( ROOT range ) | ^( BANG range ) | ^( ROOT notSet ) | ^( BANG notSet ) | range | ^( DOT ID terminal ) | ^( DOT ID ruleref ) | terminal | ruleref ); + // NFABuilder.g:140:1: atom returns [NFAFactory.Handle p] : ( ^( ROOT range ) | ^( BANG range ) | ^( ROOT notSet ) | ^( BANG notSet ) | range | ^( DOT ID terminal ) | ^( DOT ID ruleref ) | terminal | ruleref ); public final NFAFactory.Handle atom() throws RecognitionException { NFAFactory.Handle p = null; + NFAFactory.Handle range17 = null; + + NFAFactory.Handle range18 = null; + + NFAFactory.Handle notSet19 = null; + + NFAFactory.Handle notSet20 = null; + + NFAFactory.Handle range21 = null; + + NFABuilder.terminal_return terminal22 = null; + + NFAFactory.Handle ruleref23 = null; + + NFABuilder.terminal_return terminal24 = null; + + NFAFactory.Handle ruleref25 = null; + + try { - // NFABuilder.g:142:2: ( ^( ROOT range ) | ^( BANG range ) | ^( ROOT notSet ) | ^( BANG notSet ) | range | ^( DOT ID terminal ) | ^( DOT ID ruleref ) | terminal | ruleref ) - int alt11=9; - alt11 = dfa11.predict(input); - switch (alt11) { + // NFABuilder.g:141:2: ( ^( ROOT range ) | ^( BANG range ) | ^( ROOT notSet ) | ^( BANG notSet ) | range | ^( DOT ID terminal ) | ^( DOT ID ruleref ) | terminal | ruleref ) + int alt10=9; + alt10 = dfa10.predict(input); + switch (alt10) { case 1 : - // NFABuilder.g:142:4: ^( ROOT range ) + // NFABuilder.g:141:4: ^( ROOT range ) { - match(input,ROOT,FOLLOW_ROOT_in_atom472); if (state.failed) return p; + match(input,ROOT,FOLLOW_ROOT_in_atom584); if (state.failed) return p; match(input, Token.DOWN, null); if (state.failed) return p; - pushFollow(FOLLOW_range_in_atom474); - range(); + pushFollow(FOLLOW_range_in_atom586); + range17=range(); state._fsp--; if (state.failed) return p; match(input, Token.UP, null); if (state.failed) return p; + if ( state.backtracking==1 ) { + p = range17; + } } break; case 2 : - // NFABuilder.g:143:4: ^( BANG range ) + // NFABuilder.g:142:4: ^( BANG range ) { - match(input,BANG,FOLLOW_BANG_in_atom481); if (state.failed) return p; + match(input,BANG,FOLLOW_BANG_in_atom597); if (state.failed) return p; match(input, Token.DOWN, null); if (state.failed) return p; - pushFollow(FOLLOW_range_in_atom483); - range(); + pushFollow(FOLLOW_range_in_atom599); + range18=range(); state._fsp--; if (state.failed) return p; match(input, Token.UP, null); if (state.failed) return p; + if ( state.backtracking==1 ) { + p = range18; + } } break; case 3 : - // NFABuilder.g:144:4: ^( ROOT notSet ) + // NFABuilder.g:143:4: ^( ROOT notSet ) { - match(input,ROOT,FOLLOW_ROOT_in_atom490); if (state.failed) return p; + match(input,ROOT,FOLLOW_ROOT_in_atom610); if (state.failed) return p; match(input, Token.DOWN, null); if (state.failed) return p; - pushFollow(FOLLOW_notSet_in_atom492); - notSet(); + pushFollow(FOLLOW_notSet_in_atom612); + notSet19=notSet(); state._fsp--; if (state.failed) return p; match(input, Token.UP, null); if (state.failed) return p; + if ( state.backtracking==1 ) { + p = notSet19; + } } break; case 4 : - // NFABuilder.g:145:4: ^( BANG notSet ) + // NFABuilder.g:144:4: ^( BANG notSet ) { - match(input,BANG,FOLLOW_BANG_in_atom499); if (state.failed) return p; + match(input,BANG,FOLLOW_BANG_in_atom623); if (state.failed) return p; match(input, Token.DOWN, null); if (state.failed) return p; - pushFollow(FOLLOW_notSet_in_atom501); - notSet(); + pushFollow(FOLLOW_notSet_in_atom625); + notSet20=notSet(); state._fsp--; if (state.failed) return p; match(input, Token.UP, null); if (state.failed) return p; + if ( state.backtracking==1 ) { + p = notSet20; + } } break; case 5 : - // NFABuilder.g:146:4: range + // NFABuilder.g:145:4: range { - pushFollow(FOLLOW_range_in_atom507); - range(); + pushFollow(FOLLOW_range_in_atom635); + range21=range(); state._fsp--; if (state.failed) return p; + if ( state.backtracking==1 ) { + p = range21; + } } break; case 6 : - // NFABuilder.g:147:4: ^( DOT ID terminal ) + // NFABuilder.g:146:4: ^( DOT ID terminal ) { - match(input,DOT,FOLLOW_DOT_in_atom513); if (state.failed) return p; + match(input,DOT,FOLLOW_DOT_in_atom647); if (state.failed) return p; match(input, Token.DOWN, null); if (state.failed) return p; - match(input,ID,FOLLOW_ID_in_atom515); if (state.failed) return p; - pushFollow(FOLLOW_terminal_in_atom517); - terminal(); + match(input,ID,FOLLOW_ID_in_atom649); if (state.failed) return p; + pushFollow(FOLLOW_terminal_in_atom651); + terminal22=terminal(); state._fsp--; if (state.failed) return p; match(input, Token.UP, null); if (state.failed) return p; + if ( state.backtracking==1 ) { + p = (terminal22!=null?terminal22.p:null); + } } break; case 7 : - // NFABuilder.g:148:4: ^( DOT ID ruleref ) + // NFABuilder.g:147:4: ^( DOT ID ruleref ) { - match(input,DOT,FOLLOW_DOT_in_atom524); if (state.failed) return p; + match(input,DOT,FOLLOW_DOT_in_atom661); if (state.failed) return p; match(input, Token.DOWN, null); if (state.failed) return p; - match(input,ID,FOLLOW_ID_in_atom526); if (state.failed) return p; - pushFollow(FOLLOW_ruleref_in_atom528); - ruleref(); + match(input,ID,FOLLOW_ID_in_atom663); if (state.failed) return p; + pushFollow(FOLLOW_ruleref_in_atom665); + ruleref23=ruleref(); state._fsp--; if (state.failed) return p; match(input, Token.UP, null); if (state.failed) return p; + if ( state.backtracking==1 ) { + p = ruleref23; + } } break; case 8 : - // NFABuilder.g:149:9: terminal + // NFABuilder.g:148:9: terminal { - pushFollow(FOLLOW_terminal_in_atom539); - terminal(); + pushFollow(FOLLOW_terminal_in_atom679); + terminal24=terminal(); state._fsp--; if (state.failed) return p; + if ( state.backtracking==1 ) { + p = (terminal24!=null?terminal24.p:null); + } } break; case 9 : - // NFABuilder.g:150:9: ruleref + // NFABuilder.g:149:9: ruleref { - pushFollow(FOLLOW_ruleref_in_atom549); - ruleref(); + pushFollow(FOLLOW_ruleref_in_atom694); + ruleref25=ruleref(); state._fsp--; if (state.failed) return p; + if ( state.backtracking==1 ) { + p = ruleref25; + } } break; @@ -1134,31 +1269,36 @@ public class NFABuilder extends TreeFilter { // $ANTLR start "notSet" - // NFABuilder.g:153:1: notSet returns [NFAFactory.Handle p] : ( ^( NOT notTerminal ) | ^( NOT block ) ); + // NFABuilder.g:152:1: notSet returns [NFAFactory.Handle p] : ( ^( NOT notTerminal ) | ^( NOT block ) ); public final NFAFactory.Handle notSet() throws RecognitionException { NFAFactory.Handle p = null; + NFABuilder.notTerminal_return notTerminal26 = null; + + NFAFactory.Handle block27 = null; + + try { - // NFABuilder.g:154:5: ( ^( NOT notTerminal ) | ^( NOT block ) ) - int alt12=2; - int LA12_0 = input.LA(1); + // NFABuilder.g:153:5: ( ^( NOT notTerminal ) | ^( NOT block ) ) + int alt11=2; + int LA11_0 = input.LA(1); - if ( (LA12_0==NOT) ) { - int LA12_1 = input.LA(2); + if ( (LA11_0==NOT) ) { + int LA11_1 = input.LA(2); - if ( (LA12_1==DOWN) ) { - int LA12_2 = input.LA(3); + if ( (LA11_1==DOWN) ) { + int LA11_2 = input.LA(3); - if ( (LA12_2==BLOCK) ) { - alt12=2; + if ( (LA11_2==BLOCK) ) { + alt11=2; } - else if ( (LA12_2==TOKEN_REF||LA12_2==STRING_LITERAL) ) { - alt12=1; + else if ( (LA11_2==TOKEN_REF||LA11_2==STRING_LITERAL) ) { + alt11=1; } else { if (state.backtracking>0) {state.failed=true; return p;} NoViableAltException nvae = - new NoViableAltException("", 12, 2, input); + new NoViableAltException("", 11, 2, input); throw nvae; } @@ -1166,7 +1306,7 @@ public class NFABuilder extends TreeFilter { else { if (state.backtracking>0) {state.failed=true; return p;} NoViableAltException nvae = - new NoViableAltException("", 12, 1, input); + new NoViableAltException("", 11, 1, input); throw nvae; } @@ -1174,40 +1314,46 @@ public class NFABuilder extends TreeFilter { else { if (state.backtracking>0) {state.failed=true; return p;} NoViableAltException nvae = - new NoViableAltException("", 12, 0, input); + new NoViableAltException("", 11, 0, input); throw nvae; } - switch (alt12) { + switch (alt11) { case 1 : - // NFABuilder.g:154:7: ^( NOT notTerminal ) + // NFABuilder.g:153:7: ^( NOT notTerminal ) { - match(input,NOT,FOLLOW_NOT_in_notSet571); if (state.failed) return p; + match(input,NOT,FOLLOW_NOT_in_notSet722); if (state.failed) return p; match(input, Token.DOWN, null); if (state.failed) return p; - pushFollow(FOLLOW_notTerminal_in_notSet573); - notTerminal(); + pushFollow(FOLLOW_notTerminal_in_notSet724); + notTerminal26=notTerminal(); state._fsp--; if (state.failed) return p; match(input, Token.UP, null); if (state.failed) return p; + if ( state.backtracking==1 ) { + p = factory.not((notTerminal26!=null?notTerminal26.p:null)); + } } break; case 2 : - // NFABuilder.g:155:7: ^( NOT block ) + // NFABuilder.g:154:7: ^( NOT block ) { - match(input,NOT,FOLLOW_NOT_in_notSet583); if (state.failed) return p; + match(input,NOT,FOLLOW_NOT_in_notSet736); if (state.failed) return p; match(input, Token.DOWN, null); if (state.failed) return p; - pushFollow(FOLLOW_block_in_notSet585); - block(); + pushFollow(FOLLOW_block_in_notSet738); + block27=block(); state._fsp--; if (state.failed) return p; match(input, Token.UP, null); if (state.failed) return p; + if ( state.backtracking==1 ) { + p = factory.not(block27); + } } break; @@ -1224,29 +1370,59 @@ public class NFABuilder extends TreeFilter { } // $ANTLR end "notSet" + public static class notTerminal_return extends TreeRuleReturnScope { + public NFAFactory.Handle p; + }; // $ANTLR start "notTerminal" - // NFABuilder.g:158:1: notTerminal returns [NFAFactory.Handle p] : ( TOKEN_REF | STRING_LITERAL ); - public final NFAFactory.Handle notTerminal() throws RecognitionException { - NFAFactory.Handle p = null; + // NFABuilder.g:157:1: notTerminal returns [NFAFactory.Handle p] : ( TOKEN_REF | STRING_LITERAL ); + public final NFABuilder.notTerminal_return notTerminal() throws RecognitionException { + NFABuilder.notTerminal_return retval = new NFABuilder.notTerminal_return(); + retval.start = input.LT(1); + + GrammarAST TOKEN_REF28=null; try { - // NFABuilder.g:159:5: ( TOKEN_REF | STRING_LITERAL ) - // NFABuilder.g: - { - if ( input.LA(1)==TOKEN_REF||input.LA(1)==STRING_LITERAL ) { - input.consume(); - state.errorRecovery=false;state.failed=false; + // NFABuilder.g:158:5: ( TOKEN_REF | STRING_LITERAL ) + int alt12=2; + int LA12_0 = input.LA(1); + + if ( (LA12_0==TOKEN_REF) ) { + alt12=1; + } + else if ( (LA12_0==STRING_LITERAL) ) { + alt12=2; } else { - if (state.backtracking>0) {state.failed=true; return p;} - MismatchedSetException mse = new MismatchedSetException(null,input); - throw mse; - } + if (state.backtracking>0) {state.failed=true; return retval;} + NoViableAltException nvae = + new NoViableAltException("", 12, 0, input); + throw nvae; + } + switch (alt12) { + case 1 : + // NFABuilder.g:158:7: TOKEN_REF + { + TOKEN_REF28=(GrammarAST)match(input,TOKEN_REF,FOLLOW_TOKEN_REF_in_notTerminal764); if (state.failed) return retval; + if ( state.backtracking==1 ) { + retval.p = factory.tokenRef((TerminalAST)TOKEN_REF28); + } + + } + break; + case 2 : + // NFABuilder.g:159:7: STRING_LITERAL + { + match(input,STRING_LITERAL,FOLLOW_STRING_LITERAL_in_notTerminal777); if (state.failed) return retval; + if ( state.backtracking==1 ) { + retval.p = factory.stringLiteral(((GrammarAST)retval.start)); + } + + } + break; } - } catch (RecognitionException re) { reportError(re); @@ -1254,22 +1430,22 @@ public class NFABuilder extends TreeFilter { } finally { } - return p; + return retval; } // $ANTLR end "notTerminal" // $ANTLR start "ruleref" - // NFABuilder.g:163:1: ruleref returns [NFAFactory.Handle p] : ( ^( ROOT ^( RULE_REF ( ARG_ACTION )? ) ) | ^( BANG ^( RULE_REF ( ARG_ACTION )? ) ) | ^( RULE_REF ( ARG_ACTION )? ) ); + // NFABuilder.g:162:1: ruleref returns [NFAFactory.Handle p] : ( ^( ROOT ^( RULE_REF ( ARG_ACTION )? ) ) | ^( BANG ^( RULE_REF ( ARG_ACTION )? ) ) | ^( RULE_REF ( ARG_ACTION )? ) ); public final NFAFactory.Handle ruleref() throws RecognitionException { NFAFactory.Handle p = null; - GrammarAST RULE_REF1=null; - GrammarAST RULE_REF2=null; - GrammarAST RULE_REF3=null; + GrammarAST RULE_REF29=null; + GrammarAST RULE_REF30=null; + GrammarAST RULE_REF31=null; try { - // NFABuilder.g:164:5: ( ^( ROOT ^( RULE_REF ( ARG_ACTION )? ) ) | ^( BANG ^( RULE_REF ( ARG_ACTION )? ) ) | ^( RULE_REF ( ARG_ACTION )? ) ) + // NFABuilder.g:163:5: ( ^( ROOT ^( RULE_REF ( ARG_ACTION )? ) ) | ^( BANG ^( RULE_REF ( ARG_ACTION )? ) ) | ^( RULE_REF ( ARG_ACTION )? ) ) int alt16=3; switch ( input.LA(1) ) { case ROOT: @@ -1297,16 +1473,16 @@ public class NFABuilder extends TreeFilter { switch (alt16) { case 1 : - // NFABuilder.g:164:7: ^( ROOT ^( RULE_REF ( ARG_ACTION )? ) ) + // NFABuilder.g:163:7: ^( ROOT ^( RULE_REF ( ARG_ACTION )? ) ) { - match(input,ROOT,FOLLOW_ROOT_in_ruleref637); if (state.failed) return p; + match(input,ROOT,FOLLOW_ROOT_in_ruleref802); if (state.failed) return p; match(input, Token.DOWN, null); if (state.failed) return p; - RULE_REF1=(GrammarAST)match(input,RULE_REF,FOLLOW_RULE_REF_in_ruleref640); if (state.failed) return p; + RULE_REF29=(GrammarAST)match(input,RULE_REF,FOLLOW_RULE_REF_in_ruleref805); if (state.failed) return p; if ( input.LA(1)==Token.DOWN ) { match(input, Token.DOWN, null); if (state.failed) return p; - // NFABuilder.g:164:25: ( ARG_ACTION )? + // NFABuilder.g:163:25: ( ARG_ACTION )? int alt13=2; int LA13_0 = input.LA(1); @@ -1315,9 +1491,9 @@ public class NFABuilder extends TreeFilter { } switch (alt13) { case 1 : - // NFABuilder.g:164:25: ARG_ACTION + // NFABuilder.g:163:25: ARG_ACTION { - match(input,ARG_ACTION,FOLLOW_ARG_ACTION_in_ruleref642); if (state.failed) return p; + match(input,ARG_ACTION,FOLLOW_ARG_ACTION_in_ruleref807); if (state.failed) return p; } break; @@ -1330,22 +1506,22 @@ public class NFABuilder extends TreeFilter { match(input, Token.UP, null); if (state.failed) return p; if ( state.backtracking==1 ) { - factory.ruleRef(RULE_REF1); + p = factory.ruleRef(RULE_REF29); } } break; case 2 : - // NFABuilder.g:165:7: ^( BANG ^( RULE_REF ( ARG_ACTION )? ) ) + // NFABuilder.g:164:7: ^( BANG ^( RULE_REF ( ARG_ACTION )? ) ) { - match(input,BANG,FOLLOW_BANG_in_ruleref656); if (state.failed) return p; + match(input,BANG,FOLLOW_BANG_in_ruleref821); if (state.failed) return p; match(input, Token.DOWN, null); if (state.failed) return p; - RULE_REF2=(GrammarAST)match(input,RULE_REF,FOLLOW_RULE_REF_in_ruleref659); if (state.failed) return p; + RULE_REF30=(GrammarAST)match(input,RULE_REF,FOLLOW_RULE_REF_in_ruleref824); if (state.failed) return p; if ( input.LA(1)==Token.DOWN ) { match(input, Token.DOWN, null); if (state.failed) return p; - // NFABuilder.g:165:25: ( ARG_ACTION )? + // NFABuilder.g:164:25: ( ARG_ACTION )? int alt14=2; int LA14_0 = input.LA(1); @@ -1354,9 +1530,9 @@ public class NFABuilder extends TreeFilter { } switch (alt14) { case 1 : - // NFABuilder.g:165:25: ARG_ACTION + // NFABuilder.g:164:25: ARG_ACTION { - match(input,ARG_ACTION,FOLLOW_ARG_ACTION_in_ruleref661); if (state.failed) return p; + match(input,ARG_ACTION,FOLLOW_ARG_ACTION_in_ruleref826); if (state.failed) return p; } break; @@ -1369,19 +1545,19 @@ public class NFABuilder extends TreeFilter { match(input, Token.UP, null); if (state.failed) return p; if ( state.backtracking==1 ) { - factory.ruleRef(RULE_REF2); + p = factory.ruleRef(RULE_REF30); } } break; case 3 : - // NFABuilder.g:166:7: ^( RULE_REF ( ARG_ACTION )? ) + // NFABuilder.g:165:7: ^( RULE_REF ( ARG_ACTION )? ) { - RULE_REF3=(GrammarAST)match(input,RULE_REF,FOLLOW_RULE_REF_in_ruleref675); if (state.failed) return p; + RULE_REF31=(GrammarAST)match(input,RULE_REF,FOLLOW_RULE_REF_in_ruleref840); if (state.failed) return p; if ( input.LA(1)==Token.DOWN ) { match(input, Token.DOWN, null); if (state.failed) return p; - // NFABuilder.g:166:18: ( ARG_ACTION )? + // NFABuilder.g:165:18: ( ARG_ACTION )? int alt15=2; int LA15_0 = input.LA(1); @@ -1390,9 +1566,9 @@ public class NFABuilder extends TreeFilter { } switch (alt15) { case 1 : - // NFABuilder.g:166:18: ARG_ACTION + // NFABuilder.g:165:18: ARG_ACTION { - match(input,ARG_ACTION,FOLLOW_ARG_ACTION_in_ruleref677); if (state.failed) return p; + match(input,ARG_ACTION,FOLLOW_ARG_ACTION_in_ruleref842); if (state.failed) return p; } break; @@ -1403,7 +1579,7 @@ public class NFABuilder extends TreeFilter { match(input, Token.UP, null); if (state.failed) return p; } if ( state.backtracking==1 ) { - factory.ruleRef(RULE_REF3); + p = factory.ruleRef(RULE_REF31); } } @@ -1423,7 +1599,7 @@ public class NFABuilder extends TreeFilter { // $ANTLR start "range" - // NFABuilder.g:169:1: range returns [NFAFactory.Handle p] : ^( RANGE a= STRING_LITERAL b= STRING_LITERAL ) ; + // NFABuilder.g:168:1: range returns [NFAFactory.Handle p] : ^( RANGE a= STRING_LITERAL b= STRING_LITERAL ) ; public final NFAFactory.Handle range() throws RecognitionException { NFAFactory.Handle p = null; @@ -1431,18 +1607,18 @@ public class NFABuilder extends TreeFilter { GrammarAST b=null; try { - // NFABuilder.g:170:5: ( ^( RANGE a= STRING_LITERAL b= STRING_LITERAL ) ) - // NFABuilder.g:170:7: ^( RANGE a= STRING_LITERAL b= STRING_LITERAL ) + // NFABuilder.g:169:5: ( ^( RANGE a= STRING_LITERAL b= STRING_LITERAL ) ) + // NFABuilder.g:169:7: ^( RANGE a= STRING_LITERAL b= STRING_LITERAL ) { - match(input,RANGE,FOLLOW_RANGE_in_range705); if (state.failed) return p; + match(input,RANGE,FOLLOW_RANGE_in_range870); if (state.failed) return p; match(input, Token.DOWN, null); if (state.failed) return p; - a=(GrammarAST)match(input,STRING_LITERAL,FOLLOW_STRING_LITERAL_in_range709); if (state.failed) return p; - b=(GrammarAST)match(input,STRING_LITERAL,FOLLOW_STRING_LITERAL_in_range713); if (state.failed) return p; + a=(GrammarAST)match(input,STRING_LITERAL,FOLLOW_STRING_LITERAL_in_range874); if (state.failed) return p; + b=(GrammarAST)match(input,STRING_LITERAL,FOLLOW_STRING_LITERAL_in_range878); if (state.failed) return p; match(input, Token.UP, null); if (state.failed) return p; if ( state.backtracking==1 ) { - factory.range(a,b); + p = factory.range(a,b); } } @@ -1463,136 +1639,145 @@ public class NFABuilder extends TreeFilter { }; // $ANTLR start "terminal" - // NFABuilder.g:173:1: terminal returns [NFAFactory.Handle p] : ( ^( STRING_LITERAL . ) | STRING_LITERAL | ^( TOKEN_REF ARG_ACTION . ) | ^( TOKEN_REF . ) | TOKEN_REF | ^( WILDCARD . ) | WILDCARD | ^( ROOT terminal ) | ^( BANG terminal ) ); + // NFABuilder.g:172:1: terminal returns [NFAFactory.Handle p] : ( ^( STRING_LITERAL . ) | STRING_LITERAL | ^( TOKEN_REF ARG_ACTION . ) | ^( TOKEN_REF . ) | TOKEN_REF | ^( WILDCARD . ) | WILDCARD | ^( ROOT t= terminal ) | ^( BANG t= terminal ) ); public final NFABuilder.terminal_return terminal() throws RecognitionException { NFABuilder.terminal_return retval = new NFABuilder.terminal_return(); retval.start = input.LT(1); + NFABuilder.terminal_return t = null; + + try { - // NFABuilder.g:174:5: ( ^( STRING_LITERAL . ) | STRING_LITERAL | ^( TOKEN_REF ARG_ACTION . ) | ^( TOKEN_REF . ) | TOKEN_REF | ^( WILDCARD . ) | WILDCARD | ^( ROOT terminal ) | ^( BANG terminal ) ) + // NFABuilder.g:173:5: ( ^( STRING_LITERAL . ) | STRING_LITERAL | ^( TOKEN_REF ARG_ACTION . ) | ^( TOKEN_REF . ) | TOKEN_REF | ^( WILDCARD . ) | WILDCARD | ^( ROOT t= terminal ) | ^( BANG t= terminal ) ) int alt17=9; alt17 = dfa17.predict(input); switch (alt17) { case 1 : - // NFABuilder.g:174:8: ^( STRING_LITERAL . ) + // NFABuilder.g:173:8: ^( STRING_LITERAL . ) { - match(input,STRING_LITERAL,FOLLOW_STRING_LITERAL_in_terminal739); if (state.failed) return retval; + match(input,STRING_LITERAL,FOLLOW_STRING_LITERAL_in_terminal904); if (state.failed) return retval; match(input, Token.DOWN, null); if (state.failed) return retval; matchAny(input); if (state.failed) return retval; match(input, Token.UP, null); if (state.failed) return retval; if ( state.backtracking==1 ) { - factory.stringLiteral(((GrammarAST)retval.start)); + retval.p = factory.stringLiteral(((GrammarAST)retval.start)); } } break; case 2 : - // NFABuilder.g:175:7: STRING_LITERAL + // NFABuilder.g:174:7: STRING_LITERAL { - match(input,STRING_LITERAL,FOLLOW_STRING_LITERAL_in_terminal754); if (state.failed) return retval; + match(input,STRING_LITERAL,FOLLOW_STRING_LITERAL_in_terminal919); if (state.failed) return retval; if ( state.backtracking==1 ) { - factory.stringLiteral(((GrammarAST)retval.start)); + retval.p = factory.stringLiteral(((GrammarAST)retval.start)); } } break; case 3 : - // NFABuilder.g:176:7: ^( TOKEN_REF ARG_ACTION . ) + // NFABuilder.g:175:7: ^( TOKEN_REF ARG_ACTION . ) { - match(input,TOKEN_REF,FOLLOW_TOKEN_REF_in_terminal768); if (state.failed) return retval; + match(input,TOKEN_REF,FOLLOW_TOKEN_REF_in_terminal933); if (state.failed) return retval; match(input, Token.DOWN, null); if (state.failed) return retval; - match(input,ARG_ACTION,FOLLOW_ARG_ACTION_in_terminal770); if (state.failed) return retval; + match(input,ARG_ACTION,FOLLOW_ARG_ACTION_in_terminal935); if (state.failed) return retval; matchAny(input); if (state.failed) return retval; match(input, Token.UP, null); if (state.failed) return retval; if ( state.backtracking==1 ) { - factory.tokenRef((TerminalAST)((GrammarAST)retval.start)); + retval.p = factory.tokenRef((TerminalAST)((GrammarAST)retval.start)); } } break; case 4 : - // NFABuilder.g:177:7: ^( TOKEN_REF . ) + // NFABuilder.g:176:7: ^( TOKEN_REF . ) { - match(input,TOKEN_REF,FOLLOW_TOKEN_REF_in_terminal784); if (state.failed) return retval; + match(input,TOKEN_REF,FOLLOW_TOKEN_REF_in_terminal949); if (state.failed) return retval; match(input, Token.DOWN, null); if (state.failed) return retval; matchAny(input); if (state.failed) return retval; match(input, Token.UP, null); if (state.failed) return retval; if ( state.backtracking==1 ) { - factory.tokenRef((TerminalAST)((GrammarAST)retval.start)); + retval.p = factory.tokenRef((TerminalAST)((GrammarAST)retval.start)); } } break; case 5 : - // NFABuilder.g:178:7: TOKEN_REF + // NFABuilder.g:177:7: TOKEN_REF { - match(input,TOKEN_REF,FOLLOW_TOKEN_REF_in_terminal800); if (state.failed) return retval; + match(input,TOKEN_REF,FOLLOW_TOKEN_REF_in_terminal965); if (state.failed) return retval; if ( state.backtracking==1 ) { - factory.tokenRef((TerminalAST)((GrammarAST)retval.start)); + retval.p = factory.tokenRef((TerminalAST)((GrammarAST)retval.start)); } } break; case 6 : - // NFABuilder.g:179:7: ^( WILDCARD . ) + // NFABuilder.g:178:7: ^( WILDCARD . ) { - match(input,WILDCARD,FOLLOW_WILDCARD_in_terminal815); if (state.failed) return retval; + match(input,WILDCARD,FOLLOW_WILDCARD_in_terminal980); if (state.failed) return retval; match(input, Token.DOWN, null); if (state.failed) return retval; matchAny(input); if (state.failed) return retval; match(input, Token.UP, null); if (state.failed) return retval; if ( state.backtracking==1 ) { - factory.wildcard(((GrammarAST)retval.start)); + retval.p = factory.wildcard(((GrammarAST)retval.start)); } } break; case 7 : - // NFABuilder.g:180:7: WILDCARD + // NFABuilder.g:179:7: WILDCARD { - match(input,WILDCARD,FOLLOW_WILDCARD_in_terminal831); if (state.failed) return retval; + match(input,WILDCARD,FOLLOW_WILDCARD_in_terminal996); if (state.failed) return retval; if ( state.backtracking==1 ) { - factory.wildcard(((GrammarAST)retval.start)); + retval.p = factory.wildcard(((GrammarAST)retval.start)); } } break; case 8 : - // NFABuilder.g:181:7: ^( ROOT terminal ) + // NFABuilder.g:180:7: ^( ROOT t= terminal ) { - match(input,ROOT,FOLLOW_ROOT_in_terminal846); if (state.failed) return retval; + match(input,ROOT,FOLLOW_ROOT_in_terminal1011); if (state.failed) return retval; match(input, Token.DOWN, null); if (state.failed) return retval; - pushFollow(FOLLOW_terminal_in_terminal848); - terminal(); + pushFollow(FOLLOW_terminal_in_terminal1015); + t=terminal(); state._fsp--; if (state.failed) return retval; match(input, Token.UP, null); if (state.failed) return retval; + if ( state.backtracking==1 ) { + retval.p = (t!=null?t.p:null); + } } break; case 9 : - // NFABuilder.g:182:7: ^( BANG terminal ) + // NFABuilder.g:181:7: ^( BANG t= terminal ) { - match(input,BANG,FOLLOW_BANG_in_terminal858); if (state.failed) return retval; + match(input,BANG,FOLLOW_BANG_in_terminal1029); if (state.failed) return retval; match(input, Token.DOWN, null); if (state.failed) return retval; - pushFollow(FOLLOW_terminal_in_terminal860); - terminal(); + pushFollow(FOLLOW_terminal_in_terminal1033); + t=terminal(); state._fsp--; if (state.failed) return retval; match(input, Token.UP, null); if (state.failed) return retval; + if ( state.backtracking==1 ) { + retval.p = (t!=null?t.p:null); + } } break; @@ -1614,7 +1799,7 @@ public class NFABuilder extends TreeFilter { protected DFA6 dfa6 = new DFA6(this); protected DFA7 dfa7 = new DFA7(this); - protected DFA11 dfa11 = new DFA11(this); + protected DFA10 dfa10 = new DFA10(this); protected DFA17 dfa17 = new DFA17(this); static final String DFA6_eotS = "\14\uffff"; @@ -1677,7 +1862,7 @@ public class NFABuilder extends TreeFilter { this.transition = DFA6_transition; } public String getDescription() { - return "102:1: element returns [NFAFactory.Handle p] : ( labeledElement | atom | ebnf | ACTION | SEMPRED | GATED_SEMPRED | treeSpec );"; + return "104:1: element returns [NFAFactory.Handle p] : ( labeledElement | atom | ebnf | ACTION | SEMPRED | GATED_SEMPRED | treeSpec );"; } } static final String DFA7_eotS = @@ -1689,7 +1874,7 @@ public class NFABuilder extends TreeFilter { static final String DFA7_maxS = "\1\62\2\2\2\126\2\140\4\uffff"; static final String DFA7_acceptS = - "\7\uffff\1\2\1\1\1\3\1\4"; + "\7\uffff\1\1\1\2\1\3\1\4"; static final String DFA7_specialS = "\13\uffff}>"; static final String[] DFA7_transitionS = { @@ -1698,8 +1883,8 @@ public class NFABuilder extends TreeFilter { "\1\4", "\1\5", "\1\6", - "\1\10\4\uffff\1\10\1\uffff\2\10\6\uffff\2\10\3\uffff\1\10\10"+ - "\uffff\1\7\23\uffff\1\10", + "\1\7\4\uffff\1\7\1\uffff\2\7\6\uffff\2\7\3\uffff\1\7\10\uffff"+ + "\1\10\23\uffff\1\7", "\1\11\4\uffff\1\11\1\uffff\2\11\6\uffff\2\11\3\uffff\1\11\10"+ "\uffff\1\12\23\uffff\1\11", "", @@ -1738,25 +1923,25 @@ public class NFABuilder extends TreeFilter { this.transition = DFA7_transition; } public String getDescription() { - return "112:1: labeledElement returns [NFAFactory.Handle p] : ( ^( ASSIGN ID atom ) | ^( ASSIGN ID block ) | ^( PLUS_ASSIGN ID atom ) | ^( PLUS_ASSIGN ID block ) );"; + return "114:1: labeledElement returns [NFAFactory.Handle p] : ( ^( ASSIGN ID atom ) | ^( ASSIGN ID block ) | ^( PLUS_ASSIGN ID atom ) | ^( PLUS_ASSIGN ID block ) );"; } } - static final String DFA11_eotS = + static final String DFA10_eotS = "\25\uffff"; - static final String DFA11_eofS = + static final String DFA10_eofS = "\25\uffff"; - static final String DFA11_minS = - "\1\57\2\2\1\uffff\1\2\2\uffff\2\57\1\126\4\uffff\1\57\2\2\2\uffff"+ - "\2\57"; - static final String DFA11_maxS = - "\1\140\2\2\1\uffff\1\2\2\uffff\2\140\1\126\4\uffff\1\140\2\2\2\uffff"+ - "\2\140"; - static final String DFA11_acceptS = - "\3\uffff\1\5\1\uffff\1\10\1\11\3\uffff\1\1\1\3\1\2\1\4\3\uffff\1"+ - "\7\1\6\2\uffff"; - static final String DFA11_specialS = + static final String DFA10_minS = + "\1\57\2\2\1\uffff\1\2\2\uffff\2\57\1\126\4\uffff\1\57\1\uffff\2"+ + "\2\1\uffff\2\57"; + static final String DFA10_maxS = + "\1\140\2\2\1\uffff\1\2\2\uffff\2\140\1\126\4\uffff\1\140\1\uffff"+ + "\2\2\1\uffff\2\140"; + static final String DFA10_acceptS = + "\3\uffff\1\5\1\uffff\1\10\1\11\3\uffff\1\3\1\1\1\2\1\4\1\uffff\1"+ + "\6\2\uffff\1\7\2\uffff"; + static final String DFA10_specialS = "\25\uffff}>"; - static final String[] DFA11_transitionS = { + static final String[] DFA10_transitionS = { "\1\2\4\uffff\1\1\1\uffff\1\4\1\3\6\uffff\1\5\1\6\3\uffff\1\5"+ "\34\uffff\1\5", "\1\7", @@ -1765,7 +1950,7 @@ public class NFABuilder extends TreeFilter { "\1\11", "", "", - "\1\5\4\uffff\1\5\2\uffff\1\12\4\uffff\1\13\1\uffff\1\5\1\6"+ + "\1\5\4\uffff\1\5\2\uffff\1\13\4\uffff\1\12\1\uffff\1\5\1\6"+ "\3\uffff\1\5\34\uffff\1\5", "\1\5\4\uffff\1\5\2\uffff\1\14\4\uffff\1\15\1\uffff\1\5\1\6"+ "\3\uffff\1\5\34\uffff\1\5", @@ -1774,49 +1959,49 @@ public class NFABuilder extends TreeFilter { "", "", "", - "\1\20\4\uffff\1\17\11\uffff\1\22\1\21\3\uffff\1\22\34\uffff"+ - "\1\22", + "\1\21\4\uffff\1\20\11\uffff\1\17\1\22\3\uffff\1\17\34\uffff"+ + "\1\17", + "", "\1\23", "\1\24", "", - "", - "\1\22\4\uffff\1\22\11\uffff\1\22\1\21\3\uffff\1\22\34\uffff"+ - "\1\22", - "\1\22\4\uffff\1\22\11\uffff\1\22\1\21\3\uffff\1\22\34\uffff"+ - "\1\22" + "\1\17\4\uffff\1\17\11\uffff\1\17\1\22\3\uffff\1\17\34\uffff"+ + "\1\17", + "\1\17\4\uffff\1\17\11\uffff\1\17\1\22\3\uffff\1\17\34\uffff"+ + "\1\17" }; - static final short[] DFA11_eot = DFA.unpackEncodedString(DFA11_eotS); - static final short[] DFA11_eof = DFA.unpackEncodedString(DFA11_eofS); - static final char[] DFA11_min = DFA.unpackEncodedStringToUnsignedChars(DFA11_minS); - static final char[] DFA11_max = DFA.unpackEncodedStringToUnsignedChars(DFA11_maxS); - static final short[] DFA11_accept = DFA.unpackEncodedString(DFA11_acceptS); - static final short[] DFA11_special = DFA.unpackEncodedString(DFA11_specialS); - static final short[][] DFA11_transition; + static final short[] DFA10_eot = DFA.unpackEncodedString(DFA10_eotS); + static final short[] DFA10_eof = DFA.unpackEncodedString(DFA10_eofS); + static final char[] DFA10_min = DFA.unpackEncodedStringToUnsignedChars(DFA10_minS); + static final char[] DFA10_max = DFA.unpackEncodedStringToUnsignedChars(DFA10_maxS); + static final short[] DFA10_accept = DFA.unpackEncodedString(DFA10_acceptS); + static final short[] DFA10_special = DFA.unpackEncodedString(DFA10_specialS); + static final short[][] DFA10_transition; static { - int numStates = DFA11_transitionS.length; - DFA11_transition = new short[numStates][]; + int numStates = DFA10_transitionS.length; + DFA10_transition = new short[numStates][]; for (int i=0; i