Safe Haskell | None |
---|
Yi.Lexer.JavaScript
- initState :: HlState
- alexScanToken :: (AlexState HlState, AlexInput) -> Maybe (Tok Token, (AlexState HlState, AlexInput))
- tokenToStyle :: Token -> UIStyle -> Style
- type TT = Tok Token
- data Token
- data Reserved
- data Operator
- = Add'
- | Subtract'
- | Multiply'
- | Divide'
- | Modulo'
- | Increment'
- | Decrement'
- | Assign'
- | AddAssign'
- | SubtractAssign'
- | MultiplyAssign'
- | DivideAssign'
- | ModuloAssign'
- | Equals'
- | NotEquals'
- | GT'
- | GTE'
- | LT'
- | LTE'
- | EqualsType'
- | NotEqualsType'
- | And'
- | Or'
- | Not'
- | BitAnd'
- | BitOr'
- | BitXor'
- | LeftShift'
- | RightShift'
- | RightShiftZ'
- | BitNot'
- | Qualify'
- type HlState = Int
- prefixOperators :: [Operator]
- infixOperators :: [Operator]
- postfixOperators :: [Operator]
Documentation
alexScanToken :: (AlexState HlState, AlexInput) -> Maybe (Tok Token, (AlexState HlState, AlexInput))Source
Scan one token. Return (maybe) a token and a new state.
tokenToStyle :: Token -> UIStyle -> StyleSource
Takes a Token
and returns a style to be used for that type of token.
TODO: The elem
check is potentially unnecessarily slow. We could split
the Const constructor into two different ones, one for builtins and one for
others.
The different tokens.
The constructors for Reserved
have an apostrophe as a suffix because
Default
is already used. Also note that Undefined'
is not intended as
some sort of backup reserved word for things we don't care about -- it
really means the undefined built-in in JavaScript.
The constructors for Operator
have an apostrophe as a suffix because
e.g. LT
is already used by Prelude
.
Constructors
prefixOperators :: [Operator]Source
Prefix operators. NOTE: Add' is also a valid prefix operator, but since it's completely useless in the real world, we don't care about it here. Doing this makes parsing much, much easier.
infixOperators :: [Operator]Source
Infix operators.
postfixOperators :: [Operator]Source
Postfix operators.