Added a translation routine to the Types module to turn occam operators into C-friendly names
This commit is contained in:
parent
3fd373e4ac
commit
62dfdec9ab
|
@ -22,7 +22,7 @@ module Types
|
|||
specTypeOfName, typeOfSpec, typeOfSpec', abbrevModeOfName, underlyingType, stripArrayType, abbrevModeOfVariable, abbrevModeOfSpec
|
||||
, isRealType, isIntegerType, isNumericType, isCaseableType, isScalarType, isDataType, isCommunicableType, isSequenceType, isMobileType
|
||||
, resolveUserType, isSafeConversion, isPreciseConversion, isImplicitConversionRain
|
||||
, isOperator, functionOperator, occamDefaultOperator
|
||||
, isOperator, functionOperator, occamDefaultOperator, occamBuiltInOperatorFunctions
|
||||
, returnTypesOfFunction
|
||||
, BytesInResult(..), bytesInType, countReplicator, countStructured, computeStructured
|
||||
|
||||
|
@ -751,12 +751,41 @@ operatorNames =
|
|||
-- will later be suffixed by the types in question.
|
||||
occamOperatorTranslateDefault :: String -> String
|
||||
occamOperatorTranslateDefault "+" = "add"
|
||||
occamOperatorTranslateDefault "-" = "subtr"
|
||||
occamOperatorTranslateDefault "*" = "mul"
|
||||
occamOperatorTranslateDefault "/" = "div"
|
||||
occamOperatorTranslateDefault "TIMES" = "times"
|
||||
occamOperatorTranslateDefault "PLUS" = "plus"
|
||||
occamOperatorTranslateDefault "MINUS" = "minus"
|
||||
occamOperatorTranslateDefault "AFTER" = "after"
|
||||
occamOperatorTranslateDefault ">" = "more"
|
||||
occamOperatorTranslateDefault "<" = "less"
|
||||
occamOperatorTranslateDefault ">=" = "moreEq"
|
||||
occamOperatorTranslateDefault "<=" = "lessEq"
|
||||
occamOperatorTranslateDefault "=" = "eq"
|
||||
occamOperatorTranslateDefault "<>" = "notEq"
|
||||
occamOperatorTranslateDefault "\\" = "rem"
|
||||
occamOperatorTranslateDefault "REM" = "REM"
|
||||
occamOperatorTranslateDefault "/\\" = "and"
|
||||
occamOperatorTranslateDefault "\\/" = "or"
|
||||
occamOperatorTranslateDefault "><" = "xor"
|
||||
occamOperatorTranslateDefault "<<" = "lshift"
|
||||
occamOperatorTranslateDefault ">>" = "rshift"
|
||||
occamOperatorTranslateDefault "AND" = "and"
|
||||
occamOperatorTranslateDefault "OR" = "or"
|
||||
occamOperatorTranslateDefault "NOT" = "not"
|
||||
occamOperatorTranslateDefault "~" = "not"
|
||||
occamOperatorTranslateDefault cs = '_' : concatMap (show . ord) cs
|
||||
|
||||
occamDefaultOperator :: String -> [A.Type] -> String
|
||||
occamDefaultOperator op ts = "occam_" ++ occamOperatorTranslateDefault op
|
||||
++ concatMap (('_':) . showOccam) ts
|
||||
|
||||
occamBuiltInOperatorFunctions :: [String]
|
||||
occamBuiltInOperatorFunctions
|
||||
= [occamDefaultOperator n ts
|
||||
| (n, _, ts) <- occamIntrinsicOperators]
|
||||
|
||||
-- | Add one to an expression.
|
||||
addOne :: (CSMR m, Die m) => A.Expression -> m A.Expression
|
||||
addOne e = addExprs (makeConstant m 1) e
|
||||
|
|
Loading…
Reference in New Issue
Block a user