diff options
-rw-r--r-- | example.pl | 5 | ||||
-rw-r--r-- | parser.c | 7 |
2 files changed, 11 insertions, 1 deletions
@@ -2,6 +2,11 @@ math(A,B,C,D) :- D is A + B + C * A. +parentest :- + 1 + 2 * 3 + 4. +parentest :- + (0 * (1 + 2) * 3) * 3 + 4. + true. likes(bob, ice). @@ -171,6 +171,11 @@ term(void) case CurlyBracketLeftTok: result = curlybracketterm(); break; + case ParenLeftTok: + match(ParenLeftTok); + result = fullterm(ParenRightTok, nil, nil); + match(ParenRightTok); + break; default: print("Cant parse term of token type %d\n", lookahead.tag); syntaxerror("term"); @@ -245,7 +250,7 @@ parseoperators(Term *list) for(i = 0, t = list; i < length; i++){ Operator *op = getoperator(t->text); - if(op){ + if(op && t->tag == AtomTok){ infos[i].type = op->type; infos[i].level = op->level; }else{ |