diff options
Diffstat (limited to 'src/compiler/parser.h')
-rw-r--r-- | src/compiler/parser.h | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/src/compiler/parser.h b/src/compiler/parser.h index fb65358..974fdd5 100644 --- a/src/compiler/parser.h +++ b/src/compiler/parser.h @@ -2,16 +2,20 @@ #include "compiler/lexer.h" #include <stddef.h> +#include <stdint.h> typedef enum ParserToken { PARSER_TOKEN_ROOT, PARSER_TOKEN_IDENTIFIER, + PARSER_TOKEN_VALUE_U64, + PARSER_TOKEN_TYPE_FUNCTION, PARSER_TOKEN_TYPE_VOID, PARSER_TOKEN_KEYWORD_PRINT, + PARSER_TOKEN_KEYWORD_PRINT_U64, PARSER_TOKEN_CONSTANT, @@ -70,7 +74,9 @@ typedef struct ParserNodeFunctionCall { ParserNodeArray *params; } ParserNodeFunctionCall; -typedef ParserNode ParserNodeEOLMetadata; +typedef ParserNode ParserNodeSingleChildMetadata; + +typedef uint64_t ParserNodeU64Metadata; void parserNodePrint(const ParserNode *node, int indent); void parserNodeDelete(ParserNode *node); @@ -89,6 +95,8 @@ ParserNode *getUntilCommonParent(ParserNode *node, ParserNode *parent); ParserNode *parserIdentifier(LexerNode *node, ParserNode *parent); ParserNode *parserVoid(LexerNode *node, ParserNode *parent); ParserNode *parserPrint(LexerNode *node, ParserNode *parent); +ParserNode *parserPrintU64(LexerNode *node, LexerNode *end, ParserNode *parent); +ParserNode *parserNumber(LexerNode *node, ParserNode *parent); ParserNode *parserEol(LexerNode *node, LexerNode *begin, ParserNode *parent); ParserNode *parserComma(LexerNode *node, LexerNode *begin, ParserNode *parent); ParserNode *parserParenthesis(LexerNode *closing, LexerNode *begin, |