Added INITIAL variable abbreviations (as specifications) to the occam parser
This commit is contained in:
parent
239dea3f36
commit
b83bcc0f34
|
@ -56,7 +56,7 @@ $vertSpace = [\r\n]
|
||||||
| "DATA"
|
| "DATA"
|
||||||
| "ELSE"
|
| "ELSE"
|
||||||
| "FALSE" | "FOR" | "FROM" | "FUNCTION"
|
| "FALSE" | "FOR" | "FROM" | "FUNCTION"
|
||||||
| "IF" | "IN" | "INLINE" | "INT" | "INT16" | "INT32" | "INT64"
|
| "IF" | "IN" | "INITIAL" | "INLINE" | "INT" | "INT16" | "INT32" | "INT64"
|
||||||
| "IS"
|
| "IS"
|
||||||
| "MINUS" | "MOSTNEG" | "MOSTPOS"
|
| "MINUS" | "MOSTNEG" | "MOSTPOS"
|
||||||
| "NOT"
|
| "NOT"
|
||||||
|
|
|
@ -109,13 +109,12 @@ sRightR = reserved ")"
|
||||||
sSemi = reserved ";"
|
sSemi = reserved ";"
|
||||||
--}}}
|
--}}}
|
||||||
--{{{ keywords
|
--{{{ keywords
|
||||||
sAFTER, sALT, sAND, sANY, sAT, sBITAND, sBITNOT, sBITOR, sBOOL, sBYTE,
|
sAFTER, sALT, sAND, sANY, sAT, sBITAND, sBITNOT, sBITOR, sBOOL, sBYTE, sBYTESIN, sCASE, sCHAN, sDATA,
|
||||||
sBYTESIN, sCASE, sCHAN, sDATA, sELSE, sFALSE, sFOR, sFROM, sFUNCTION, sIF,
|
sELSE, sFALSE, sFOR, sFROM, sFUNCTION, sIF, sINLINE, sIN, sINT, sINT16, sINT32, sINT64, sIS,
|
||||||
sINLINE, sIN, sINT, sINT16, sINT32, sINT64, sIS, sMINUS, sMOSTNEG, sMOSTPOS,
|
sMINUS, sMOSTNEG, sMOSTPOS, sNOT, sOF, sOFFSETOF, sOR, sPACKED, sPAR, sPLACE, sPLACED, sPLUS,
|
||||||
sNOT, sOF, sOFFSETOF, sOR, sPACKED, sPAR, sPLACE, sPLACED, sPLUS, sPORT,
|
sPORT, sPRI, sPROC, sPROCESSOR, sPROTOCOL, sREAL32, sREAL64, sRECORD, sREM, sRESHAPES, sRESULT,
|
||||||
sPRI, sPROC, sPROCESSOR, sPROTOCOL, sREAL32, sREAL64, sRECORD, sREM,
|
sRETYPES, sROUND, sSEQ, sSIZE, sSKIP, sSTOP, sTIMER, sTIMES, sTRUE, sTRUNC, sTYPE, sVAL, sVALOF,
|
||||||
sRESHAPES, sRESULT, sRETYPES, sROUND, sSEQ, sSIZE, sSKIP, sSTOP, sTIMER,
|
sWHILE, sWORKSPACE, sVECSPACE
|
||||||
sTIMES, sTRUE, sTRUNC, sTYPE, sVAL, sVALOF, sWHILE, sWORKSPACE, sVECSPACE
|
|
||||||
:: OccParser ()
|
:: OccParser ()
|
||||||
|
|
||||||
sAFTER = reserved "AFTER"
|
sAFTER = reserved "AFTER"
|
||||||
|
@ -140,6 +139,7 @@ sFUNCTION = reserved "FUNCTION"
|
||||||
sIF = reserved "IF"
|
sIF = reserved "IF"
|
||||||
sINLINE = reserved "INLINE"
|
sINLINE = reserved "INLINE"
|
||||||
sIN = reserved "IN"
|
sIN = reserved "IN"
|
||||||
|
sINITIAL = reserved "INITIAL"
|
||||||
sINT = reserved "INT"
|
sINT = reserved "INT"
|
||||||
sINT16 = reserved "INT16"
|
sINT16 = reserved "INT16"
|
||||||
sINT32 = reserved "INT32"
|
sINT32 = reserved "INT32"
|
||||||
|
@ -1272,6 +1272,7 @@ declOf spec newName
|
||||||
abbreviation :: OccParser A.Specification
|
abbreviation :: OccParser A.Specification
|
||||||
abbreviation
|
abbreviation
|
||||||
= valIsAbbrev
|
= valIsAbbrev
|
||||||
|
<|> initialIsAbbrev
|
||||||
<|> isAbbrev newVariableName variable
|
<|> isAbbrev newVariableName variable
|
||||||
<|> isAbbrev newChannelName channel
|
<|> isAbbrev newChannelName channel
|
||||||
<|> chanArrayAbbrev
|
<|> chanArrayAbbrev
|
||||||
|
@ -1290,6 +1291,16 @@ valIsAbbrev
|
||||||
return $ A.Specification m n $ A.IsExpr m A.ValAbbrev t e'
|
return $ A.Specification m n $ A.IsExpr m A.ValAbbrev t e'
|
||||||
<?> "VAL IS abbreviation"
|
<?> "VAL IS abbreviation"
|
||||||
|
|
||||||
|
initialIsAbbrev :: OccParser A.Specification
|
||||||
|
initialIsAbbrev
|
||||||
|
= do m <- md
|
||||||
|
(t, n) <- tryXVVX sINITIAL dataSpecifier newVariableName sIS
|
||||||
|
e <- expressionOfType t
|
||||||
|
sColon
|
||||||
|
eol
|
||||||
|
(e', _, _) <- constantFold e
|
||||||
|
return $ A.Specification m n $ A.IsExpr m A.Original t e'
|
||||||
|
|
||||||
isAbbrev :: OccParser A.Name -> OccParser A.Variable -> OccParser A.Specification
|
isAbbrev :: OccParser A.Name -> OccParser A.Variable -> OccParser A.Specification
|
||||||
isAbbrev newName oldVar
|
isAbbrev newName oldVar
|
||||||
= do m <- md
|
= do m <- md
|
||||||
|
|
Loading…
Reference in New Issue
Block a user