Added support for array constructors to the occam parser

This commit is contained in:
Neil Brown 2008-03-10 22:58:36 +00:00
parent b83bcc0f34
commit 6f35e1e36c
2 changed files with 14 additions and 3 deletions

View File

@ -50,6 +50,7 @@ $vertSpace = [\r\n]
| "<" | ">"
| "~"
| "##"
| "|"
| "AFTER" | "ALT" | "AND" | "ANY" | "AT"
| "BITAND" | "BITNOT" | "BITOR" | "BOOL" | "BYTE" | "BYTESIN"
| "CASE" | "CHAN"

View File

@ -90,13 +90,12 @@ plainToken t = genToken test
test (_, t') = if t == t' then Just () else Nothing
--}}}
--{{{ symbols
sAmp, sAssign, sBang, sColon, sColons, sComma, sEq, sLeft, sLeftR, sQuest,
sRight, sRightR, sSemi
:: OccParser ()
sAmp, sAssign, sBang, sColon, sColons, sComma, sEq, sLeft, sLeftR, sQuest, sRight, sRightR, sSemi :: OccParser ()
sAmp = reserved "&"
sAssign = reserved ":="
sBang = reserved "!"
sBar = reserved "|"
sColon = reserved ":"
sColons = reserved "::"
sComma = reserved ","
@ -900,6 +899,16 @@ expression
<|> operand
<?> "expression"
arrayConstructor :: OccParser A.Expression
arrayConstructor
= do m <- md
sLeft
r <- replicator
sBar
e <- expression
sRight
return $ A.ExprConstr m $ A.RepConstr m r e
associativeOpExpression :: OccParser A.Expression
associativeOpExpression
= do m <- md
@ -1119,6 +1128,7 @@ operand'
<|> do { m <- md; sTRUE; return $ A.True m }
<|> do { m <- md; sFALSE; return $ A.False m }
<|> table
<|> arrayConstructor
<?> "operand"
--}}}
--{{{ variables, channels, timers, ports