aboutsummaryrefslogtreecommitdiff
path: root/src/compiler/parser.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/compiler/parser.c')
-rw-r--r--src/compiler/parser.c27
1 files changed, 27 insertions, 0 deletions
diff --git a/src/compiler/parser.c b/src/compiler/parser.c
index e8772fb..ba7a4a0 100644
--- a/src/compiler/parser.c
+++ b/src/compiler/parser.c
@@ -14,6 +14,7 @@ const char *PARSER_TOKEN_STRINGS[] = {
"PARSER_TOKEN_BUILTIN_CAST",
"PARSER_TOKEN_BUILTIN_TYPE_OF",
+ "PARSER_TOKEN_BUILTIN_SIZE_OF",
"PARSER_TOKEN_BUILTIN_IMPORT",
"PARSER_TOKEN_BUILTIN_IS_COMPTIME",
"PARSER_TOKEN_BUILTIN_STACK_ALLOC",
@@ -31,6 +32,8 @@ const char *PARSER_TOKEN_STRINGS[] = {
"PARSER_TOKEN_BUILTIN_GREATER_OR_EQUAL",
"PARSER_TOKEN_BUILTIN_SMALLER_OR_EQUAL",
"PARSER_TOKEN_BUILTIN_PUTC",
+ "PARSER_TOKEN_BUILTIN_C_LIBRARY",
+ "PARSER_TOKEN_BUILTIN_C_FUNCTION",
"PARSER_TOKEN_VALUE_INT",
"PARSER_TOKEN_VALUE_FLOAT",
@@ -244,6 +247,7 @@ void parserNodePrint(const ParserNode *node, int indent) {
case PARSER_TOKEN_IDENTIFIER:
case PARSER_TOKEN_BUILTIN_CAST:
case PARSER_TOKEN_BUILTIN_TYPE_OF:
+ case PARSER_TOKEN_BUILTIN_SIZE_OF:
case PARSER_TOKEN_BUILTIN_IMPORT:
case PARSER_TOKEN_BUILTIN_IS_COMPTIME:
case PARSER_TOKEN_BUILTIN_STACK_ALLOC:
@@ -261,6 +265,8 @@ void parserNodePrint(const ParserNode *node, int indent) {
case PARSER_TOKEN_BUILTIN_GREATER_OR_EQUAL:
case PARSER_TOKEN_BUILTIN_SMALLER_OR_EQUAL:
case PARSER_TOKEN_BUILTIN_PUTC:
+ case PARSER_TOKEN_BUILTIN_C_LIBRARY:
+ case PARSER_TOKEN_BUILTIN_C_FUNCTION:
case PARSER_TOKEN_TYPE_TYPE:
case PARSER_TOKEN_TYPE_VOID:
case PARSER_TOKEN_TYPE_BOOL:
@@ -549,6 +555,7 @@ void parserNodeDelete(ParserNode *node) {
case PARSER_TOKEN_IDENTIFIER:
case PARSER_TOKEN_BUILTIN_CAST:
case PARSER_TOKEN_BUILTIN_TYPE_OF:
+ case PARSER_TOKEN_BUILTIN_SIZE_OF:
case PARSER_TOKEN_BUILTIN_IMPORT:
case PARSER_TOKEN_BUILTIN_IS_COMPTIME:
case PARSER_TOKEN_BUILTIN_STACK_ALLOC:
@@ -566,6 +573,8 @@ void parserNodeDelete(ParserNode *node) {
case PARSER_TOKEN_BUILTIN_GREATER_OR_EQUAL:
case PARSER_TOKEN_BUILTIN_SMALLER_OR_EQUAL:
case PARSER_TOKEN_BUILTIN_PUTC:
+ case PARSER_TOKEN_BUILTIN_C_LIBRARY:
+ case PARSER_TOKEN_BUILTIN_C_FUNCTION:
case PARSER_TOKEN_TYPE_TYPE:
case PARSER_TOKEN_TYPE_VOID:
case PARSER_TOKEN_TYPE_BOOL:
@@ -854,6 +863,8 @@ ParserNode *parseNode(LexerNode *node, LexerNode *begin, LexerNode *end,
return parserNoMetadata(node, parent, PARSER_TOKEN_BUILTIN_CAST);
case LEXER_TOKEN_BUILTIN_TYPE_OF:
return parserNoMetadata(node, parent, PARSER_TOKEN_BUILTIN_TYPE_OF);
+ case LEXER_TOKEN_BUILTIN_SIZE_OF:
+ return parserNoMetadata(node, parent, PARSER_TOKEN_BUILTIN_SIZE_OF);
case LEXER_TOKEN_BUILTIN_IMPORT:
return parserNoMetadata(node, parent, PARSER_TOKEN_BUILTIN_IMPORT);
case LEXER_TOKEN_BUILTIN_IS_COMPTIME:
@@ -890,6 +901,10 @@ ParserNode *parseNode(LexerNode *node, LexerNode *begin, LexerNode *end,
PARSER_TOKEN_BUILTIN_SMALLER_OR_EQUAL);
case LEXER_TOKEN_BUILTIN_PUTC:
return parserNoMetadata(node, parent, PARSER_TOKEN_BUILTIN_PUTC);
+ case LEXER_TOKEN_BUILTIN_C_LIBRARY:
+ return parserNoMetadata(node, parent, PARSER_TOKEN_BUILTIN_C_LIBRARY);
+ case LEXER_TOKEN_BUILTIN_C_FUNCTION:
+ return parserNoMetadata(node, parent, PARSER_TOKEN_BUILTIN_C_FUNCTION);
case LEXER_TOKEN_KEYWORD_TYPE:
return parserNoMetadata(node, parent, PARSER_TOKEN_TYPE_TYPE);
case LEXER_TOKEN_KEYWORD_VOID:
@@ -1659,6 +1674,7 @@ ParserNode *parserFunction(LexerNode *node, LexerNode *begin, LexerNode *end,
case PARSER_TOKEN_IDENTIFIER:
case PARSER_TOKEN_BUILTIN_CAST:
case PARSER_TOKEN_BUILTIN_TYPE_OF:
+ case PARSER_TOKEN_BUILTIN_SIZE_OF:
case PARSER_TOKEN_BUILTIN_IMPORT:
case PARSER_TOKEN_BUILTIN_IS_COMPTIME:
case PARSER_TOKEN_BUILTIN_STACK_ALLOC:
@@ -1676,6 +1692,8 @@ ParserNode *parserFunction(LexerNode *node, LexerNode *begin, LexerNode *end,
case PARSER_TOKEN_BUILTIN_GREATER_OR_EQUAL:
case PARSER_TOKEN_BUILTIN_SMALLER_OR_EQUAL:
case PARSER_TOKEN_BUILTIN_PUTC:
+ case PARSER_TOKEN_BUILTIN_C_LIBRARY:
+ case PARSER_TOKEN_BUILTIN_C_FUNCTION:
case PARSER_TOKEN_VALUE_INT:
case PARSER_TOKEN_VALUE_FLOAT:
case PARSER_TOKEN_VALUE_BOOL:
@@ -2160,6 +2178,7 @@ bool isExpression(ParserNode *node) {
case PARSER_TOKEN_IDENTIFIER:
case PARSER_TOKEN_BUILTIN_CAST:
case PARSER_TOKEN_BUILTIN_TYPE_OF:
+ case PARSER_TOKEN_BUILTIN_SIZE_OF:
case PARSER_TOKEN_BUILTIN_IMPORT:
case PARSER_TOKEN_BUILTIN_IS_COMPTIME:
case PARSER_TOKEN_BUILTIN_STACK_ALLOC:
@@ -2177,6 +2196,8 @@ bool isExpression(ParserNode *node) {
case PARSER_TOKEN_BUILTIN_GREATER_OR_EQUAL:
case PARSER_TOKEN_BUILTIN_SMALLER_OR_EQUAL:
case PARSER_TOKEN_BUILTIN_PUTC:
+ case PARSER_TOKEN_BUILTIN_C_LIBRARY:
+ case PARSER_TOKEN_BUILTIN_C_FUNCTION:
case PARSER_TOKEN_CONSTANT:
case PARSER_TOKEN_VARIABLE:
case PARSER_TOKEN_SYMBOL_PARENTHESIS:
@@ -2293,6 +2314,7 @@ bool isType(ParserNode *node) {
return true;
case PARSER_TOKEN_BUILTIN_CAST:
case PARSER_TOKEN_BUILTIN_TYPE_OF:
+ case PARSER_TOKEN_BUILTIN_SIZE_OF:
case PARSER_TOKEN_BUILTIN_IMPORT:
case PARSER_TOKEN_BUILTIN_IS_COMPTIME:
case PARSER_TOKEN_BUILTIN_STACK_ALLOC:
@@ -2310,6 +2332,8 @@ bool isType(ParserNode *node) {
case PARSER_TOKEN_BUILTIN_GREATER_OR_EQUAL:
case PARSER_TOKEN_BUILTIN_SMALLER_OR_EQUAL:
case PARSER_TOKEN_BUILTIN_PUTC:
+ case PARSER_TOKEN_BUILTIN_C_LIBRARY:
+ case PARSER_TOKEN_BUILTIN_C_FUNCTION:
case PARSER_TOKEN_OPERATOR_ADDRESS:
case PARSER_TOKEN_KEYWORD_NULL:
case PARSER_TOKEN_KEYWORD_UNDEFINED:
@@ -2369,6 +2393,7 @@ bool isValue(ParserNode *node) {
case PARSER_TOKEN_IDENTIFIER:
case PARSER_TOKEN_BUILTIN_CAST:
case PARSER_TOKEN_BUILTIN_TYPE_OF:
+ case PARSER_TOKEN_BUILTIN_SIZE_OF:
case PARSER_TOKEN_BUILTIN_IMPORT:
case PARSER_TOKEN_BUILTIN_IS_COMPTIME:
case PARSER_TOKEN_BUILTIN_STACK_ALLOC:
@@ -2386,6 +2411,8 @@ bool isValue(ParserNode *node) {
case PARSER_TOKEN_BUILTIN_GREATER_OR_EQUAL:
case PARSER_TOKEN_BUILTIN_SMALLER_OR_EQUAL:
case PARSER_TOKEN_BUILTIN_PUTC:
+ case PARSER_TOKEN_BUILTIN_C_LIBRARY:
+ case PARSER_TOKEN_BUILTIN_C_FUNCTION:
case PARSER_TOKEN_OPERATOR_ACCESS:
case PARSER_TOKEN_OPERATOR_ASSIGN:
case PARSER_TOKEN_OPERATOR_SUM_ASSIGN: