📄 codegentreewalker.java
字号:
String tokenLabel = generator.getTokenTypeAsTargetLabel(grammar.getTokenType(c.getText())); code.setAttribute("token",tokenLabel); code.setAttribute("elementIndex", ((TokenWithIndex)c.getToken()).getIndex()); generator.generateLocalFOLLOW(c,tokenLabel,currentRuleName); } break; } case STRING_LITERAL: { AST __t105 = _t; s = _t==ASTNULL ? null :(GrammarAST)_t; match(_t,STRING_LITERAL); _t = _t.getFirstChild(); { if (_t==null) _t=ASTNULL; switch ( _t.getType()) { case BANG: case ROOT: case RULEROOT: { as4 = _t==ASTNULL ? null : (GrammarAST)_t; ast_suffix(_t); _t = _retTree; break; } case 3: { break; } default: { throw new NoViableAltException(_t); } } } _t = __t105; _t = _t.getNextSibling(); if ( grammar.type==Grammar.LEXER ) { code = templates.getInstanceOf("lexerStringRef"); code.setAttribute("string", generator.target.getTargetStringLiteralFromANTLRStringLiteral(generator,s.getText())); if ( label!=null ) { code.setAttribute("label", label); } } else { // else it's a token type reference code = getTokenElementST("tokenRef", "string_literal", s, as4, label); String tokenLabel = generator.getTokenTypeAsTargetLabel(grammar.getTokenType(s.getText())); code.setAttribute("token",tokenLabel); code.setAttribute("elementIndex", ((TokenWithIndex)s.getToken()).getIndex()); generator.generateLocalFOLLOW(s,tokenLabel,currentRuleName); } break; } case WILDCARD: { AST __t107 = _t; w = _t==ASTNULL ? null :(GrammarAST)_t; match(_t,WILDCARD); _t = _t.getFirstChild(); { if (_t==null) _t=ASTNULL; switch ( _t.getType()) { case BANG: case ROOT: case RULEROOT: { as5 = _t==ASTNULL ? null : (GrammarAST)_t; ast_suffix(_t); _t = _retTree; break; } case 3: { break; } default: { throw new NoViableAltException(_t); } } } _t = __t107; _t = _t.getNextSibling(); code = getWildcardST(w,as5,label); /* if ( label!=null ) { code.setAttribute("label", label); } */ code.setAttribute("elementIndex", ((TokenWithIndex)w.getToken()).getIndex()); break; } case SET: { code=set(_t,label); _t = _retTree; break; } default: { throw new NoViableAltException(_t); } } } catch (RecognitionException ex) { reportError(ex); if (_t!=null) {_t = _t.getNextSibling();} } _retTree = _t; return code; } public final void ast_suffix(AST _t) throws RecognitionException { GrammarAST ast_suffix_AST_in = (_t == ASTNULL) ? null : (GrammarAST)_t; try { // for error handling if (_t==null) _t=ASTNULL; switch ( _t.getType()) { case ROOT: { GrammarAST tmp44_AST_in = (GrammarAST)_t; match(_t,ROOT); _t = _t.getNextSibling(); break; } case RULEROOT: { GrammarAST tmp45_AST_in = (GrammarAST)_t; match(_t,RULEROOT); _t = _t.getNextSibling(); break; } case BANG: { GrammarAST tmp46_AST_in = (GrammarAST)_t; match(_t,BANG); _t = _t.getNextSibling(); break; } default: { throw new NoViableAltException(_t); } } } catch (RecognitionException ex) { reportError(ex); if (_t!=null) {_t = _t.getNextSibling();} } _retTree = _t; } public final void setElement(AST _t) throws RecognitionException { GrammarAST setElement_AST_in = (_t == ASTNULL) ? null : (GrammarAST)_t; GrammarAST c = null; GrammarAST t = null; GrammarAST s = null; GrammarAST c1 = null; GrammarAST c2 = null; try { // for error handling if (_t==null) _t=ASTNULL; switch ( _t.getType()) { case CHAR_LITERAL: { c = (GrammarAST)_t; match(_t,CHAR_LITERAL); _t = _t.getNextSibling(); break; } case TOKEN_REF: { t = (GrammarAST)_t; match(_t,TOKEN_REF); _t = _t.getNextSibling(); break; } case STRING_LITERAL: { s = (GrammarAST)_t; match(_t,STRING_LITERAL); _t = _t.getNextSibling(); break; } case CHAR_RANGE: { AST __t116 = _t; GrammarAST tmp47_AST_in = (GrammarAST)_t; match(_t,CHAR_RANGE); _t = _t.getFirstChild(); c1 = (GrammarAST)_t; match(_t,CHAR_LITERAL); _t = _t.getNextSibling(); c2 = (GrammarAST)_t; match(_t,CHAR_LITERAL); _t = _t.getNextSibling(); _t = __t116; _t = _t.getNextSibling(); break; } default: { throw new NoViableAltException(_t); } } } catch (RecognitionException ex) { reportError(ex); if (_t!=null) {_t = _t.getNextSibling();} } _retTree = _t; } public final StringTemplate ebnf(AST _t) throws RecognitionException { StringTemplate code=null; GrammarAST ebnf_AST_in = (_t == ASTNULL) ? null : (GrammarAST)_t; DFA dfa=null; GrammarAST b = (GrammarAST)ebnf_AST_in.getFirstChild(); GrammarAST eob = (GrammarAST)b.getLastChild(); // loops will use EOB DFA try { // for error handling { if (_t==null) _t=ASTNULL; switch ( _t.getType()) { case BLOCK: { dfa = ebnf_AST_in.getLookaheadDFA(); code=block(_t,"block", dfa); _t = _retTree; break; } case OPTIONAL: { dfa = ebnf_AST_in.getLookaheadDFA(); AST __t89 = _t; GrammarAST tmp48_AST_in = (GrammarAST)_t; match(_t,OPTIONAL); _t = _t.getFirstChild(); code=block(_t,"optionalBlock", dfa); _t = _retTree; _t = __t89; _t = _t.getNextSibling(); break; } case CLOSURE: { dfa = eob.getLookaheadDFA(); AST __t90 = _t; GrammarAST tmp49_AST_in = (GrammarAST)_t; match(_t,CLOSURE); _t = _t.getFirstChild(); code=block(_t,"closureBlock", dfa); _t = _retTree; _t = __t90; _t = _t.getNextSibling(); break; } case POSITIVE_CLOSURE: { dfa = eob.getLookaheadDFA(); AST __t91 = _t; GrammarAST tmp50_AST_in = (GrammarAST)_t; match(_t,POSITIVE_CLOSURE); _t = _t.getFirstChild(); code=block(_t,"positiveClosureBlock", dfa); _t = _retTree; _t = __t91; _t = _t.getNextSibling(); break; } default: { throw new NoViableAltException(_t); } } } String description = grammar.grammarTreeToString(ebnf_AST_in, false); description = generator.target.getTargetStringLiteralFromString(description); code.setAttribute("description", description); } catch (RecognitionException ex) { reportError(ex); if (_t!=null) {_t = _t.getNextSibling();} } _retTree = _t; return code; } public final StringTemplate tree(AST _t) throws RecognitionException { StringTemplate code=templates.getInstanceOf("tree"); GrammarAST tree_AST_in = (_t == ASTNULL) ? null : (GrammarAST)_t; StringTemplate el=null; GrammarAST elAST=null; NFAState afterDOWN = (NFAState)tree_AST_in.NFATreeDownState.transition(0).target; LookaheadSet s = grammar.LOOK(afterDOWN); if ( s.member(Label.UP) ) { // nullable child list if we can see the UP as the next token // we need an "if ( input.LA(1)==Token.DOWN )" gate around // the child list. code.setAttribute("nullableChildList", "true"); } try { // for error handling AST __t93 = _t; GrammarAST tmp51_AST_in = (GrammarAST)_t; match(_t,TREE_BEGIN); _t = _t.getFirstChild(); elAST=(GrammarAST)_t; el=element(_t); _t = _retTree; code.setAttribute("root.{el,line,pos}", el, Utils.integer(elAST.getLine()), Utils.integer(elAST.getColumn()) ); { _loop95: do { if (_t==null) _t=ASTNULL; if ((_t.getType()==BLOCK||_t.getType()==OPTIONAL||_t.getType()==CLOSURE||_t.getType()==POSITIVE_CLOSURE||_t.getType()==CHAR_RANGE||_t.getType()==EPSILON||_t.getType()==SET||_t.getType()==GATED_SEMPRED||_t.getType()==SYN_SEMPRED||_t.getType()==ACTION||_t.getType()==ASSIGN||_t.getType()==STRING_LITERAL||_t.getType()==CHAR_LITERAL||_t.getType()==TOKEN_REF||_t.getType()==PLUS_ASSIGN||_t.getType()==SEMPRED||_t.getType()==NOT||_t.getType()==TREE_BEGIN||_t.getType()==RULE_REF||_t.getType()==WILDCARD)) { elAST=(GrammarAST)_t; el=element(_t); _t = _retTree; code.setAttribute("children.{el,line,pos}", el, Utils.integer(elAST.getLine()), Utils.integer(elAST.getColumn()) ); } else { break _loop95; } } while (true); } _t = __t93; _t = _t.getNextSibling(); } catch (RecognitionException ex) { reportError(ex); if (_t!=null) {_t = _t.getNextSibling();} } _retTree = _t; return code; } public final StringTemplate set(AST _t, String label ) throws RecognitionException { StringTemplate code=null; GrammarAST set_AST_in = (_t == ASTNULL) ? null : (GrammarAST)_t; GrammarAST s = null; GrammarAST ast = null; try { // for error handling AST __t111 = _t; s = _t==ASTNULL ? null :(GrammarAST)_t; match(_t,SET); _t = _t.getFirstChild(); { int _cnt113=0; _loop113: do { if (_t==null) _t=ASTNULL; if ((_t.getType()==CHAR_RANGE||_t.getType()==STRING_LITERAL||_t.getType()==CHAR_LITERAL||_t.getType()==TOKEN_REF)) { setElement(_t); _t = _retTree; } else { if ( _cnt113>=1 ) { break _loop113; } else {throw new NoViableAltException(_t);} } _cnt113++; } while (true); } { if (_t==null) _t=ASTNULL; switch ( _t.getType()) { case BANG: case ROOT: case RULEROOT: { ast = _t==ASTNULL ? null : (GrammarAST)_t; ast_suffix(_t); _t = _retTree; break; } case 3: { break; } default: { throw new NoViableAltException(_t); } } } _t = __t111; _t = _t.getNextSibling(); // TODO: make this work with ast_suffix code = getTokenElementST("matchSet", "set", s, ast, label); code.setAttribute("elementIndex", ((TokenWithIndex)s.getToken()).getIndex()); if ( grammar.type!=Grammar.LEXER ) { generator.generateLocalFOLLOW(s,"set",currentRuleName); } code.setAttribute("s", generator.genSetExpr(templates,s.getSetValue(),1,false)); /* if ( label!=null ) { code.setAttribute("label", label); } */ } catch (RecognitionException ex) { reportError(ex); if (_t!=null) {_t = _t.getNextSibling();} } _retTree = _t; return code; } public final StringTemplate rewrite_alternative(AST _t) throws RecognitionException { StringTemplate code=null; GrammarAST rewrite_alternative_AST_in = (_t == ASTNULL) ? null : (GrammarAST)_t; GrammarAST a = null; StringTemplate el,st; try { // for error handling if (_t==null) _t=ASTNULL; if (((_t.getType()==ALT))&&(generator.grammar.buildAST())) { AST __t125 = _t; a = _t==ASTNULL ? null :(GrammarAST)_t; match(_t,ALT); _t = _t.getFirstChild(); code=templates.getInstanceOf("rewriteElementList"); { if (_t==null) _t=ASTNULL; switch ( _t.getType()) { case OPTIONAL: case CLOSURE: case POSITIVE_CLOSURE: case SET: case LABEL: case ACTION: case STRING_LITERAL: case CHAR_LITERAL: case TOKEN_REF: case NOT: case TREE_BEGIN: case RULE_REF: { { int _cnt128=0; _loop128: do { if (_t==null) _t=ASTNULL; if ((_t.getType()==OPTIONAL||_t.getType()==CLOSURE||_t.getType()==POSITIVE_CLOSURE||_t.getType()==SET||_t.getType()==LABEL||_t.getType()==ACTION||_t.getType()==STRING_LITERAL||_t.getType()==CHAR_LITERAL||_t.getType()==TOKEN_REF||_t.getType()==NOT||_t.getType()==TREE_BEGIN||_t.getType()==RULE_REF)) { GrammarAST elAST=(GrammarAST)_t; el=rewrite_element(_t); _t = _retTree; code.setAttribute("elements.{el,line,pos}", el, Utils.integer(elAST.getLine()), Utils.integer(elAST.getColumn()) ); } else { if ( _cnt128>=1 ) { break _loop128; } else {throw new NoViableAltException(_t);} } _cnt128++; } while (true); } break; } case EPSILON: { GrammarAST tmp52_AST_in = (GrammarAST)_t; match(_t,EPSILON); _t = _t.getNextSibling(); code.setAttribute("elements.{el,line,pos}", templates.getInstanceOf("rewriteEmptyAlt"), Utils.integer(a.getLine()), Utils.integer(a.getColumn()) ); break; } default: { throw new NoViableAltException(_t); } } } GrammarAST tmp53_AST_in = (GrammarAST)_t; match(_t,EOA); _t = _t.getNextSibling(); _t = __t125; _t = _t.getNextSibling(); } else if (((_t.getType()==ALT||_t.getType()==TEMPLATE||_t.getType()==ACTION))&&(generator.grammar.buildTemplate())) { code=rewrite_template(_t); _t = _retTree; } else { throw new NoViableAltException(_t); }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -