From bcac686c1bf6a5c1dec2324269e2766babdc0fde Mon Sep 17 00:00:00 2001 From: kartofen Date: Sat, 17 Jun 2023 23:42:31 +0300 Subject: lexer - done --- src/ast.h | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 src/ast.h (limited to 'src/ast.h') diff --git a/src/ast.h b/src/ast.h new file mode 100644 index 0000000..bd2e628 --- /dev/null +++ b/src/ast.h @@ -0,0 +1,38 @@ +#ifndef AST_H +#define AST_H + +#include "lexer.h" + +typedef struct node_t *ast_t; +struct ast_node { + enum { + NODE_SEXP, + NODE_SYMBOL, + NODE_LITERAL, + } type; + + union { + struct sexp { + struct ast_node **children; + size_t nchildren; + } sexp; + + char *symbol; + + union { + enum { + NODE_LITERAL_NUM, + NODE_LITERAL_STR, + } type; + + int number; + char *string; + } literal; + }; +}; + +ast_t ast_create(); +void ast_destroy(ast_t ast); +int ast_parse_lexer(ast_t ast, lexer_t lex); + +#endif -- cgit v1.2.3