summaryrefslogtreecommitdiff
path: root/lex.h
diff options
context:
space:
mode:
Diffstat (limited to 'lex.h')
-rw-r--r--lex.h34
1 files changed, 34 insertions, 0 deletions
diff --git a/lex.h b/lex.h
new file mode 100644
index 0000000..6e836ac
--- /dev/null
+++ b/lex.h
@@ -0,0 +1,34 @@
+#ifndef LEX_H
+#define LEX_H
+
+#include <stddef.h>
+#include <stdio.h>
+
+enum tktype {UNDEF, ID, LIT, NUM, ANY};
+
+struct loc
+{
+ const char *f;
+ int line, col;
+};
+
+struct tk
+{
+ enum tktype type;
+ struct loc loc;
+ char *s;
+};
+
+struct lex
+{
+ struct loc loc;
+ struct tk *tokens, tk;
+ size_t ntok, len;
+ int comment;
+};
+
+int lex(struct lex *lex, FILE *f);
+int lex_eof(const struct lex *lex, const struct tk *tk);
+void lex_free(struct lex *lex);
+
+#endif