📄 actionlexer.java
字号:
// $ANTLR 2.7.0a12: "action.g" -> "ActionLexer.java"$package antlr.actions.java;import java.io.InputStream;import antlr.TokenStreamException;import antlr.TokenStreamIOException;import antlr.TokenStreamRecognitionException;import antlr.CharStreamException;import antlr.CharStreamIOException;import antlr.ANTLRException;import java.io.Reader;import java.util.Hashtable;import antlr.CharScanner;import antlr.InputBuffer;import antlr.ByteBuffer;import antlr.CharBuffer;import antlr.Token;import antlr.CommonToken;import antlr.RecognitionException;import antlr.NoViableAltForCharException;import antlr.MismatchedCharException;import antlr.TokenStream;import antlr.ANTLRHashString;import antlr.LexerSharedInputState;import antlr.collections.impl.BitSet;import antlr.SemanticException;import java.io.StringReader;import antlr.collections.impl.Vector;import antlr.*;/** Perform the following translations: AST related translations ## -> currentRule_AST #(x,y,z) -> codeGenerator.getASTCreateString(vector-of(x,y,z)) #[x] -> codeGenerator.getASTCreateString(x) #x -> codeGenerator.mapTreeId(x) Inside context of #(...), you can ref (x,y,z), [x], and x as shortcuts. Text related translations $append(x) -> text.append(x) $setText(x) -> text.setLength(_begin); text.append(x) $getText -> new String(text.getBuffer(),_begin,text.length()-_begin) $setToken(x) -> _token = x $setType(x) -> _ttype = x */public class ActionLexer extends antlr.CharScanner implements ActionLexerTokenTypes, TokenStream { protected RuleBlock currentRule; protected CodeGenerator generator; protected int lineOffset = 0; private Tool tool; // The ANTLR tool ActionTransInfo transInfo; public ActionLexer( String s, RuleBlock currentRule, CodeGenerator generator, ActionTransInfo transInfo) { this(new StringReader(s)); this.currentRule = currentRule; this.generator = generator; this.transInfo = transInfo; } public void setLineOffset(int lineOffset) { // this.lineOffset = lineOffset; setLine(lineOffset); } public void setTool(Tool tool) { this.tool = tool; } // Override of error-reporting for syntax public void reportError(RecognitionException e) { System.err.print("Syntax error in action: "); super.reportError(e); }public ActionLexer(InputStream in) { this(new ByteBuffer(in));}public ActionLexer(Reader in) { this(new CharBuffer(in));}public ActionLexer(InputBuffer ib) { this(new LexerSharedInputState(ib));}public ActionLexer(LexerSharedInputState state) { super(state); literals = new Hashtable();caseSensitiveLiterals = true;setCaseSensitive(true);}public Token nextToken() throws TokenStreamException { Token theRetToken=null;tryAgain: for (;;) { Token _token = null; int _ttype = Token.INVALID_TYPE; resetText(); try { // for char stream error handling try { // for lexical error handling if (((LA(1) >= '\3' && LA(1) <= '~'))) { mACTION(true); theRetToken=_returnToken; } else { if (LA(1)==EOF_CHAR) {uponEOF(); _returnToken = makeToken(Token.EOF_TYPE);} else {throw new NoViableAltForCharException((char)LA(1), getFilename(), getLine());} } if ( _returnToken==null ) continue tryAgain; // found SKIP token _ttype = _returnToken.getType(); _returnToken.setType(_ttype); return _returnToken; } catch (RecognitionException e) { throw new TokenStreamRecognitionException(e); } } catch (CharStreamException cse) { if ( cse instanceof CharStreamIOException ) { throw new TokenStreamIOException(((CharStreamIOException)cse).io); } else { throw new TokenStreamException(cse.getMessage()); } } }} public final void mACTION(boolean _createToken) throws RecognitionException, CharStreamException, TokenStreamException { int _ttype; Token _token=null; int _begin=text.length(); _ttype = ACTION; int _saveIndex; { int _cnt3=0; _loop3: do { switch ( LA(1)) { case '\3': case '\4': case '\5': case '\6': case '\7': case '\10': case '\t': case '\n': case '\13': case '\14': case '\r': case '\16': case '\17': case '\20': case '\21': case '\22': case '\23': case '\24': case '\25': case '\26': case '\27': case '\30': case '\31': case '\32': case '\33': case '\34': case '\35': case '\36': case '\37': case ' ': case '!': case '"': case '%': case '&': case '\'': case '(': case ')': case '*': case '+': case ',': case '-': case '.': case '/': case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case ':': case ';': case '<': case '=': case '>': case '?': case '@': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case '[': case '\\': case ']': case '^': case '_': case '`': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': case '{': case '|': case '}': case '~': { mSTUFF(false); break; } case '#': { mAST_ITEM(false); break; } case '$': { mTEXT_ITEM(false); break; } default: { if ( _cnt3>=1 ) { break _loop3; } else {throw new NoViableAltForCharException((char)LA(1), getFilename(), getLine());} } } _cnt3++; } while (true); } if ( _createToken && _token==null && _ttype!=Token.SKIP ) { _token = makeToken(_ttype); _token.setText(new String(text.getBuffer(), _begin, text.length()-_begin)); } _returnToken = _token; } protected final void mSTUFF(boolean _createToken) throws RecognitionException, CharStreamException, TokenStreamException { int _ttype; Token _token=null; int _begin=text.length(); _ttype = STUFF; int _saveIndex; switch ( LA(1)) { case '"': { mSTRING(false); break; } case '\'': { mCHAR(false); break; } case '\n': { match('\n'); newline(); break; } case '\3': case '\4': case '\5': case '\6': case '\7': case '\10': case '\t': case '\13': case '\14': case '\16': case '\17': case '\20': case '\21': case '\22': case '\23': case '\24': case '\25': case '\26': case '\27': case '\30': case '\31': case '\32': case '\33': case '\34': case '\35': case '\36': case '\37': case ' ': case '!': case '%': case '&': case '(': case ')': case '*': case '+': case ',': case '-': case '.': case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case ':': case ';': case '<': case '=': case '>': case '?': case '@': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case '[': case '\\': case ']': case '^': case '_': case '`': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': case '{': case '|': case '}': case '~': { { match(_tokenSet_0); } break; } default: if ((LA(1)=='/') && (LA(2)=='*'||LA(2)=='/')) { mCOMMENT(false); } else if ((LA(1)=='\r') && (LA(2)=='\n')) { match("\r\n"); newline(); } else if ((LA(1)=='/') && (_tokenSet_1.member(LA(2)))) { match('/'); { match(_tokenSet_1); } } else if ((LA(1)=='\r') && (true)) { match('\r'); newline(); } else { throw new NoViableAltForCharException((char)LA(1), getFilename(), getLine()); } } if ( _createToken && _token==null && _ttype!=Token.SKIP ) { _token = makeToken(_ttype); _token.setText(new String(text.getBuffer(), _begin, text.length()-_begin)); } _returnToken = _token; } protected final void mAST_ITEM(boolean _createToken) throws RecognitionException, CharStreamException, TokenStreamException { int _ttype; Token _token=null; int _begin=text.length(); _ttype = AST_ITEM; int _saveIndex; Token t=null; Token id=null; Token ctor=null; if ((LA(1)=='#') && (LA(2)=='(')) { _saveIndex=text.length(); match('#'); text.setLength(_saveIndex); mTREE(true); t=_returnToken; } else if ((LA(1)=='#') && (_tokenSet_2.member(LA(2)))) { _saveIndex=text.length(); match('#'); text.setLength(_saveIndex); mID(true); id=_returnToken; String idt = id.getText(); text.setLength(_begin); text.append(generator.mapTreeId(idt,transInfo)); { if ((_tokenSet_3.member(LA(1))) && (true)) { mWS(false); } else { } } { if ((LA(1)=='=') && (true)) { mVAR_ASSIGN(false); } else { } } } else if ((LA(1)=='#') && (LA(2)=='[')) { _saveIndex=text.length(); match('#'); text.setLength(_saveIndex); mAST_CONSTRUCTOR(true); ctor=_returnToken; } else if ((LA(1)=='#') && (LA(2)=='#')) { match("##"); String r=currentRule.getRuleName()+"_AST"; text.setLength(_begin); text.append(r); if ( transInfo!=null ) { transInfo.refRuleRoot=r; // we ref root of tree } { if ((_tokenSet_3.member(LA(1))) && (true)) { mWS(false); } else { } } { if ((LA(1)=='=') && (true)) { mVAR_ASSIGN(false); } else { } } } else { throw new NoViableAltForCharException((char)LA(1), getFilename(), getLine()); } if ( _createToken && _token==null && _ttype!=Token.SKIP ) { _token = makeToken(_ttype); _token.setText(new String(text.getBuffer(), _begin, text.length()-_begin)); } _returnToken = _token; } protected final void mTEXT_ITEM(boolean _createToken) throws RecognitionException, CharStreamException, TokenStreamException { int _ttype; Token _token=null; int _begin=text.length(); _ttype = TEXT_ITEM; int _saveIndex; Token a1=null; Token a2=null; Token a3=null; Token a4=null; if ((LA(1)=='$') && (LA(2)=='a')) { match("$append("); mTEXT_ARG(true); a1=_returnToken; match(')'); String t = "text.append("+a1.getText()+")"; text.setLength(_begin); text.append(t); } else if ((LA(1)=='$') && (LA(2)=='s')) { match("$set"); { if ((LA(1)=='T') && (LA(2)=='e')) { match("Text("); mTEXT_ARG(true); a2=_returnToken; match(')'); String t; if (generator instanceof CppCodeGenerator) { t="text.erase(_begin); text.append("+a2.getText()+")"; } else { t="text.setLength(_begin); text.append("+a2.getText()+")"; } text.setLength(_begin); text.append(t); } else if ((LA(1)=='T') && (LA(2)=='o')) { match("Token("); mTEXT_ARG(true); a3=_returnToken; match(')'); String t="_token = "+a3.getText(); text.setLength(_begin); text.append(t); } else if ((LA(1)=='T') && (LA(2)=='y')) { match("Type("); mTEXT_ARG(true); a4=_returnToken; match(')'); String t="_ttype = "+a4.getText(); text.setLength(_begin); text.append(t); } else { throw new NoViableAltForCharException((char)LA(1), getFilename(), getLine()); } } } else if ((LA(1)=='$') && (LA(2)=='g')) { match("$getText"); if (generator instanceof CppCodeGenerator) { text.setLength(_begin); text.append("text.substr(_begin,text.length()-_begin)"); } else { text.setLength(_begin); text.append("new String(text.getBuffer(),_begin,text.length()-_begin)"); } } else { throw new NoViableAltForCharException((char)LA(1), getFilename(), getLine()); } if ( _createToken && _token==null && _ttype!=Token.SKIP ) { _token = makeToken(_ttype); _token.setText(new String(text.getBuffer(), _begin, text.length()-_begin)); } _returnToken = _token; } protected final void mCOMMENT(boolean _createToken) throws RecognitionException, CharStreamException, TokenStreamException { int _ttype; Token _token=null; int _begin=text.length(); _ttype = COMMENT; int _saveIndex; if ((LA(1)=='/') && (LA(2)=='/')) { mSL_COMMENT(false); } else if ((LA(1)=='/') && (LA(2)=='*')) { mML_COMMENT(false); } else { throw new NoViableAltForCharException((char)LA(1), getFilename(), getLine()); } if ( _createToken && _token==null && _ttype!=Token.SKIP ) { _token = makeToken(_ttype); _token.setText(new String(text.getBuffer(), _begin, text.length()-_begin)); } _returnToken = _token; } protected final void mSTRING(boolean _createToken) throws RecognitionException, CharStreamException, TokenStreamException { int _ttype; Token _token=null; int _begin=text.length(); _ttype = STRING; int _saveIndex; match('"'); { _loop87: do { switch ( LA(1)) { case '\\': { mESC(false); break; } case '\3': case '\4': case '\5': case '\6': case '\7': case '\10': case '\t': case '\n': case '\13': case '\14': case '\r': case '\16': case '\17': case '\20': case '\21': case '\22': case '\23': case '\24': case '\25': case '\26': case '\27': case '\30': case '\31': case '\32': case '\33': case '\34': case '\35': case '\36': case '\37': case ' ': case '!': case '#': case '$': case '%': case '&': case '\'': case '(': case ')': case '*': case '+': case ',': case '-': case '.': case '/': case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case ':': case ';': case '<': case '=': case '>': case '?': case '@': case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case '[': case ']': case '^': case '_': case '`': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': case '{': case '|': case '}': case '~': { matchNot('"'); break; } default: { break _loop87; } } } while (true); } match('"'); if ( _createToken && _token==null && _ttype!=Token.SKIP ) { _token = makeToken(_ttype); _token.setText(new String(text.getBuffer(), _begin, text.length()-_begin)); } _returnToken = _token; } protected final void mCHAR(boolean _createToken) throws RecognitionException, CharStreamException, TokenStreamException { int _ttype; Token _token=null; int _begin=text.length(); _ttype = CHAR; int _saveIndex; match('\''); { switch ( LA(1)) { case '\\': { mESC(false);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -