From 37748b89e988dd3f0b463ae0721c7e8cbd511fc1 Mon Sep 17 00:00:00 2001 From: SimonFJ20 Date: Sat, 18 Feb 2023 02:39:48 +0100 Subject: [PATCH] parser nodes and stuff --- parser.h | 35 +++++++++++++++++++++++++++++++++-- 1 file changed, 33 insertions(+), 2 deletions(-) diff --git a/parser.h b/parser.h index d4c5f12..79b90b6 100644 --- a/parser.h +++ b/parser.h @@ -20,8 +20,6 @@ typedef enum { ParsedNodeTypeWhile, ParsedNodeTypeLoop, ParsedNodeTypeFor, - ParsedNodeTypeLambda, - ParsedNodeTypeCall, ParsedNodeTypeAccess, ParsedNodeTypeIndex, @@ -30,6 +28,14 @@ typedef enum { ParsedNodeTypeAssign, } ParsedNodeType; +typedef enum { + Add, +} ParsedBinaryType; + +typedef enum { + Negate, +} ParsedUnaryType; + typedef struct KeyValuePair KeyValuePair; typedef struct ParsedNode ParsedNode; @@ -57,6 +63,31 @@ struct ParsedNode { ParsedNode* truthy; ParsedNode* falsy; } if_node; + struct { + ParsedNode* condition; + ParsedNode* body; + } while_node; + struct { + ParsedNode* body; + } loop; + struct { + ParsedNode* subject; + ParsedNode* value; + ParsedNode* body; + } for_node; + struct { + ParsedNode* subject; + ParsedNode* arguments; + size_t arguments_length; + } call; + struct { + ParsedNode* subject; + ParsedNode* value; + } access; + struct { + ParsedNode* subject; + ParsedNode* value; + } index; }; };