From 502c711c9606717d2f48d73f0a14a07f6a02fef2 Mon Sep 17 00:00:00 2001 From: darkf Date: Fri, 8 Nov 2013 02:01:34 -0800 Subject: [PATCH] parser: bind call tighter in its own production --- Parser.hs | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/Parser.hs b/Parser.hs index 3f012bd..4c1644b 100644 --- a/Parser.hs +++ b/Parser.hs @@ -75,8 +75,7 @@ ifcond :: AST = "if" expr "then" expr "else" expr { IfExpr $1 $2 $3 } expr :: AST - = expr "(" args ")" { Call $1 $2 } - / expr "::" expr { Cons $1 $2 } + = expr "::" expr { Cons $1 $2 } / expr "+" fact { Add $1 $2 } / expr "-" fact { Sub $1 $2 } / expr "==" fact { Equals $1 $2 } @@ -89,8 +88,12 @@ expr :: AST / fact fact :: AST - = fact "*" term { Mul $1 $2 } - / fact "/" term { Div $1 $2 } + = fact "*" call { Mul $1 $2 } + / fact "/" call { Div $1 $2 } + / call + +call :: AST + = call "(" args ")" { Call $1 $2 } / access access :: AST