Mercurial > projects > dil
changeset 212:c9b9c979a620
- Fix: checking for _Z_.
- Pointer p is not advanced anymore when returning TOK.EOF.
- Simplified constructor of State and added member fileName to it.
author | aziz |
---|---|
date | Tue, 24 Jul 2007 10:56:04 +0000 |
parents | d64413278bec |
children | b0ebde88d2d4 |
files | trunk/src/Lexer.d |
diffstat | 1 files changed, 13 insertions(+), 11 deletions(-) [+] |
line wrap: on
line diff
--- 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)