From c2c4bc697c8b53a582a0e577b2187a07a67c2432 Mon Sep 17 00:00:00 2001 From: megacz Date: Fri, 30 Jan 2004 06:59:42 +0000 Subject: [PATCH] 2003/05/02 13:30:51 darcs-hash:20040130065942-2ba56-090b97b8a606c0800c145fdb032db57d98de01cb.gz --- src/org/xwt/js/Lexer.java | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/src/org/xwt/js/Lexer.java b/src/org/xwt/js/Lexer.java index 93586ed..92cb4a6 100644 --- a/src/org/xwt/js/Lexer.java +++ b/src/org/xwt/js/Lexer.java @@ -33,13 +33,15 @@ class Lexer { private SmartReader in; private boolean pushedBack = false; - private int op; + public int op; + public int twoBack; public Number number; public String string; public Lexer(Reader r) throws IOException { in = new SmartReader(r); } public int peekToken() throws IOException { int ret = getToken(); pushBackToken(); return ret; } - public void pushBackToken() { if (pushedBack) throw new Error("can't push back twice"); pushedBack = true; } + public void pushBackToken() { pushBackToken(op); } + public void pushBackToken(int i) { if (pushedBack) throw new Error("can't push back twice"); pushedBack = true; op = i; } // Token Constants ////////////////////////////////////////////////////////// @@ -373,7 +375,12 @@ class Lexer { public int getToken() throws IOException { if (pushedBack) { pushedBack = false; return op; } - return (op = _getToken()); + do { + if (op != EOL) twoBack = op; + op = _getToken(); + } while (op == EOL); // FIXME + //if (op == SEMI) throw new Error(); + return op; } public int _getToken() throws IOException { -- 1.7.10.4