summaryrefslogtreecommitdiff
path: root/src/compiler/parser.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/compiler/parser.h')
-rw-r--r--src/compiler/parser.h10
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,