aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTucker Evans <tuckerevans24@gmail.com>2019-09-05 18:09:37 -0400
committerTucker Evans <tuckerevans24@gmail.com>2019-09-05 18:09:37 -0400
commit1300aa3672d7ae27963465fa6d8d2a6ebe8a71d2 (patch)
tree8d1ada5ceb9a07fcbc105ea5fd0707a6ed3acb12
parentc6d13abfc122c15ecc182b1fc5645628e8eb4d18 (diff)
Fix count_args to handle single variable parameters
-rw-r--r--main.c26
-rw-r--r--pc.y5
2 files changed, 10 insertions, 21 deletions
diff --git a/main.c b/main.c
index 6c601ff..394e3bc 100644
--- a/main.c
+++ b/main.c
@@ -139,27 +139,19 @@ ptree *t;
{
int r, l;
- if (t->r && t->r->type == LIST)
- r = count_args(t->r);
- else if (t->r && t->r->type == ID)
- r = 1;
- else {
- char buf[100];
- snprintf(buf, 100, "COUNT ARGS1: %d\n",(t->r));
- yyerror(buf);
- }
+ if (!t)
+ return 0;
- if (t->l && t->l->type == LIST)
+ if (t->type == LIST){
+ r = count_args(t->r);
l = count_args(t->l);
- else if (t->l && t->l->type == ID)
- l = 1;
- else{
- char buf[100];
- snprintf(buf, 100, "COUNT ARGS2: %d\n", (t->l));
- yyerror(buf);
+ } else if (t->type == ID) {
+ return 1;
+ } else {
+ yyerror("NOT A PARAMETER LIST\n");
}
- return l + r;
+ return r + l;
}
int set_func_types(t, nxt, size)
diff --git a/pc.y b/pc.y
index 8991403..dc7b704 100644
--- a/pc.y
+++ b/pc.y
@@ -178,10 +178,7 @@ sub_prog_head
check_id(cur_scope->prev, $2);
tmp = scope_insert(cur_scope->prev, $2);
- if ($3->type == ID)
- i = 1;
- else
- i = count_args($3);
+ i = count_args($3);
tmp->func_info = malloc(sizeof(struct fi));
assert(tmp->func_info);