Mercurial > projects > dil
changeset 209:921d15b1beeb
- Added members token and loc to State.
- Saving loc in peek().
author | aziz |
---|---|
date | Sat, 21 Jul 2007 18:52:01 +0000 |
parents | 0a9bccf74046 |
children | b7bde6583d3e |
files | trunk/src/Lexer.d |
diffstat | 1 files changed, 10 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/trunk/src/Lexer.d Sat Jul 21 15:43:04 2007 +0000 +++ b/trunk/src/Lexer.d Sat Jul 21 18:52:01 2007 +0000 @@ -1438,12 +1438,16 @@ struct State { Lexer lexer; + Token token; char* scanPointer; + int loc; size_t errorLen; - static State opCall(Lexer lexer, char* p, size_t len) + static State opCall(Lexer lexer, Token token, char* p, int loc, size_t len) { State s; s.lexer = lexer; + s.token = token; + s.loc = loc; s.scanPointer = p; s.errorLen = len; return s; @@ -1451,13 +1455,15 @@ void restore() { lexer.p = scanPointer; + lexer.token = token; + lexer.loc = loc; lexer.errors = lexer.errors[0..errorLen]; } } State getState() { - return State(this, p, errors.length); + return State(this, token, p, loc, errors.length); } void peek(ref Token t) @@ -1467,6 +1473,7 @@ // so as to avoid getting the same error more than once. reportErrors = false; char* save = p; + auto saveLoc = loc; if (t.end !is null) // For successive peeks. { p = t.end; @@ -1474,6 +1481,7 @@ } scan(t); p = save; + loc = saveLoc; reportErrors = true; }