aboutsummaryrefslogtreecommitdiff
path: root/sys/cmd/cc/lex.c
diff options
context:
space:
mode:
Diffstat (limited to 'sys/cmd/cc/lex.c')
-rw-r--r--sys/cmd/cc/lex.c13
1 files changed, 10 insertions, 3 deletions
diff --git a/sys/cmd/cc/lex.c b/sys/cmd/cc/lex.c
index e35ea7e..a8dabec 100644
--- a/sys/cmd/cc/lex.c
+++ b/sys/cmd/cc/lex.c
@@ -257,7 +257,7 @@ lex(Lexer *lx)
GetByte:
b = getbyte(lx);
Dispatch:
- tok.pos.beg = lx->pos;
+ tok.pos = lx->pos;
if ((b != EOF && b >= RuneSelf) || b == '_')
goto Talpha;
@@ -631,7 +631,9 @@ Dispatch:
n = intern(&tok.val.s);
if (n < arrlen(keywords)) {
- tok.kind = Akeywd;
+ tok.kind = Akeywd;
+ tok.val.i = n;
+ goto Return;
}
sym = lookup(&lx->sym, tok.val.s);
@@ -662,7 +664,6 @@ Dispatch:
Return:
lx->b = lx->buf;
- tok.pos.end = lx->pos;
return tok;
Nospace:
@@ -773,6 +774,12 @@ forget(SymTab *tab, string ident)
return 1;
}
+void
+forgetall(SymTab *tab)
+{
+ MAP_RESET(tab);
+}
+
// -----------------------------------------------------------------------
// error reporting