diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/compiler/ast-tree.c | 15 | ||||
-rw-r--r-- | src/compiler/ast-tree.h | 3 |
2 files changed, 17 insertions, 1 deletions
diff --git a/src/compiler/ast-tree.c b/src/compiler/ast-tree.c index d50d0f6..b201c57 100644 --- a/src/compiler/ast-tree.c +++ b/src/compiler/ast-tree.c @@ -889,8 +889,9 @@ AstTree *astTreeParse(ParserNode *parserNode, AstTreeHelper *helper) { helper); case PARSER_TOKEN_SYMBOL_CURLY_BRACKET: return astTreeParseCurlyBracket(parserNode, helper); - case PARSER_TOKEN_CONSTANT: case PARSER_TOKEN_SYMBOL_PARENTHESIS: + return astTreeParseParenthesis(parserNode, helper); + case PARSER_TOKEN_CONSTANT: case PARSER_TOKEN_SYMBOL_COMMA: case PARSER_TOKEN_NONE: case PARSER_TOKEN_ROOT: @@ -1454,6 +1455,18 @@ RETURN_ERROR: return NULL; } +AstTree *astTreeParseParenthesis(ParserNode *parserNode, + AstTreeHelper *helper) { + ParserNodeArray *metadata = parserNode->metadata; + + if (metadata->size != 1) { + printError(parserNode->str_begin, parserNode->str_end, "Bad parenthesis"); + return NULL; + } else { + return astTreeParse(metadata->data[0], helper); + } +} + AstTreeFunction *getFunction(AstTree *value) { switch (value->token) { case AST_TREE_TOKEN_FUNCTION: diff --git a/src/compiler/ast-tree.h b/src/compiler/ast-tree.h index 798a6b4..921bc89 100644 --- a/src/compiler/ast-tree.h +++ b/src/compiler/ast-tree.h @@ -174,6 +174,9 @@ AstTree *astTreeParseVariable(ParserNode *parserNode, AstTreeHelper *helper); AstTree *astTreeParseIf(ParserNode *parserNode, AstTreeHelper *helper); AstTree *astTreeParseCurlyBracket(ParserNode *parserNode, AstTreeHelper *helper); +AstTree *astTreeParseParenthesis(ParserNode *parserNode, + AstTreeHelper *helper); + AstTreeFunction *getFunction(AstTree *value); bool isConst(AstTree *value); |