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.h31
1 files changed, 21 insertions, 10 deletions
diff --git a/src/compiler/parser.h b/src/compiler/parser.h
index 4e8c298..3af47e7 100644
--- a/src/compiler/parser.h
+++ b/src/compiler/parser.h
@@ -1,6 +1,7 @@
#pragma once
#include "compiler/lexer.h"
+#include "utils/type.h"
#include <stddef.h>
#include <stdint.h>
@@ -10,11 +11,13 @@ typedef enum ParserToken {
PARSER_TOKEN_IDENTIFIER,
PARSER_TOKEN_VALUE_INT,
+ PARSER_TOKEN_VALUE_FLOAT,
PARSER_TOKEN_VALUE_BOOL,
PARSER_TOKEN_TYPE_TYPE,
PARSER_TOKEN_TYPE_FUNCTION,
PARSER_TOKEN_TYPE_VOID,
+ PARSER_TOKEN_TYPE_BOOL,
PARSER_TOKEN_TYPE_I8,
PARSER_TOKEN_TYPE_U8,
PARSER_TOKEN_TYPE_I16,
@@ -23,7 +26,10 @@ typedef enum ParserToken {
PARSER_TOKEN_TYPE_U32,
PARSER_TOKEN_TYPE_I64,
PARSER_TOKEN_TYPE_U64,
- PARSER_TOKEN_TYPE_BOOL,
+ PARSER_TOKEN_TYPE_F16,
+ PARSER_TOKEN_TYPE_F32,
+ PARSER_TOKEN_TYPE_F64,
+ PARSER_TOKEN_TYPE_F128,
PARSER_TOKEN_KEYWORD_PRINT_U64,
PARSER_TOKEN_KEYWORD_RETURN,
@@ -104,7 +110,9 @@ typedef struct ParserNodeFunctionCall {
typedef ParserNode ParserNodeSingleChildMetadata;
-typedef uint64_t ParserNodeIntMetadata;
+typedef u64 ParserNodeIntMetadata;
+
+typedef f128 ParserNodeFloatMetadata;
typedef struct ParserNodeInfixMetadata {
ParserNode *left;
@@ -121,7 +129,7 @@ typedef struct ParserNodeIfMetadata {
ParserNode *condition;
ParserNode *ifBody;
ParserNode *elseBody;
-}ParserNodeIfMetadata;
+} ParserNodeIfMetadata;
void parserNodePrint(const ParserNode *node, int indent);
void parserNodeDelete(ParserNode *node);
@@ -136,11 +144,15 @@ ParserNode *parseNode(LexerNode *node, LexerNode *begin, LexerNode *end,
ParserNode *parent, bool *conti);
ParserNode *getUntilCommonParent(ParserNode *node, ParserNode *parent);
-ParserNode *getUntilCommonParents(ParserNode *node, ParserNode *parent,ParserNode *parent2);
-ParserNode *getNextUsingCommonParent(LexerNode *node,LexerNode *end, ParserNode *parent);
-LexerNode *getNextLexerNodeUsingCommonParent(LexerNode *node,LexerNode *end, ParserNode *parent);
-
-ParserNode *parserNoMetadata(LexerNode *node, ParserNode *parent,ParserToken token);
+ParserNode *getUntilCommonParents(ParserNode *node, ParserNode *parent,
+ ParserNode *parent2);
+ParserNode *getNextUsingCommonParent(LexerNode *node, LexerNode *end,
+ ParserNode *parent);
+LexerNode *getNextLexerNodeUsingCommonParent(LexerNode *node, LexerNode *end,
+ ParserNode *parent);
+
+ParserNode *parserNoMetadata(LexerNode *node, ParserNode *parent,
+ ParserToken token);
ParserNode *parserPrintU64(LexerNode *node, LexerNode *end, ParserNode *parent);
ParserNode *parserReturn(LexerNode *node, LexerNode *end, ParserNode *parent);
ParserNode *parserNumber(LexerNode *node, ParserNode *parent);
@@ -162,8 +174,7 @@ ParserNode *parserBinaryOrLeftOperator(LexerNode *node, LexerNode *begin,
LexerNode *end, ParserNode *parent,
ParserToken token,
LexerToken laterToken);
-ParserNode *parserIf(LexerNode *node, LexerNode *end,
- ParserNode *parent);
+ParserNode *parserIf(LexerNode *node, LexerNode *end, ParserNode *parent);
bool isAllArguments(const ParserNodeArray *nodes);