caml-parser-0.1.0.0: src/CamlParser/Lexer/Token.hs
module CamlParser.Lexer.Token where
data Token
= TokIdent String
| TokPrefix String
| TokInfix Int String
| TokSubtractive String
| TokInt Integer
| TokChar Char
| TokFloat Double
| TokString String
| TokEOF
-- Special symbols
| TokEqual | TokEqualEqual | TokSharp
| TokAmpersand | TokQuote | TokLParen | TokRParen
| TokStar | TokComma | TokMinusGreater | TokDot
| TokDotDot | TokDotLParen | TokDotLBracket
| TokColon | TokColonColon | TokColonEqual
| TokSemi | TokSemiSemi | TokLBracket | TokLBracketBar
| TokLBracketLess | TokLessMinus | TokRBracket
| TokUnderscore | TokUnderUnder | TokLBrace
| TokBar | TokBarRBracket | TokGreaterRBracket | TokRBrace
| TokAmpersandAmpersand | TokBarBar
-- Keywords
| TokAnd | TokAs | TokBegin | TokDo | TokDone | TokDownto
| TokElse | TokEnd | TokException | TokFor | TokFun
| TokFunction | TokIf | TokIn | TokLet | TokMatch
| TokMutable | TokNot | TokOf | TokOr | TokPref | TokRec
| TokThen | TokTo | TokTry | TokType | TokValue | TokWhen
| TokWhere | TokWhile | TokWith
-- Plugin-extensible tokens
| TokKeywordExt String String
deriving (Eq, Ord, Show)
isIdentToken :: Token -> Maybe String
isIdentToken (TokIdent s) = Just s
isIdentToken _ = Nothing