From 483a64aa0c5ee8dc925b7957e39c42744b892288 Mon Sep 17 00:00:00 2001 From: Bad Diode Date: Thu, 31 Mar 2022 08:18:36 +0200 Subject: Add type signature to def statements Currently mandatory, may be optional once we have type inference. --- src/parser.h | 42 +----------------------------------------- 1 file changed, 1 insertion(+), 41 deletions(-) (limited to 'src/parser.h') diff --git a/src/parser.h b/src/parser.h index 6a4401e..47316b9 100644 --- a/src/parser.h +++ b/src/parser.h @@ -2,53 +2,13 @@ #define BDL_PARSER_H #include "lexer.h" +#include "nodes.h" typedef struct Parser { Token *tokens; size_t current; } Parser; -typedef enum NodeType { - NODE_BUILTIN, - NODE_NUMBER, - NODE_BOOL, - NODE_STRING, - NODE_SYMBOL, - NODE_DEF, -} NodeType; - -typedef struct Node { - NodeType type; - - union { - // Numbers. - struct { - bool negative; - size_t integral; - size_t fractional; - } number; - - // String/symbol. - StringView string; - - // Boolean. - bool boolean; - - // Builtin primitive. - struct { - TokenType type; - struct Node **args; - } builtin; - - // Variable definition. - struct { - struct Node *symbol; - struct Node *value; - // TODO: type information - } def; - }; -} Node; - void parse(Token *tokens); Node * parse_next(Parser *parser); -- cgit v1.2.1