From d86d70fc7c6751713a6b9f02d9f77814e2f75718 Mon Sep 17 00:00:00 2001 From: Johnny Richard Date: Fri, 21 Apr 2023 15:11:17 +0200 Subject: parser: Parse integers arithmetic expression This patch implements the AST creation for arithmetic expressions. NOTE: The implementation works only for integer numbers. Signed-off-by: Johnny Richard Reviewed-by: Carlos Maniero --- src/ast.h | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'src/ast.h') diff --git a/src/ast.h b/src/ast.h index 1c4bbb8..cb9b8d5 100644 --- a/src/ast.h +++ b/src/ast.h @@ -38,6 +38,13 @@ typedef struct ast_function_declaration_t { ast_node_t* body; } ast_function_declaration_t; +typedef struct ast_binary_operation_t { + // FIXME: We want to use enum to distinguish operators + string_view_t op; + ast_node_t* left; + ast_node_t* right; +} ast_binary_operation_t; + typedef enum { AST_LITERAL_INTEGER } ast_literal_kind_t; @@ -59,6 +66,7 @@ typedef struct ast_visitor_t { typedef enum { AST_FUNCTION_DECLARATION, + AST_BINARY_OPERATION, AST_LITERAL, AST_RETURN_STMT, AST_UNKOWN_NODE @@ -66,6 +74,7 @@ typedef enum { typedef union { ast_function_declaration_t function; + ast_binary_operation_t binary_operation; ast_literal_t literal; ast_return_stmt_t return_stmt; } ast_node_data_t; -- cgit v1.2.3