diff options
Diffstat (limited to 'lex.c')
| -rw-r--r-- | lex.c | 21 |
1 files changed, 21 insertions, 0 deletions
@@ -153,6 +153,12 @@ recurse: goto recurse; } + if (str_starts(str_skip(l->buf, i), S("//"))) { + Str f = str_findc(str_skip(l->buf, i), '\n'); + l->ofs = f.s - l->buf.s; + goto recurse; + } + int start_ofs = i; l->ident = (Str) { &l->buf.s[start_ofs], 0 }; l->pos = (LexSpan) { start_ofs, 0 }; @@ -194,6 +200,21 @@ recurse: if (l->buf.s[i++] == '"') break; } break; + case '<': + switch (l->buf.s[i]) { + case '=': T(TOK_LTE); i++; break; + case '>': T(TOK_NEQ); i++; break; + case '<': T(TOK_SHL); i++; break; + default: T(TOK_LES); break; + } + break; + case '>': + switch (l->buf.s[i]) { + case '=': T(TOK_GTE); i++; break; + case '>': T(TOK_SHR); i++; break; + default: T(TOK_GTR); break; + } + break; } } if (l->tok == TOK_MAX) { |
