# HG changeset patch # User aziz # Date 1185274564 0 # Node ID c9b9c979a6206f8d23f9fe8383a86d021b3cf960 # Parent d64413278bec8a5f7171e24a8088495f9cbdc265 - Fix: checking for _Z_. - Pointer p is not advanced anymore when returning TOK.EOF. - Simplified constructor of State and added member fileName to it. diff -r d64413278bec -r c9b9c979a620 trunk/src/Lexer.d --- a/trunk/src/Lexer.d Sun Jul 22 17:26:03 2007 +0000 +++ b/trunk/src/Lexer.d Tue Jul 24 10:56:04 2007 +0000 @@ -74,13 +74,12 @@ { t.start = p; - if (c == 0) + if (c == 0 || c == _Z_) { - assert(*p == 0); - ++p; - assert(p == end); + assert(*p == 0 || *p == _Z_); t.type = TOK.EOF; t.end = p; + assert(t.start == t.end); return; } @@ -1441,15 +1440,17 @@ Token token; char* scanPointer; int loc; + string fileName; size_t errorLen; - static State opCall(Lexer lexer, Token token, char* p, int loc, size_t len) + static State opCall(Lexer lx) { State s; - s.lexer = lexer; - s.token = token; - s.loc = loc; - s.scanPointer = p; - s.errorLen = len; + s.lexer = lx; + s.token = lx.token; + s.scanPointer = lx.p; + s.loc = lx.loc; + s.fileName = lx.fileName; + s.errorLen = lx.errors.length; return s; } void restore() @@ -1457,13 +1458,14 @@ lexer.p = scanPointer; lexer.token = token; lexer.loc = loc; + lexer.fileName = fileName; lexer.errors = lexer.errors[0..errorLen]; } } State getState() { - return State(this, token, p, loc, errors.length); + return State(this); } void peek(ref Token t)