📄 expressionlexer.java
字号:
// $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 handling
try { // for lexical error handling
switch ( 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)=='<') && (LA(2)=='<')) {
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)=='<') && (LA(2)=='=')) {
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)=='<') && (true)) {
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) {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -