packages feed

vintage-basic-1.0: src/Language/VintageBasic/Builtins.hs

-- | A representation of BASIC's builtin functions.

module Language.VintageBasic.Builtins where

-- | An enumeration of BASIC's builtin functions.
data Builtin =
    AbsBI | AscBI | AtnBI | ChrBI | CosBI | ExpBI | IntBI | LeftBI | LenBI | LogBI | MidBI
    | RightBI | RndBI | SgnBI | SinBI | SpcBI | StrBI | SqrBI | TabBI | TanBI | ValBI
    deriving (Show,Eq)

-- | An association list mapping BASIC builtins to their string representation.
-- It is used forwards to print BASIC code, and backwards to parse BASIC code.
builtinToStrAssoc :: [(Builtin, String)]
builtinToStrAssoc = [
    (AbsBI,   "ABS"   ),
    (AscBI,   "ASC"   ),
    (AtnBI,   "ATN"   ),
    (ChrBI,   "CHR$"  ),
    (CosBI,   "COS"   ),
    (ExpBI,   "EXP"   ),
    (IntBI,   "INT"   ),
    (LeftBI,  "LEFT$" ),
    (LenBI,   "LEN"   ),
    (LogBI,   "LOG"   ),
    (MidBI,   "MID$"  ),
    (RightBI, "RIGHT$"),
    (RndBI,   "RND"   ),
    (SgnBI,   "SGN"   ),
    (SinBI,   "SIN"   ),
    (SpcBI,   "SPC"   ),
    (StrBI,   "STR$"  ),
    (SqrBI,   "SQR"   ),
    (TabBI,   "TAB"   ),
    (TanBI,   "TAN"   ),
    (ValBI,   "VAL"   )
  ]