diff --git a/mmeta/BaseParser.java b/mmeta/BaseParser.java index fb28bfc..dbdbb6e 100644 --- a/mmeta/BaseParser.java +++ b/mmeta/BaseParser.java @@ -691,33 +691,6 @@ public > Token build_token(Enum type, int pos, int start public > Token build_token(Enum type, int pos, int start, int endpos) { return new Token(type, pos, start, endpos); } - - public Object lex() throws RuleFailure { - return _error(""); - } - - public Object _lex(Enum type) throws RuleFailure { - _lex(); - if (cached_token.type == type) { - return cached_token; - } else { - _pos = cached_token.pos; - return _error(type.name().substring(1)); - } - } - - public Token _lex() throws RuleFailure { - if (cached_token.pos != _pos) { - try { - Object t = lex(); - cached_token = (Token)t; - } catch (RuleFailure ex) { - cached_token = new Token(null, _pos, _pos, _pos); - } - } - _pos = cached_token.endpos; - return cached_token; - } public class Token> { public Token(Enum type, int pos, int start, int end) { diff --git a/test/TestParser.mmeta b/test/TestParser.mmeta index 5a1a06b..a52f5c2 100644 --- a/test/TestParser.mmeta +++ b/test/TestParser.mmeta @@ -12,10 +12,17 @@ parser TestParser { @lexer = MirahLexer.new(_string, @chars, self) } - def lex { + def _lex { t = @lexer.lex(_pos) _enter(t.text) _exit(t) + t + } + + def _lex(type:Tokens) { + token = _lex + raise @error unless token.type == type + token } def checkstring(s:String) {