antlrparser.java
来自「antlr最新版本V3源代码」· Java 代码 · 共 2,609 行 · 第 1/5 页
JAVA
2,609 行
astFactory.makeASTRoot(currentAST, tmp48_AST); match(PLUS_ASSIGN); break; } default: { throw new NoViableAltException(LT(1), getFilename()); } } } { switch ( LA(1)) { case STRING_LITERAL: case CHAR_LITERAL: case TOKEN_REF: case RULE_REF: case NOT: case WILDCARD: { atom(); astFactory.addASTChild(currentAST, returnAST); break; } case LPAREN: { block(); astFactory.addASTChild(currentAST, returnAST); break; } default: { throw new NoViableAltException(LT(1), getFilename()); } } } { switch ( LA(1)) { case STAR: case QUESTION: case PLUS: { sub=ebnfSuffix((GrammarAST)currentAST.root,false); elementNoOptionSpec_AST = (GrammarAST)currentAST.root; elementNoOptionSpec_AST=sub; currentAST.root = elementNoOptionSpec_AST; currentAST.child = elementNoOptionSpec_AST!=null &&elementNoOptionSpec_AST.getFirstChild()!=null ? elementNoOptionSpec_AST.getFirstChild() : elementNoOptionSpec_AST; currentAST.advanceChildToEnd(); break; } case ACTION: case SEMI: case STRING_LITERAL: case CHAR_LITERAL: case TOKEN_REF: case LPAREN: case OR: case RPAREN: case SEMPRED: case RULE_REF: case NOT: case TREE_BEGIN: case WILDCARD: case REWRITE: { break; } default: { throw new NoViableAltException(LT(1), getFilename()); } } } elementNoOptionSpec_AST = (GrammarAST)currentAST.root; } else if ((_tokenSet_23.member(LA(1))) && (_tokenSet_24.member(LA(2)))) { atom(); astFactory.addASTChild(currentAST, returnAST); { switch ( LA(1)) { case STAR: case QUESTION: case PLUS: { sub2=ebnfSuffix((GrammarAST)currentAST.root,false); elementNoOptionSpec_AST = (GrammarAST)currentAST.root; elementNoOptionSpec_AST=sub2; currentAST.root = elementNoOptionSpec_AST; currentAST.child = elementNoOptionSpec_AST!=null &&elementNoOptionSpec_AST.getFirstChild()!=null ? elementNoOptionSpec_AST.getFirstChild() : elementNoOptionSpec_AST; currentAST.advanceChildToEnd(); break; } case ACTION: case SEMI: case STRING_LITERAL: case CHAR_LITERAL: case TOKEN_REF: case LPAREN: case OR: case RPAREN: case SEMPRED: case RULE_REF: case NOT: case TREE_BEGIN: case WILDCARD: case REWRITE: { break; } default: { throw new NoViableAltException(LT(1), getFilename()); } } } elementNoOptionSpec_AST = (GrammarAST)currentAST.root; } else { throw new NoViableAltException(LT(1), getFilename()); } } } catch (RecognitionException ex) { reportError(ex); recover(ex,_tokenSet_21); } returnAST = elementNoOptionSpec_AST; } public final void atom() throws RecognitionException, TokenStreamException { returnAST = null; ASTPair currentAST = new ASTPair(); GrammarAST atom_AST = null; Token rr = null; GrammarAST rr_AST = null; try { // for error handling switch ( LA(1)) { case NOT: { notSet(); astFactory.addASTChild(currentAST, returnAST); { switch ( LA(1)) { case ROOT: { GrammarAST tmp49_AST = null; tmp49_AST = (GrammarAST)astFactory.create(LT(1)); astFactory.makeASTRoot(currentAST, tmp49_AST); match(ROOT); break; } case BANG: { GrammarAST tmp50_AST = null; tmp50_AST = (GrammarAST)astFactory.create(LT(1)); astFactory.makeASTRoot(currentAST, tmp50_AST); match(BANG); break; } case ACTION: case SEMI: case STRING_LITERAL: case CHAR_LITERAL: case STAR: case TOKEN_REF: case LPAREN: case OR: case RPAREN: case SEMPRED: case RULE_REF: case NOT: case TREE_BEGIN: case QUESTION: case PLUS: case WILDCARD: case REWRITE: { break; } default: { throw new NoViableAltException(LT(1), getFilename()); } } } atom_AST = (GrammarAST)currentAST.root; break; } case RULE_REF: { rr = LT(1); rr_AST = (GrammarAST)astFactory.create(rr); astFactory.makeASTRoot(currentAST, rr_AST); match(RULE_REF); { switch ( LA(1)) { case ARG_ACTION: { GrammarAST tmp51_AST = null; tmp51_AST = (GrammarAST)astFactory.create(LT(1)); astFactory.addASTChild(currentAST, tmp51_AST); match(ARG_ACTION); break; } case ACTION: case SEMI: case STRING_LITERAL: case CHAR_LITERAL: case STAR: case TOKEN_REF: case BANG: case LPAREN: case OR: case RPAREN: case SEMPRED: case ROOT: case RULE_REF: case NOT: case TREE_BEGIN: case QUESTION: case PLUS: case WILDCARD: case REWRITE: { break; } default: { throw new NoViableAltException(LT(1), getFilename()); } } } { switch ( LA(1)) { case ROOT: { GrammarAST tmp52_AST = null; tmp52_AST = (GrammarAST)astFactory.create(LT(1)); astFactory.makeASTRoot(currentAST, tmp52_AST); match(ROOT); break; } case BANG: { GrammarAST tmp53_AST = null; tmp53_AST = (GrammarAST)astFactory.create(LT(1)); astFactory.makeASTRoot(currentAST, tmp53_AST); match(BANG); break; } case ACTION: case SEMI: case STRING_LITERAL: case CHAR_LITERAL: case STAR: case TOKEN_REF: case LPAREN: case OR: case RPAREN: case SEMPRED: case RULE_REF: case NOT: case TREE_BEGIN: case QUESTION: case PLUS: case WILDCARD: case REWRITE: { break; } default: { throw new NoViableAltException(LT(1), getFilename()); } } } atom_AST = (GrammarAST)currentAST.root; break; } default: if ((LA(1)==CHAR_LITERAL) && (LA(2)==RANGE)) { range(); astFactory.addASTChild(currentAST, returnAST); { switch ( LA(1)) { case ROOT: { GrammarAST tmp54_AST = null; tmp54_AST = (GrammarAST)astFactory.create(LT(1)); astFactory.makeASTRoot(currentAST, tmp54_AST); match(ROOT); break; } case BANG: { GrammarAST tmp55_AST = null; tmp55_AST = (GrammarAST)astFactory.create(LT(1)); astFactory.makeASTRoot(currentAST, tmp55_AST); match(BANG); break; } case ACTION: case SEMI: case STRING_LITERAL: case CHAR_LITERAL: case STAR: case TOKEN_REF: case LPAREN: case OR: case RPAREN: case SEMPRED: case RULE_REF: case NOT: case TREE_BEGIN: case QUESTION: case PLUS: case WILDCARD: case REWRITE: { break; } default: { throw new NoViableAltException(LT(1), getFilename()); } } } atom_AST = (GrammarAST)currentAST.root; } else if ((_tokenSet_25.member(LA(1))) && (_tokenSet_26.member(LA(2)))) { terminal(); astFactory.addASTChild(currentAST, returnAST); atom_AST = (GrammarAST)currentAST.root; } else { throw new NoViableAltException(LT(1), getFilename()); } } } catch (RecognitionException ex) { reportError(ex); recover(ex,_tokenSet_27); } returnAST = atom_AST; } public final GrammarAST ebnfSuffix( GrammarAST elemAST, boolean inRewrite ) throws RecognitionException, TokenStreamException { GrammarAST subrule=null; returnAST = null; ASTPair currentAST = new ASTPair(); GrammarAST ebnfSuffix_AST = null; GrammarAST ebnfRoot=null; try { // for error handling { switch ( LA(1)) { case QUESTION: { GrammarAST tmp56_AST = null; tmp56_AST = (GrammarAST)astFactory.create(LT(1)); match(QUESTION); ebnfRoot = (GrammarAST)astFactory.create(OPTIONAL,"?"); break; } case STAR: { GrammarAST tmp57_AST = null; tmp57_AST = (GrammarAST)astFactory.create(LT(1)); match(STAR); ebnfRoot = (GrammarAST)astFactory.create(CLOSURE,"*"); break; } case PLUS: { GrammarAST tmp58_AST = null; tmp58_AST = (GrammarAST)astFactory.create(LT(1)); match(PLUS); ebnfRoot = (GrammarAST)astFactory.create(POSITIVE_CLOSURE,"+"); break; } default: { throw new NoViableAltException(LT(1), getFilename()); } } } GrammarAST save = currentBlockAST; ebnfRoot.setLine(elemAST.getLine()); ebnfRoot.setColumn(elemAST.getColumn()); GrammarAST blkRoot = (GrammarAST)astFactory.create(BLOCK,"BLOCK"); currentBlockAST = blkRoot; GrammarAST eob = (GrammarAST)astFactory.create(EOB,"<end-of-block>"); eob.setLine(elemAST.getLine()); eob.setColumn(elemAST.getColumn()); GrammarAST alt = (GrammarAST)astFactory.make( (new ASTArray(3)).add((GrammarAST)astFactory.create(ALT,"ALT")).add(elemAST).add((GrammarAST)astFactory.create(EOA,"<end-of-alt>"))); if ( !inRewrite ) { prefixWithSynPred(alt); } subrule = (GrammarAST)astFactory.make( (new ASTArray(2)).add(ebnfRoot).add((GrammarAST)astFactory.make( (new ASTArray(3)).add(blkRoot).add(alt).add(eob)))); currentBlockAST = save; } catch (RecognitionException ex) { reportError(ex); recover(ex,_tokenSet_28); } returnAST = ebnfSuffix_AST; return subrule; } /** matches ENBF blocks (and sets via block rule) */ public final void ebnf() throws RecognitionException, TokenStreamException { returnAST = null; ASTPair currentAST = new ASTPair(); GrammarAST ebnf_AST = null; GrammarAST b_AST = null; int line = LT(1).getLine(); int col = LT(1).getColumn(); try { // for error handling block(); b_AST = (GrammarAST)returnAST; { switch ( LA(1)) { case QUESTION: { GrammarAST tmp59_AST = null; tmp59_AST = (GrammarAST)astFactory.create(LT(1)); match(QUESTION); ebnf_AST = (GrammarAST)currentAST.root; ebnf_AST=(GrammarAST)astFactory.make( (new ASTArray(2)).add((GrammarAST)astFactory.create(OPTIONAL,"?")).add(b_AST)); currentAST.root = ebnf_AST; currentAST.child = ebnf_AST!=null &&ebnf_AST.getFirstChild()!=null ? ebnf_AST.getFirstChild() : ebnf_AST; currentAST.advanceChildToEnd(); break; } case STAR: { GrammarAST tmp60_AST = null; tmp60_AST = (GrammarAST)astFactory.create(LT(1)); match(STAR); ebnf_AST = (GrammarAST)currentAST.root; ebnf_AST=(GrammarAST)astFactory.make( (new ASTArray(2)).add((GrammarAST)astFactory.create(CLOSURE,"*")).add(b_AST)); currentAST.root = ebnf_AST; currentAST.child = ebnf_AST!=null &&ebnf_AST.getFirstChild()!=null ? ebnf_AST.getFirstChild() : ebnf_AST; currentAST.advanceChildToEnd(); break; } case PLUS: { GrammarAST tmp61_AST = null; tmp61_AST = (GrammarAST)astFactory.create(LT(1)); match(PLUS); ebnf_AST = (GrammarAST)currentAST.root; ebnf_AST=(GrammarAST)astFactory.make( (new ASTArray(2)).add((GrammarAST)astFactory.create(POSITIVE_CLOSURE,"+")).add(b_AST)); currentAST.root = ebnf_AST; currentAST.child = ebnf_AST!=null &&ebnf_AST.getFirstChild()!=null ? ebnf_AST.getFirstChild() : ebnf_AST; currentAST.advanceChildToEnd(); break; } case IMPLIES: { match(IMPLIES); ebnf_AST = (GrammarAST)currentAST.root; if ( gtype==COMBINED_GRAMMAR && Character.isUpperCase(currentRuleName.charAt(0)) ) { // ignore for lexer rules in combined ebnf_AST = (GrammarAST)astFactory.make( (new ASTArray(2)).add((GrammarAST)astFactory.create(SYNPRED,"=>")).add(b_AST)); } else { // create manually specified (...)=> predicate; // convert to sempred ebnf_AST = createSynSemPredFromBlock(b_AST, SYN_SEMPRED); } currentAST.root = ebnf_AST; currentAST.child = ebnf_AST!=null &&ebnf_AST.getFirstChild()!=null ? ebnf_AST.getFirstChild() : ebnf_AST; currentAST.advanceChildToEnd(); break; } case ROOT: { GrammarAST tmp63_AST = null; tmp63_AST = (GrammarAST)astFactory.create(LT(1)); match(ROOT); ebnf_AST = (GrammarAST)currentAST.root; ebnf_AST = (GrammarAST)astFactory.make( (new ASTArray(2)).add(tmp63_AST).add(b_AST)); currentAST.root = ebnf_AST; currentAST.child = ebnf_AST!=null &&ebnf_AST.getFirstChild()!=null ? ebnf_AST.getFirstChild() : ebnf_AST; currentAST.advanceChildToEnd(); break; } case BANG: { GrammarAST tmp64_AST = null; tmp64_AST = (GrammarAST)astFactory.create(LT(1)); match(BANG); ebnf_AST = (GrammarAST)currentAST.root; ebnf_AST = (GrammarAST)astFactory.make( (new ASTArray(2)).add(tmp64_AST).add(b_AST)); currentAST.root = ebnf_AST; currentAST.child = ebnf_AST!=null &&ebnf_
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?