diff options
author | Tucker Evans <tuckerevans24@gmail.com> | 2019-09-05 18:09:37 -0400 |
---|---|---|
committer | Tucker Evans <tuckerevans24@gmail.com> | 2019-09-05 18:09:37 -0400 |
commit | 1300aa3672d7ae27963465fa6d8d2a6ebe8a71d2 (patch) | |
tree | 8d1ada5ceb9a07fcbc105ea5fd0707a6ed3acb12 | |
parent | c6d13abfc122c15ecc182b1fc5645628e8eb4d18 (diff) |
Fix count_args to handle single variable parameters
-rw-r--r-- | main.c | 26 | ||||
-rw-r--r-- | pc.y | 5 |
2 files changed, 10 insertions, 21 deletions
@@ -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) @@ -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); |