about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--parser.c21
1 files changed, 10 insertions, 11 deletions
diff --git a/parser.c b/parser.c
index a2f5484..126d716 100644
--- a/parser.c
+++ b/parser.c
@@ -76,22 +76,21 @@ struct cccl_Node *cccl_parse(struct cccl_Token tokens[], size_t tokens_length, e
         {
         case cccl_Token_COMMAND:
         {
-            res->in[res->in_length - 1] = malloc(sizeof(struct cccl_Node));
-            *res->in[res->in_length - 1] = (struct cccl_Node)
-            {
-                .type = get_nodetype(tokens[i].value),
-            };
+            res->in[res->in_length - 1] = cccl_parse(
+                NULL, 0,
+                get_nodetype(tokens[i].value),
+                0
+            );
         } break;
         case cccl_Token_COMMANDWITHARG:
         {
             assert(i + 1 != tokens_length);
             assert(tokens[i + 1].type == cccl_Token_IDENTIFIER);
-            res->in[res->in_length - 1] = malloc(sizeof(struct cccl_Node));
-            *res->in[res->in_length - 1] = (struct cccl_Node)
-            {
-                .type = get_nodetype(tokens[i].value),
-                .value = tokens[i + 1].value,
-            };
+            res->in[res->in_length - 1] = cccl_parse(
+                NULL, 0,
+                get_nodetype(tokens[i].value),
+                tokens[i + 1].value
+            );
         } break;
         case cccl_Token_BLOCKSTART:
         {