diff options
-rw-r--r-- | dat.h | 1 | ||||
-rw-r--r-- | misc.c | 1 | ||||
-rw-r--r-- | parser.c | 3 |
3 files changed, 4 insertions, 1 deletions
@@ -29,6 +29,7 @@ struct Term vlong ival; double dval; uvlong clausenr; + int inparens; /* kinda bad hack needed for the current parser */ }; struct Binding @@ -53,6 +53,7 @@ mkterm(int tag) t->children = nil; t->text = nil; t->clausenr = 0; + t->inparens = 0; return t; } @@ -171,6 +171,7 @@ term(void) case ParenLeftTok: match(ParenLeftTok); result = fullterm(ParenRightTok, nil, nil); + result->inparens = 1; match(ParenRightTok); break; case StringTok: @@ -251,7 +252,7 @@ parseoperators(Term *list) for(i = 0, t = list; i < length; i++){ Operator *op = getoperator(t->text, currentmod); - if(op && t->tag == AtomTerm){ + if(op && t->tag == AtomTerm && !t->inparens){ infos[i].type = op->type; infos[i].level = op->level; }else{ |