yi-language-0.1.0.8: Collection of language-related Yi libraries.

Safe HaskellNone

Yi.Lexer.JavaScript

Synopsis

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.

data Token Source

The different tokens.

Constructors

Unknown 
Res !Reserved 
Str !String 
Rex !String 
Op !Operator 
Special !Char 
Number !String 
ValidName !String 
Comment !CommentType 
Const !String 

Instances

Eq Token 
Show Token 

data Reserved Source

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.

Instances

Eq Reserved 
Show Reserved 

data Operator Source

The constructors for Operator have an apostrophe as a suffix because e.g. LT is already used by Prelude.

Instances

Eq Operator 
Show Operator 

type HlState = IntSource

HlState is 0 when outside of a multi-line comment and -1 when inside one.

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.