parser2: add if, and logical operators

This commit is contained in:
darkf 2013-11-01 21:22:24 -07:00
parent 10b5825278
commit f2927c7fe3
1 changed files with 8 additions and 0 deletions

View File

@ -69,11 +69,18 @@ lambda :: AST
def :: AST
= pattern "=" expr { Def $1 $2 }
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 "+" fact { Add $1 $2 }
/ expr "-" fact { Sub $1 $2 }
/ expr "==" fact { Equals $1 $2 }
/ expr "!=" fact { NotEquals $1 $2 }
/ expr "<" fact { LessThan $1 $2 }
/ expr ">" fact { GreaterThan $1 $2 }
/ def
/ lambda
/ identifier "(" funpattern ")" "->" expr { Defun $1 (Lambda [($2, $3)]) }
@ -88,6 +95,7 @@ term :: AST
= tuple
/ "(" expr ")"
/ "[" listseq "]"
/ ifcond
/ doblock
/ stringlit { StrConst $1 }
/ integer { IntConst $1 }