mirror of
https://github.com/GrammaticalFramework/gf-core.git
synced 2026-04-10 05:29:30 -06:00
178 lines
3.3 KiB
Haskell
178 lines
3.3 KiB
Haskell
----------------------------------------------------------------------
|
|
-- |
|
|
-- Module : GF.Grammar.Predef
|
|
-- Maintainer : kr.angelov
|
|
-- Stability : (stable)
|
|
-- Portability : (portable)
|
|
--
|
|
-- Predefined identifiers and labels which the compiler knows
|
|
----------------------------------------------------------------------
|
|
|
|
|
|
module GF.Grammar.Predef
|
|
( cType
|
|
, cPType
|
|
, cTok
|
|
, cStr
|
|
, cStrs
|
|
, cPredefAbs, cPredef
|
|
, cInt
|
|
, cFloat
|
|
, cString
|
|
, cInts
|
|
, cPBool
|
|
, cErrorType
|
|
, cOverload
|
|
, cUndefinedType
|
|
, isPredefCat
|
|
|
|
, cPTrue, cPFalse
|
|
|
|
, cLength, cDrop, cTake, cTk, cDp, cEqStr, cOccur
|
|
, cOccurs, cEqInt, cLessInt, cPlus, cShow, cRead
|
|
, cToStr, cMapStr, cError
|
|
|
|
-- hacks
|
|
, cMeta, cAs, cChar, cChars, cSeq, cAlt, cRep
|
|
, cNeg, cCNC, cConflict
|
|
) where
|
|
|
|
import GF.Infra.Ident
|
|
import qualified Data.ByteString.Char8 as BS
|
|
|
|
cType :: Ident
|
|
cType = identC (BS.pack "Type")
|
|
|
|
cPType :: Ident
|
|
cPType = identC (BS.pack "PType")
|
|
|
|
cTok :: Ident
|
|
cTok = identC (BS.pack "Tok")
|
|
|
|
cStr :: Ident
|
|
cStr = identC (BS.pack "Str")
|
|
|
|
cStrs :: Ident
|
|
cStrs = identC (BS.pack "Strs")
|
|
|
|
cPredefAbs :: Ident
|
|
cPredefAbs = identC (BS.pack "PredefAbs")
|
|
|
|
cPredef :: Ident
|
|
cPredef = identC (BS.pack "Predef")
|
|
|
|
cInt :: Ident
|
|
cInt = identC (BS.pack "Int")
|
|
|
|
cFloat :: Ident
|
|
cFloat = identC (BS.pack "Float")
|
|
|
|
cString :: Ident
|
|
cString = identC (BS.pack "String")
|
|
|
|
cInts :: Ident
|
|
cInts = identC (BS.pack "Ints")
|
|
|
|
cPBool :: Ident
|
|
cPBool = identC (BS.pack "PBool")
|
|
|
|
cErrorType :: Ident
|
|
cErrorType = identC (BS.pack "Error")
|
|
|
|
cOverload :: Ident
|
|
cOverload = identC (BS.pack "overload")
|
|
|
|
cUndefinedType :: Ident
|
|
cUndefinedType = identC (BS.pack "UndefinedType")
|
|
|
|
isPredefCat :: Ident -> Bool
|
|
isPredefCat c = elem c [cInt,cString,cFloat]
|
|
|
|
cPTrue :: Ident
|
|
cPTrue = identC (BS.pack "PTrue")
|
|
|
|
cPFalse :: Ident
|
|
cPFalse = identC (BS.pack "PFalse")
|
|
|
|
cLength :: Ident
|
|
cLength = identC (BS.pack "length")
|
|
|
|
cDrop :: Ident
|
|
cDrop = identC (BS.pack "drop")
|
|
|
|
cTake :: Ident
|
|
cTake = identC (BS.pack "take")
|
|
|
|
cTk :: Ident
|
|
cTk = identC (BS.pack "tk")
|
|
|
|
cDp :: Ident
|
|
cDp = identC (BS.pack "dp")
|
|
|
|
cEqStr :: Ident
|
|
cEqStr = identC (BS.pack "eqStr")
|
|
|
|
cOccur :: Ident
|
|
cOccur = identC (BS.pack "occur")
|
|
|
|
cOccurs :: Ident
|
|
cOccurs = identC (BS.pack "occurs")
|
|
|
|
cEqInt :: Ident
|
|
cEqInt = identC (BS.pack "eqInt")
|
|
|
|
cLessInt :: Ident
|
|
cLessInt = identC (BS.pack "lessInt")
|
|
|
|
cPlus :: Ident
|
|
cPlus = identC (BS.pack "plus")
|
|
|
|
cShow :: Ident
|
|
cShow = identC (BS.pack "show")
|
|
|
|
cRead :: Ident
|
|
cRead = identC (BS.pack "read")
|
|
|
|
cToStr :: Ident
|
|
cToStr = identC (BS.pack "toStr")
|
|
|
|
cMapStr :: Ident
|
|
cMapStr = identC (BS.pack "mapStr")
|
|
|
|
cError :: Ident
|
|
cError = identC (BS.pack "error")
|
|
|
|
|
|
--- hacks: dummy identifiers used in various places
|
|
--- Not very nice!
|
|
|
|
cMeta :: Ident
|
|
cMeta = identC (BS.singleton '?')
|
|
|
|
cAs :: Ident
|
|
cAs = identC (BS.singleton '@')
|
|
|
|
cChar :: Ident
|
|
cChar = identC (BS.singleton '?')
|
|
|
|
cChars :: Ident
|
|
cChars = identC (BS.pack "[]")
|
|
|
|
cSeq :: Ident
|
|
cSeq = identC (BS.pack "+")
|
|
|
|
cAlt :: Ident
|
|
cAlt = identC (BS.pack "|")
|
|
|
|
cRep :: Ident
|
|
cRep = identC (BS.pack "*")
|
|
|
|
cNeg :: Ident
|
|
cNeg = identC (BS.pack "-")
|
|
|
|
cCNC :: Ident
|
|
cCNC = identC (BS.pack "CNC")
|
|
|
|
cConflict :: Ident
|
|
cConflict = IC (BS.pack "#conflict")
|