lex java_expressionlexer.java 源代码在线查看 - 外国人写的c#语法解析器 资源下载 虫虫电子下载站...

// $ANTLR 2.7.4: "Expression parser.g" -> "ExpressionLexer.java"$/** * Soft Gems Resource parser. Created by Mike Lischke. * * The source code in this file can freely be used for any purpose provided this notice remains * unchanged in the file. * * Copyright 2004 by Mike Lischke, www.soft-gems.net, public@soft-gems.net. All rights reserved. */package net.softgems.resourceparser.expressions;import java.io.StringReader;import java.util.ArrayList;import antlr.collections.AST;import net.softgems.resourceparser.main.IParseEventListener;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;public class ExpressionLexer extends antlr.CharScanner implements ExpressionLexerTokenTypes, TokenStream { /** List of event listeners who want to get notified about an lexer event. */ private ArrayList listeners = new ArrayList(); boolean hadErrors; boolean hadWarnings; //------------------------------------------------------------------------------------------------ public void addLexerEventListener(IParseEventListener listener) { listeners.add(listener); } //------------------------------------------------------------------------------------------------ public void removeLexerEventListener(IParseEventListener listener) { listeners.remove(listener); } //------------------------------------------------------------------------------------------------ public void newline() { super.newline(); doEvent(IParseEventListener.NEW_LINE, null); } //------------------------------------------------------------------------------------------------ public void panic() { hadErrors = true; doEvent(IParseEventListener.PANIC, "RC lexer panic"); } //------------------------------------------------------------------------------------------------ /** * This method is executed by ANTLR internally when it detected an illegal * state that cannot be recovered from. */ public void panic(String s) { hadErrors = true; doEvent(IParseEventListener.PANIC, "RC lexer panic: " + s); } //------------------------------------------------------------------------------------------------ public void reportError(RecognitionException ex) { hadErrors = true; doEvent(IParseEventListener.ERROR, ex.toString()); } //------------------------------------------------------------------------------------------------ public void reportError(String s) { hadErrors = true; if (getFilename() == null) { doEvent(IParseEventListener.ERROR, s); } else { doEvent(IParseEventListener.ERROR, getFilename() + ": " + s); } } //------------------------------------------------------------------------------------------------ public void reportWarning(String s) { hadWarnings = true; if (getFilename() == null) { doEvent(IParseEventListener.WARNING, s); } else { doEvent(IParseEventListener.WARNING, getFilename() + ": " + s); } } //------------------------------------------------------------------------------------------------ private void doEvent(int event, String message) { for (int i = 0; i < listeners.size(); i++) { IParseEventListener listener = (IParseEventListener)listeners.get(i); listener.handleEvent(event, message); } } //------------------------------------------------------------------------------------------------ public boolean hadErrors() { return hadErrors; } //------------------------------------------------------------------------------------------------ public boolean hadWarnings() { return hadWarnings; } //------------------------------------------------------------------------------------------------ public ExpressionLexer(InputStream in) {this(new ByteBuffer(in));}public ExpressionLexer(Reader in) {this(new CharBuffer(in));}public ExpressionLexer(InputBuffer ib) {this(new LexerSharedInputState(ib));}public ExpressionLexer(LexerSharedInputState state) {super(state);caseSensitiveLiterals = false;setCaseSensitive(false);literals = new Hashtable();literals.put(new ANTLRHashString("false", this), new Integer(80));literals.put(new ANTLRHashString("true", this), new Integer(79));literals.put(new ANTLRHashString("not", this), new Integer(78));}public Token nextToken() throws TokenStreamException {Token theRetToken=null;tryAgain:for (;;) {Token _token = null;int _ttype = Token.INVALID_TYPE;resetText();try { // for char stream error handlingtry { // for lexical error handlingswitch ( LA(1)) {case '(':{mLEFT_PARENTHESE(true);theRetToken=_returnToken;break;}case ')':{mRIGHT_PARENTHESE(true);theRetToken=_returnToken;break;}case '{':{mLEFT_BRACE(true);theRetToken=_returnToken;break;}case '}':{mRIGHT_BRACE(true);theRetToken=_returnToken;break;}case '[':{mLEFT_BRACKET(true);theRetToken=_returnToken;break;}case ']':{mRIGHT_BRACKET(true);theRetToken=_returnToken;break;}case ';':{mSEMICOLON(true);theRetToken=_returnToken;break;}case ',':{mCOMMA(true);theRetToken=_returnToken;break;}case ':':{mCOLON(true);theRetToken=_returnToken;break;}case '~':{mBITWISE_NOT(true);theRetToken=_returnToken;break;}case '^':{mBITWISE_XOR(true);theRetToken=_returnToken;break;}case '*':{mSTAR(true);theRetToken=_returnToken;break;}case '/':{mDIV(true);theRetToken=_returnToken;break;}case '%':{mMOD(true);theRetToken=_returnToken;break;}case '\t': case ' ':{mWHITE_SPACE(true);theRetToken=_returnToken;break;}case '"':{mSTRING_LITERAL(true);theRetToken=_returnToken;break;}case '.': case '0': case '1': case '2':case '3': case '4': case '5': case '6':case '7': case '8': case '9':{mNUMERAL(true);theRetToken=_returnToken;break;}default:if ((LA(1)=='&') && (LA(2)=='&')) {mLOGICAL_AND(true);theRetToken=_returnToken;}else if ((LA(1)=='|') && (LA(2)=='|')) {mLOGICAL_OR(true);theRetToken=_returnToken;}else if ((LA(1)=='mSHIFT_LEFT(true);theRetToken=_returnToken;}else if ((LA(1)=='>') && (LA(2)=='>')) {mSHIFT_RIGHT(true);theRetToken=_returnToken;}else if ((LA(1)=='=') && (LA(2)=='=')) {mEQUAL(true);theRetToken=_returnToken;}else if ((LA(1)=='!') && (LA(2)=='=')) {mUNEQUAL(true);theRetToken=_returnToken;}else if ((LA(1)=='mLESS_THAN_EQUAL(true);theRetToken=_returnToken;}else if ((LA(1)=='>') && (LA(2)=='=')) {mGREATER_THAN_EQUAL(true);theRetToken=_returnToken;}else if ((LA(1)=='+') && (LA(2)=='+')) {mINC(true);theRetToken=_returnToken;}else if ((LA(1)=='-') && (LA(2)=='-')) {mDEC(true);theRetToken=_returnToken;}else if ((LA(1)=='\'') && (_tokenSet_0.member(LA(2)))) {mCHARACTER_LITERAL(true);theRetToken=_returnToken;}else if ((LA(1)=='\'') && (true)) {mAPOSTROPHE(true);theRetToken=_returnToken;}else if ((LA(1)=='&') && (true)) {mBITWISE_AND(true);theRetToken=_returnToken;}else if ((LA(1)=='|') && (true)) {mBITWISE_OR(true);theRetToken=_returnToken;}else if ((LA(1)=='!') && (true)) {mLOGICAL_NOT(true);theRetToken=_returnToken;}else if ((LA(1)=='+') && (true)) {mPLUS(true);theRetToken=_returnToken;}else if ((LA(1)=='-') && (true)) {mMINUS(true);theRetToken=_returnToken;}else if ((LA(1)=='mLESS_THAN(true);theRetToken=_returnToken;}else if ((LA(1)=='>') && (true)) {mGREATER_THAN(true);theRetToken=_returnToken;}else if ((LA(1)=='=') && (true)) {mASSIGN(true);theRetToken=_returnToken;}else if ((_tokenSet_1.member(LA(1)))) {mIDENTIFIER(true);theRetToken=_returnToken;}else {if (LA(1)==EOF_CHAR) {uponEOF(); _returnToken = makeToken(Token.EOF_TYPE);}else {throw new NoViableAltForCharException((char)LA(1), getFilename(), getLine(), getColumn());}}}if ( _returnToken==null ) continue tryAgain; // found SKIP token_ttype = _returnToken.getType();_ttype = testLiteralsTable(_ttype);_returnToken.setType(_ttype);return _returnToken;}catch (RecognitionException e) {

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值