module CSPM.Parser.Tokens ( Token(..), LToken, Model(..), ) where import CSPM.DataStructures.Syntax (Model(..)) import CSPM.PrettyPrinter import Util.Annotated import Util.PrettyPrint data Token = TInteger Int | TChar Char | TString String | TFalse | TTrue | TIdent String | TPrint String | TRefines Model | TModel Model | TTauPriority | TDeadlockFree | TDivergenceFree | TLivelockFree | TDeterministic | TNewLine | TDefineEqual | TModule | TExports | TEndModule | TScope | TInstance | TOfType | TYield | TYieldStar | TTimed | TComma | TDot | TExclamationMark | TQuestionMark | TDollar | TPipe | TDoubleDot | TColon | TDrawnFrom | TTie -- "<->" | TDoubleAt | TWildCard | TIf | TThen | TElse | TLet | TWithin | TBackSlash | TLambdaDot | TChannel | TAssert | TAssertNot | TDataType | TSubType | TExternal | TTransparent | TNameType | TSemiColon | TGuard | TNot | TAnd | TOr | TEq | TNotEq | TLtEq | TGtEq | TLt | TGt | TPlus | TMinus | TTimes | TDivide | TMod | TCloseSeq | TEmptySeq | TConcat | THash | TLParen | TRParen | TLBrace | TRBrace | TLPipeBrace | TRPipeBrace | TLDoubleSqBracket | TRDoubleSqBracket | TLPipeSqBracket | TRPipeSqBracket | TLSqBracket | TRSqBracket | TExtChoice | TIntChoice | TInterleave | TPrefix | TInterrupt | TSlidingChoice | TRException | TParallel | TLSyncInterrupt | TRSyncInterrupt | TLSyncExtChoice | TRSyncExtChoice | TLMap | TRMap | TEOF deriving Eq type LToken = Located Token instance Show Token where show t = show (prettyPrint t) instance PrettyPrintable Token where prettyPrint (TInteger i) = int i prettyPrint (TChar c) = quotes (char c) prettyPrint (TString s) = doubleQuotes (text s) prettyPrint TFalse = text "false" prettyPrint TTrue = text "true" prettyPrint (TIdent s) = text s prettyPrint (TPrint s) = text "print" <+> text s prettyPrint (TRefines m) = char '[' <> prettyPrint m <> char '=' prettyPrint (TModel m) = char '[' <> prettyPrint m <> char ']' prettyPrint TTauPriority = text "tau priority" prettyPrint TDeadlockFree = text "deadlock free" prettyPrint TDivergenceFree = text "divergence free" prettyPrint TLivelockFree = text "livelock free" prettyPrint TDeterministic = text "deterministic" prettyPrint TNewLine = text "" prettyPrint TDefineEqual = char '=' prettyPrint TModule = text "module" prettyPrint TExports = text "exports" prettyPrint TEndModule = text "endmodule" prettyPrint TScope = text "::" prettyPrint TInstance = text "instance" prettyPrint TOfType = text "::" prettyPrint TYield = text "=>" prettyPrint TYieldStar = text "=>*" prettyPrint TTimed = text "Timed" prettyPrint TComma = char ',' prettyPrint TDot = char '.' prettyPrint TExclamationMark = char '!' prettyPrint TQuestionMark = char '?' prettyPrint TDollar = char '$' prettyPrint TPipe = char '|' prettyPrint TDoubleDot = text ".." prettyPrint TColon = char ':' prettyPrint TDrawnFrom = text "<-" prettyPrint TTie = text "<->" prettyPrint TDoubleAt = text "@@" prettyPrint TWildCard = char '_' prettyPrint TIf = text "if" prettyPrint TThen = text "then" prettyPrint TElse = text "else" prettyPrint TLet = text "let" prettyPrint TWithin = text "within" prettyPrint TBackSlash = char '\\' prettyPrint TLambdaDot = char '@' prettyPrint TChannel = text "channel" prettyPrint TAssert = text "assert" prettyPrint TAssertNot = text "not" prettyPrint TDataType = text "datatype" prettyPrint TSubType = text "subtype" prettyPrint TExternal = text "external" prettyPrint TTransparent = text "transparent" prettyPrint TNameType = text "nametype" prettyPrint TSemiColon = char ';' prettyPrint TGuard = char '&' prettyPrint TNot = text "not" prettyPrint TAnd = text "and" prettyPrint TOr = text "or" prettyPrint TEq = text "==" prettyPrint TNotEq = text "!=" prettyPrint TLtEq = text "<=" prettyPrint TGtEq = text ">=" prettyPrint TLt = char '<' prettyPrint TGt = char '>' prettyPrint TPlus = char '+' prettyPrint TMinus = char '-' prettyPrint TTimes = char '*' prettyPrint TDivide = char '/' prettyPrint TMod = char '%' prettyPrint TCloseSeq = char '<' prettyPrint TEmptySeq = text "<>" prettyPrint TConcat = char '^' prettyPrint THash = char '#' prettyPrint TLParen = char '(' prettyPrint TRParen = char ')' prettyPrint TLBrace = char '{' prettyPrint TRBrace = char '}' prettyPrint TLPipeBrace = text "{|" prettyPrint TRPipeBrace = text "|}" prettyPrint TLDoubleSqBracket = text "[[" prettyPrint TRDoubleSqBracket = text "]]" prettyPrint TLPipeSqBracket = text "[|" prettyPrint TRPipeSqBracket = text "|]" prettyPrint TLSqBracket = text "[" prettyPrint TRSqBracket = text "]" prettyPrint TExtChoice = text "[]" prettyPrint TIntChoice = text "|~|" prettyPrint TInterleave = text "|||" prettyPrint TPrefix = text "->" prettyPrint TInterrupt = text "/\\" prettyPrint TSlidingChoice = text "[>" prettyPrint TRException = text "|>" prettyPrint TParallel = text "||" prettyPrint TLSyncInterrupt = text "/+" prettyPrint TRSyncInterrupt = text "+\\" prettyPrint TLSyncExtChoice = text "[+" prettyPrint TRSyncExtChoice = text "+]" prettyPrint TLMap = text "(|" prettyPrint TRMap = text "|)" prettyPrint TEOF = text "EOF"