aboutsummaryrefslogtreecommitdiff
path: root/sys/cmd/cc/lex.c
diff options
context:
space:
mode:
authorNicholas Noll <nbnoll@eml.cc>2020-05-21 18:53:23 -0700
committerNicholas Noll <nbnoll@eml.cc>2020-05-21 18:53:23 -0700
commit7d2a1280cd4321d2a3b2fff0b2413085347a7b4d (patch)
tree994c9ebac9c29ff2e5b833ce514d014ca9cdb8b7 /sys/cmd/cc/lex.c
parenta9e3c42ac5696c56adaffbb4007e9d969563337b (diff)
feat: prototype of ast stmt and decl implementations
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