---------------------------------------------------------------------- -- | -- Module : GF.Grammar.Predef -- Maintainer : kr.angelov -- Stability : (stable) -- Portability : (portable) -- -- Predefined identifiers and labels which the compiler knows ---------------------------------------------------------------------- module GF.Grammar.Predef where import GF.Infra.Ident(Ident,identS,moduleNameS) cType = identS "Type" cPType = identS "PType" cTok = identS "Tok" cStr = identS "Str" cStrs = identS "Strs" cPredefAbs = moduleNameS "PredefAbs" cPredefCnc = moduleNameS "PredefCnc" cPredef = moduleNameS "Predef" cInt = identS "Int" cFloat = identS "Float" cString = identS "String" cVar = identS "__gfVar" cInts = identS "Ints" cPBool = identS "PBool" cErrorType = identS "Error" cOverload = identS "overload" cUndefinedType = identS "UndefinedType" cNonExist = identS "nonExist" cBIND = identS "BIND" cSOFT_BIND = identS "SOFT_BIND" cSOFT_SPACE = identS "SOFT_SPACE" cCAPIT = identS "CAPIT" cALL_CAPIT = identS "ALL_CAPIT" isPredefCat :: Ident -> Bool isPredefCat c = elem c [cInt,cString,cFloat] cPTrue = identS "PTrue" cPFalse = identS "PFalse" cLength = identS "length" cDrop = identS "drop" cTake = identS "take" cTk = identS "tk" cDp = identS "dp" cToUpper = identS "toUpper" cToLower = identS "toLower" cIsUpper = identS "isUpper" cEqStr = identS "eqStr" cEqVal = identS "eqVal" cOccur = identS "occur" cOccurs = identS "occurs" cEqInt = identS "eqInt" cLessInt = identS "lessInt" cPlus = identS "plus" cShow = identS "show" cRead = identS "read" cToStr = identS "toStr" cMapStr = identS "mapStr" cError = identS "error" cTrace = identS "trace" -- * Hacks: dummy identifiers used in various places. -- Not very nice! cMeta = identS "?" cAs = identS "@" cChar = identS "?" cChars = identS "[]" cSeq = identS "+" cAlt = identS "|" cRep = identS "*" cNeg = identS "-" cCNC = identS "CNC" cConflict = identS "#conflict"