From 00e2c70b01f28c9b00ec3d5096895a387676774d Mon Sep 17 00:00:00 2001 From: Camil Staps Date: Fri, 26 Aug 2016 00:46:55 +0200 Subject: Linking C functions --- interpreter/syntax.c | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'interpreter/syntax.c') diff --git a/interpreter/syntax.c b/interpreter/syntax.c index 7a0dd39..1722761 100644 --- a/interpreter/syntax.c +++ b/interpreter/syntax.c @@ -41,6 +41,11 @@ void cpy_expression(expression* dst, expression* src) { dst->var1 = my_calloc(1, strlen((char*) src->var1) + 1); strcpy(dst->var1, src->var1); break; + case EXPR_CODE: + dst->var1 = src->var1; + dst->var2 = my_calloc(1, sizeof(unsigned char)); + *((unsigned char*) dst->var2) = *((unsigned char*) src->var2); + break; case EXPR_LIST: if (!src->var1) break; @@ -61,6 +66,7 @@ unsigned eq_expression(expression* a, expression* b) { switch (a->kind) { case EXPR_INT: return *((int*) a->var1) == *((int*) b->var1); case EXPR_NAME: return !strcmp(a->var1, b->var1); + case EXPR_CODE: return a->var1 == b->var1; case EXPR_TUPLE: case EXPR_LIST: case EXPR_APP: @@ -139,6 +145,9 @@ void free_expression(expression* expr) { case EXPR_NAME: my_free(expr->var1); break; + case EXPR_CODE: + my_free(expr->var2); + break; case EXPR_LIST: case EXPR_TUPLE: case EXPR_APP: -- cgit v1.2.3