From d21b3a3cd5dc5ead3b03764f9531ddcee1b80a45 Mon Sep 17 00:00:00 2001 From: rlar Date: Sat, 7 Apr 2012 19:06:10 +0200 Subject: [PATCH] mkfnode(), minor rewrite --- src/spicelib/parser/inpptree.c | 57 ++++++++++++++++------------------ 1 file changed, 26 insertions(+), 31 deletions(-) diff --git a/src/spicelib/parser/inpptree.c b/src/spicelib/parser/inpptree.c index 1110ff26f..af3aaa15d 100644 --- a/src/spicelib/parser/inpptree.c +++ b/src/spicelib/parser/inpptree.c @@ -835,16 +835,8 @@ static INPparseNode *mkfnode(const char *fname, INPparseNode * arg) if(!strcmp("ternary_fcn", buf)) { -// extern void printTree(INPparseNode *); -// -// printf("debug: %s ternary_fcn: ", __func__); -// printTree(arg); -// printf("\n"); + if(arg->type == PT_COMMA && arg->left->type == PT_COMMA) { - if(arg->type != PT_COMMA || arg->left->type != PT_COMMA) { - fprintf(stderr, "Error: bogus ternary_fcn form\n"); - return (NULL); - } else { INPparseNode *arg1 = arg->left->left; INPparseNode *arg2 = arg->left->right; INPparseNode *arg3 = arg->right; @@ -854,32 +846,35 @@ static INPparseNode *mkfnode(const char *fname, INPparseNode * arg) p->type = PT_TERN; p->left = arg1; p->right = mkb(PT_COMMA, arg2, arg3); + + return (p); } - - } else { - for (i = 0; i < NUM_FUNCS; i++) - if (!strcmp(funcs[i].name, buf)) - break; - - if (i == NUM_FUNCS) { - fprintf(stderr, "Error: no such function '%s'\n", buf); - return (NULL); - } - - p = TMALLOC(INPparseNode, 1); - - p->type = PT_FUNCTION; - p->left = arg; - p->funcname = funcs[i].name; - p->funcnum = funcs[i].number; - p->function = funcs[i].funcptr; - p->data = NULL; - - if(p->funcnum == PTF_PWL) - p = prepare_PTF_PWL(p); + fprintf(stderr, "Error: bogus ternary_fcn form\n"); + return (NULL); } + for (i = 0; i < NUM_FUNCS; i++) + if (!strcmp(funcs[i].name, buf)) + break; + + if (i == NUM_FUNCS) { + fprintf(stderr, "Error: no such function '%s'\n", buf); + return (NULL); + } + + p = TMALLOC(INPparseNode, 1); + + p->type = PT_FUNCTION; + p->left = arg; + p->funcname = funcs[i].name; + p->funcnum = funcs[i].number; + p->function = funcs[i].funcptr; + p->data = NULL; + + if(p->funcnum == PTF_PWL) + p = prepare_PTF_PWL(p); + return (p); }