Rain: added support for the modulo operator

This commit is contained in:
Neil Brown 2007-08-28 17:05:55 +00:00
parent c8cf8a9963
commit 96fc3a9983
3 changed files with 7 additions and 2 deletions

View File

@ -33,8 +33,8 @@ $hexDigit = [0-9 a-f A-F]
@reserved = "[" | "]" | "(" | ")" | "{" | "}"
| ":" | "==" | "," | ";"
| "?" | "!" | "=" | "+=" | "-=" | "*=" | "/="
| "+" | "-" | "*" | "/"
| "?" | "!" | "=" | "+=" | "-=" | "*=" | "/=" | "%="
| "+" | "-" | "*" | "/" | "%"
| ">=" | "<="
| "<" | ">"
| "process" | "pareach" | "seqeach" | "par" | "seq"

View File

@ -92,6 +92,7 @@ dyadicArithOp
<|> do {m <- reserved "-" ; return (m,A.Minus) }
<|> do {m <- reserved "*" ; return (m,A.Times) }
<|> do {m <- reserved "/" ; return (m,A.Div) }
<|> do {m <- reserved "%" ; return (m,A.Rem) }
dyadicCompOp :: RainParser (Meta,A.DyadicOp)
dyadicCompOp
@ -256,6 +257,9 @@ assignOp :: RainParser (Meta, Maybe A.DyadicOp)
assignOp
= do {m <- reserved "+=" ; return (m,Just A.Plus)}
<|> do {m <- reserved "-=" ; return (m,Just A.Minus)}
<|> do {m <- reserved "*=" ; return (m,Just A.Times)}
<|> do {m <- reserved "/=" ; return (m,Just A.Div)}
<|> do {m <- reserved "%=" ; return (m,Just A.Rem)}
<|> do {m <- reserved "=" ; return (m,Nothing)}
--TODO the rest

View File

@ -103,6 +103,7 @@ testExprs =
--Dyadic operators:
,passE ("b + c", 0 ,Dy (Var "b") A.Plus (Var "c") )
,passE ("b % c", 0 ,Dy (Var "b") A.Rem (Var "c") )
,passE ("b == c", 1 ,Dy (Var "b") A.Eq (Var "c") )
,passE ("(b + c)", 2 ,Dy (Var "b") A.Plus (Var "c") )
,passE ("(b == c)", 3 ,Dy (Var "b") A.Eq (Var "c") )