diff --git a/src/main/java/org/sablecc/sablecc/lexer/Lexer.java b/src/main/java/org/sablecc/sablecc/lexer/Lexer.java index 2e4873e3279cb57f0aca6ef7ab3ec5cdb180b587..32c197b53ddebddf646664391533771079f76fbc 100644 --- a/src/main/java/org/sablecc/sablecc/lexer/Lexer.java +++ b/src/main/java/org/sablecc/sablecc/lexer/Lexer.java @@ -170,202 +170,198 @@ public class Lexer } else { - if(acceptToken != -1) + Token tok; + switch(acceptToken) { - Token tok; - switch(acceptToken) - { - case 0: - tok = new TPkgId(getText(acceptLength), startLine + 1, startPos + 1); - switch(state.ordinal()) - { - case 1: state = State.PACKAGE; break; - } - break; + case -1: + if(this.text.length() > 0) + { + throw new LexerException("[" + (startLine + 1) + "," + (startPos + 1) + "] Unknown token: " + this.text); + } - case 1: - tok = new TPackage(startLine + 1, startPos + 1); - switch(state.ordinal()) - { - case 0: state = State.PACKAGE; break; - } - break; + return new EOF(startLine + 1, startPos + 1); - case 2: - tok = new TStates(startLine + 1, startPos + 1); - break; + case 0: + tok = new TPkgId(getText(acceptLength), startLine + 1, startPos + 1); + switch(state.ordinal()) + { + case 1: state = State.PACKAGE; break; + } + break; - case 3: - tok = new THelpers(startLine + 1, startPos + 1); - break; + case 1: + tok = new TPackage(startLine + 1, startPos + 1); + switch(state.ordinal()) + { + case 0: state = State.PACKAGE; break; + } + break; - case 4: - tok = new TTokens(startLine + 1, startPos + 1); - break; + case 2: + tok = new TStates(startLine + 1, startPos + 1); + break; - case 5: - tok = new TIgnored(startLine + 1, startPos + 1); - break; + case 3: + tok = new THelpers(startLine + 1, startPos + 1); + break; - case 6: - tok = new TProductions(startLine + 1, startPos + 1); - break; + case 4: + tok = new TTokens(startLine + 1, startPos + 1); + break; - case 7: - tok = new TAbstract(startLine + 1, startPos + 1); - break; + case 5: + tok = new TIgnored(startLine + 1, startPos + 1); + break; - case 8: - tok = new TSyntax(startLine + 1, startPos + 1); - break; + case 6: + tok = new TProductions(startLine + 1, startPos + 1); + break; - case 9: - tok = new TTree(startLine + 1, startPos + 1); - break; + case 7: + tok = new TAbstract(startLine + 1, startPos + 1); + break; - case 10: - tok = new TNew(startLine + 1, startPos + 1); - break; + case 8: + tok = new TSyntax(startLine + 1, startPos + 1); + break; - case 11: - tok = new TNull(startLine + 1, startPos + 1); - break; + case 9: + tok = new TTree(startLine + 1, startPos + 1); + break; - case 12: - tok = new TTokenSpecifier(startLine + 1, startPos + 1); - break; + case 10: + tok = new TNew(startLine + 1, startPos + 1); + break; - case 13: - tok = new TProductionSpecifier(startLine + 1, startPos + 1); - break; + case 11: + tok = new TNull(startLine + 1, startPos + 1); + break; - case 14: - tok = new TDot(startLine + 1, startPos + 1); - break; + case 12: + tok = new TTokenSpecifier(startLine + 1, startPos + 1); + break; - case 15: - tok = new TDDot(startLine + 1, startPos + 1); - break; + case 13: + tok = new TProductionSpecifier(startLine + 1, startPos + 1); + break; - case 16: - tok = new TSemicolon(startLine + 1, startPos + 1); - switch(state.ordinal()) - { - case 0: state = State.NORMAL; break; - case 1: state = State.NORMAL; break; - } - break; + case 14: + tok = new TDot(startLine + 1, startPos + 1); + break; - case 17: - tok = new TEqual(startLine + 1, startPos + 1); - break; + case 15: + tok = new TDDot(startLine + 1, startPos + 1); + break; - case 18: - tok = new TLBkt(startLine + 1, startPos + 1); - break; + case 16: + tok = new TSemicolon(startLine + 1, startPos + 1); + switch(state.ordinal()) + { + case 0: state = State.NORMAL; break; + case 1: state = State.NORMAL; break; + } + break; - case 19: - tok = new TRBkt(startLine + 1, startPos + 1); - break; + case 17: + tok = new TEqual(startLine + 1, startPos + 1); + break; - case 20: - tok = new TLPar(startLine + 1, startPos + 1); - break; + case 18: + tok = new TLBkt(startLine + 1, startPos + 1); + break; - case 21: - tok = new TRPar(startLine + 1, startPos + 1); - break; + case 19: + tok = new TRBkt(startLine + 1, startPos + 1); + break; - case 22: - tok = new TLBrace(startLine + 1, startPos + 1); - break; + case 20: + tok = new TLPar(startLine + 1, startPos + 1); + break; - case 23: - tok = new TRBrace(startLine + 1, startPos + 1); - break; + case 21: + tok = new TRPar(startLine + 1, startPos + 1); + break; - case 24: - tok = new TPlus(startLine + 1, startPos + 1); - break; + case 22: + tok = new TLBrace(startLine + 1, startPos + 1); + break; - case 25: - tok = new TMinus(startLine + 1, startPos + 1); - break; + case 23: + tok = new TRBrace(startLine + 1, startPos + 1); + break; - case 26: - tok = new TQMark(startLine + 1, startPos + 1); - break; + case 24: + tok = new TPlus(startLine + 1, startPos + 1); + break; - case 27: - tok = new TStar(startLine + 1, startPos + 1); - break; + case 25: + tok = new TMinus(startLine + 1, startPos + 1); + break; - case 28: - tok = new TBar(startLine + 1, startPos + 1); - break; + case 26: + tok = new TQMark(startLine + 1, startPos + 1); + break; - case 29: - tok = new TComma(startLine + 1, startPos + 1); - break; + case 27: + tok = new TStar(startLine + 1, startPos + 1); + break; - case 30: - tok = new TSlash(startLine + 1, startPos + 1); - break; + case 28: + tok = new TBar(startLine + 1, startPos + 1); + break; - case 31: - tok = new TArrow(startLine + 1, startPos + 1); - break; + case 29: + tok = new TComma(startLine + 1, startPos + 1); + break; - case 32: - tok = new TColon(startLine + 1, startPos + 1); - break; + case 30: + tok = new TSlash(startLine + 1, startPos + 1); + break; - case 33: - tok = new TId(getText(acceptLength), startLine + 1, startPos + 1); - break; + case 31: + tok = new TArrow(startLine + 1, startPos + 1); + break; - case 34: - tok = new TChar(getText(acceptLength), startLine + 1, startPos + 1); - break; + case 32: + tok = new TColon(startLine + 1, startPos + 1); + break; - case 35: - tok = new TDecChar(getText(acceptLength), startLine + 1, startPos + 1); - break; + case 33: + tok = new TId(getText(acceptLength), startLine + 1, startPos + 1); + break; - case 36: - tok = new THexChar(getText(acceptLength), startLine + 1, startPos + 1); - break; + case 34: + tok = new TChar(getText(acceptLength), startLine + 1, startPos + 1); + break; - case 37: - tok = new TString(getText(acceptLength), startLine + 1, startPos + 1); - break; + case 35: + tok = new TDecChar(getText(acceptLength), startLine + 1, startPos + 1); + break; - case 38: - tok = new TBlank(getText(acceptLength), startLine + 1, startPos + 1); - break; + case 36: + tok = new THexChar(getText(acceptLength), startLine + 1, startPos + 1); + break; - case 39: - tok = new TComment(getText(acceptLength), startLine + 1, startPos + 1); - break; + case 37: + tok = new TString(getText(acceptLength), startLine + 1, startPos + 1); + break; - default: - throw new LexerException("[" + (startLine + 1) + "," + (startPos + 1) + "] Internal lexer error: invalid accept table entry " + acceptToken + ", current text: " + this.text); - } - pushBack(acceptLength); - this.pos = acceptPos; - this.line = acceptLine; - this.cr = acceptCr; - return tok; - } - else - { - if(this.text.length() > 0) - { - throw new LexerException("[" + (startLine + 1) + "," + (startPos + 1) + "] Unknown token: " + this.text); - } + case 38: + tok = new TBlank(getText(acceptLength), startLine + 1, startPos + 1); + break; - return new EOF(startLine + 1, startPos + 1); + case 39: + tok = new TComment(getText(acceptLength), startLine + 1, startPos + 1); + break; + + default: + throw new LexerException("[" + (startLine + 1) + "," + (startPos + 1) + "] Internal lexer error: invalid accept table entry " + acceptToken + ", current text: " + this.text); } + pushBack(acceptLength); + this.pos = acceptPos; + this.line = acceptLine; + this.cr = acceptCr; + return tok; } } } diff --git a/src/main/resources/org/sablecc/sablecc/lexer.txt b/src/main/resources/org/sablecc/sablecc/lexer.txt index 4e552fa254acee1eb97732fd5212a15501dcea7a..d070d6e7502f9dd8496892798ce59bfeecc82f75 100644 --- a/src/main/resources/org/sablecc/sablecc/lexer.txt +++ b/src/main/resources/org/sablecc/sablecc/lexer.txt @@ -194,67 +194,63 @@ public class Lexer } else { - if(acceptToken != -1) + Token tok; + switch(acceptToken) { - Token tok; - switch(acceptToken) - { + case -1: + if(this.text.length() > 0) + { + throw new LexerException("[" + (startLine + 1) + "," + (startPos + 1) + "] Unknown token: " + this.text); + } + + return new EOF(startLine + 1, startPos + 1); + $ Macro:LexerVariableToken - case $0$: - tok = new $1$(getText(acceptLength), startLine + 1, startPos + 1); + case $0$: + tok = new $1$(getText(acceptLength), startLine + 1, startPos + 1); $ Macro:LexerFixedToken - case $0$: - tok = new $1$(startLine + 1, startPos + 1); + case $0$: + tok = new $1$(startLine + 1, startPos + 1); $ Macro:TokenSwitchHeader - switch(state.ordinal()) - { + switch(state.ordinal()) + { $ Macro:TokenCase - case $0$: state = State.$1$; break; + case $0$: state = State.$1$; break; $ Macro:TokenSwitchTail - } + } $ Macro:LexerTokenTail - break; + break; $ Macro:LexerBody - default: - throw new LexerException("[" + (startLine + 1) + "," + (startPos + 1) + "] Internal lexer error: invalid accept table entry " + acceptToken + ", current text: " + this.text); - } - pushBack(acceptLength); - this.pos = acceptPos; - this.line = acceptLine; - this.cr = acceptCr; - return tok; - } - else - { - if(this.text.length() > 0) - { - throw new LexerException("[" + (startLine + 1) + "," + (startPos + 1) + "] Unknown token: " + this.text); - } - - return new EOF(startLine + 1, startPos + 1); + default: + throw new LexerException("[" + (startLine + 1) + "," + (startPos + 1) + "] Internal lexer error: invalid accept table entry " + acceptToken + ", current text: " + this.text); } + pushBack(acceptLength); + this.pos = acceptPos; + this.line = acceptLine; + this.cr = acceptCr; + return tok; } } }