From 043a96a6b7cf55f7ef58fb5ebf8ad87b7d50b571 Mon Sep 17 00:00:00 2001 From: Bad Diode Date: Mon, 18 Oct 2021 12:31:20 +0200 Subject: Add header files for all modules --- src/bootstrap/parser.h | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 src/bootstrap/parser.h (limited to 'src/bootstrap/parser.h') diff --git a/src/bootstrap/parser.h b/src/bootstrap/parser.h new file mode 100644 index 0000000..3bd17ef --- /dev/null +++ b/src/bootstrap/parser.h @@ -0,0 +1,22 @@ +#ifndef BDL_PARSER_H +#define BDL_PARSER_H + +typedef struct Visitor { + Tokens tokens; + size_t current; +} Visitor; + +// Mimics the functionality in the Scanner functions, but for entire tokens. +Token next_token(Visitor *visitor); +Token peek_token(const Visitor *visitor); +bool has_next_token(const Visitor *visitor); + +// Parse a token into a fixnum object. +Object * parse_fixnum(Token tok); + +// Recursive descent parser. If an object is not a list the parsing is handled +// by the parse_tree function. +Object * parse_list(Visitor *vs); +Object * parse_tree(Visitor *vs); + +#endif // BDL_PARSER_H -- cgit v1.2.1