Added support for array constructors to the occam parser
This commit is contained in:
parent
b83bcc0f34
commit
6f35e1e36c
|
@ -50,6 +50,7 @@ $vertSpace = [\r\n]
|
||||||
| "<" | ">"
|
| "<" | ">"
|
||||||
| "~"
|
| "~"
|
||||||
| "##"
|
| "##"
|
||||||
|
| "|"
|
||||||
| "AFTER" | "ALT" | "AND" | "ANY" | "AT"
|
| "AFTER" | "ALT" | "AND" | "ANY" | "AT"
|
||||||
| "BITAND" | "BITNOT" | "BITOR" | "BOOL" | "BYTE" | "BYTESIN"
|
| "BITAND" | "BITNOT" | "BITOR" | "BOOL" | "BYTE" | "BYTESIN"
|
||||||
| "CASE" | "CHAN"
|
| "CASE" | "CHAN"
|
||||||
|
|
|
@ -90,13 +90,12 @@ plainToken t = genToken test
|
||||||
test (_, t') = if t == t' then Just () else Nothing
|
test (_, t') = if t == t' then Just () else Nothing
|
||||||
--}}}
|
--}}}
|
||||||
--{{{ symbols
|
--{{{ symbols
|
||||||
sAmp, sAssign, sBang, sColon, sColons, sComma, sEq, sLeft, sLeftR, sQuest,
|
sAmp, sAssign, sBang, sColon, sColons, sComma, sEq, sLeft, sLeftR, sQuest, sRight, sRightR, sSemi :: OccParser ()
|
||||||
sRight, sRightR, sSemi
|
|
||||||
:: OccParser ()
|
|
||||||
|
|
||||||
sAmp = reserved "&"
|
sAmp = reserved "&"
|
||||||
sAssign = reserved ":="
|
sAssign = reserved ":="
|
||||||
sBang = reserved "!"
|
sBang = reserved "!"
|
||||||
|
sBar = reserved "|"
|
||||||
sColon = reserved ":"
|
sColon = reserved ":"
|
||||||
sColons = reserved "::"
|
sColons = reserved "::"
|
||||||
sComma = reserved ","
|
sComma = reserved ","
|
||||||
|
@ -900,6 +899,16 @@ expression
|
||||||
<|> operand
|
<|> operand
|
||||||
<?> "expression"
|
<?> "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 :: OccParser A.Expression
|
||||||
associativeOpExpression
|
associativeOpExpression
|
||||||
= do m <- md
|
= do m <- md
|
||||||
|
@ -1119,6 +1128,7 @@ operand'
|
||||||
<|> do { m <- md; sTRUE; return $ A.True m }
|
<|> do { m <- md; sTRUE; return $ A.True m }
|
||||||
<|> do { m <- md; sFALSE; return $ A.False m }
|
<|> do { m <- md; sFALSE; return $ A.False m }
|
||||||
<|> table
|
<|> table
|
||||||
|
<|> arrayConstructor
|
||||||
<?> "operand"
|
<?> "operand"
|
||||||
--}}}
|
--}}}
|
||||||
--{{{ variables, channels, timers, ports
|
--{{{ variables, channels, timers, ports
|
||||||
|
|
Loading…
Reference in New Issue
Block a user