# HG changeset patch # User aziz # Date 1185043921 0 # Node ID 921d15b1beeb74344378f031d69aa99715a78849 # Parent 0a9bccf740461eb55abbef45f82c3cd211ad75e4 - Added members token and loc to State. - Saving loc in peek(). diff -r 0a9bccf74046 -r 921d15b1beeb trunk/src/Lexer.d --- 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; }