⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 codegentreewalker.java

📁 ANTLR(ANother Tool for Language Recognition)它是这样的一种工具
💻 JAVA
📖 第 1 页 / 共 5 页
字号:
							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 + -