2009-01-10 16:35:31 +03:00
|
|
|
|
# Author : Sergei Trofimovich <slyfox@inbox.ru>
|
|
|
|
|
# Language : haskell
|
|
|
|
|
#
|
|
|
|
|
# 'Syntax rules for the C and the C++ programming languages' is taken as base
|
|
|
|
|
# (haskell compilers support CPP macros)
|
|
|
|
|
#
|
|
|
|
|
# haskell keywords and reserved symbols are grabbed from ghc-6.10.1/compiler/parser/Lexer.hs
|
|
|
|
|
|
|
|
|
|
context default
|
|
|
|
|
|
|
|
|
|
# haskell keywords
|
|
|
|
|
|
|
|
|
|
# reserved keywords:
|
|
|
|
|
|
|
|
|
|
# unused symbols
|
|
|
|
|
keyword whole _\[0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz\] brightmagenta
|
|
|
|
|
|
|
|
|
|
keyword whole as yellow
|
|
|
|
|
keyword whole case yellow
|
|
|
|
|
keyword whole class yellow
|
|
|
|
|
keyword whole data yellow
|
|
|
|
|
keyword whole default yellow
|
|
|
|
|
keyword whole deriving yellow
|
|
|
|
|
keyword whole do yellow
|
|
|
|
|
keyword whole else yellow
|
|
|
|
|
keyword whole hiding yellow
|
|
|
|
|
keyword whole if yellow
|
|
|
|
|
keyword whole import yellow
|
|
|
|
|
keyword whole in yellow
|
|
|
|
|
keyword whole infix yellow
|
|
|
|
|
keyword whole infixl yellow
|
|
|
|
|
keyword whole infixr yellow
|
|
|
|
|
keyword whole instance yellow
|
|
|
|
|
keyword whole let yellow
|
|
|
|
|
keyword whole module yellow
|
|
|
|
|
keyword whole newtype yellow
|
|
|
|
|
keyword whole of yellow
|
|
|
|
|
keyword whole qualified yellow
|
|
|
|
|
keyword whole then yellow
|
|
|
|
|
keyword whole type yellow
|
|
|
|
|
keyword whole where yellow
|
|
|
|
|
|
|
|
|
|
# extension keywords
|
|
|
|
|
keyword whole forall yellow
|
|
|
|
|
keyword whole mdo yellow
|
|
|
|
|
keyword whole family yellow
|
|
|
|
|
keyword whole group yellow
|
|
|
|
|
keyword whole by yellow
|
|
|
|
|
keyword whole using yellow
|
|
|
|
|
|
|
|
|
|
# ffi
|
|
|
|
|
keyword whole foreign yellow
|
|
|
|
|
keyword whole export yellow
|
|
|
|
|
keyword whole label yellow
|
|
|
|
|
keyword whole dynamic yellow
|
|
|
|
|
keyword whole safe yellow
|
|
|
|
|
keyword whole threadsafe yellow
|
|
|
|
|
keyword whole unsafe yellow
|
|
|
|
|
keyword whole stdcall yellow
|
|
|
|
|
keyword whole ccall yellow
|
|
|
|
|
keyword whole dotnet yellow
|
|
|
|
|
|
|
|
|
|
keyword whole rec yellow
|
|
|
|
|
keyword whole proc yellow
|
|
|
|
|
|
|
|
|
|
# other
|
|
|
|
|
keyword . white
|
|
|
|
|
# keyword whole .. white
|
|
|
|
|
|
|
|
|
|
# unboxed (started from upcase)
|
|
|
|
|
keyword whole \{ABCDEFGHIJKLMNOPQRSTUVWXYZ\}\[0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz\]# white
|
|
|
|
|
# types/modules
|
|
|
|
|
keyword whole \{ABCDEFGHIJKLMNOPQRSTUVWXYZ\}\[0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz\] white
|
|
|
|
|
|
|
|
|
|
# C keywords (TODO: remove unused in haskell source)
|
|
|
|
|
keyword whole auto yellow
|
|
|
|
|
keyword whole break yellow
|
|
|
|
|
keyword whole case yellow
|
|
|
|
|
keyword whole char yellow
|
|
|
|
|
keyword whole const yellow
|
|
|
|
|
keyword whole continue yellow
|
|
|
|
|
keyword whole do yellow
|
|
|
|
|
keyword whole double yellow
|
|
|
|
|
keyword whole else yellow
|
|
|
|
|
keyword whole enum yellow
|
|
|
|
|
keyword whole extern yellow
|
|
|
|
|
keyword whole float yellow
|
|
|
|
|
keyword whole for yellow
|
|
|
|
|
keyword whole goto yellow
|
|
|
|
|
keyword whole if yellow
|
|
|
|
|
keyword whole int yellow
|
|
|
|
|
keyword whole long yellow
|
|
|
|
|
keyword whole register yellow
|
|
|
|
|
keyword whole return yellow
|
|
|
|
|
keyword whole short yellow
|
|
|
|
|
keyword whole signed yellow
|
|
|
|
|
keyword whole sizeof yellow
|
|
|
|
|
keyword whole static yellow
|
|
|
|
|
keyword whole struct yellow
|
|
|
|
|
keyword whole switch yellow
|
|
|
|
|
keyword whole typedef yellow
|
|
|
|
|
keyword whole union yellow
|
|
|
|
|
keyword whole unsigned yellow
|
|
|
|
|
keyword whole void yellow
|
|
|
|
|
keyword whole volatile yellow
|
|
|
|
|
keyword whole while yellow
|
|
|
|
|
keyword whole asm yellow
|
|
|
|
|
keyword whole inline yellow
|
|
|
|
|
keyword whole wchar_t yellow
|
|
|
|
|
keyword whole ... yellow
|
|
|
|
|
keyword whole linestart \{\s\t\}\[\s\t\]#*\n brightmagenta
|
|
|
|
|
keyword whole \[\s\t\]default yellow
|
|
|
|
|
keyword whole linestart \[\s\t\]\{ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz\}\[0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz\]: cyan
|
|
|
|
|
|
|
|
|
|
#digits
|
2010-04-04 20:24:13 +04:00
|
|
|
|
keyword whole 0\{xX\}\{0123456789abcdefABCDEF\}\[0123456789abcdefABCDEF\] brightgreen
|
|
|
|
|
keyword whole \{0123456789\}\[0123456789\] brightgreen
|
|
|
|
|
keyword whole \[0123456789\]\.\{0123456789\}\[0123456789\] brightgreen
|
|
|
|
|
keyword whole \{0123456789\}\[0123456789\]\.\[0123456789\] brightgreen
|
|
|
|
|
keyword whole \{0123456789\}\[0123456789\]\{eE\}\{0123456789\}\[0123456789\] brightgreen
|
|
|
|
|
keyword whole \{0123456789\}\[0123456789\]\{eE\}\{\-\+\}\{0123456789\}\[0123456789\] brightgreen
|
|
|
|
|
keyword whole \{0123456789\}\[0123456789\]\.\{0123456789\}\[0123456789\]\{eE\}\{0123456789\}\[0123456789\] brightgreen
|
|
|
|
|
keyword whole \{0123456789\}\[0123456789\]\.\{0123456789\}\[0123456789\]\{eE\}\{\-\+\}\{0123456789\}\[0123456789\] brightgreen
|
2009-01-10 16:35:31 +03:00
|
|
|
|
|
|
|
|
|
#comments
|
|
|
|
|
keyword {- brown
|
|
|
|
|
keyword -} brown
|
|
|
|
|
keyword -- brown
|
|
|
|
|
|
|
|
|
|
keyword \*/ brown
|
|
|
|
|
keyword /\* brown
|
|
|
|
|
keyword // brown
|
|
|
|
|
|
|
|
|
|
keyword '\\\{"abtnvfr\}' brightgreen
|
|
|
|
|
|
|
|
|
|
#haskell standalone char escapes
|
|
|
|
|
keyword '\\NUL' brightgreen
|
|
|
|
|
keyword '\\SOH' brightgreen
|
|
|
|
|
keyword '\\STX' brightgreen
|
|
|
|
|
keyword '\\ETX' brightgreen
|
|
|
|
|
keyword '\\EOT' brightgreen
|
|
|
|
|
keyword '\\ENQ' brightgreen
|
|
|
|
|
keyword '\\ACK' brightgreen
|
|
|
|
|
keyword '\\BEL' brightgreen
|
2010-04-04 20:24:13 +04:00
|
|
|
|
keyword '\\BS' brightgreen
|
|
|
|
|
keyword '\\HT' brightgreen
|
|
|
|
|
keyword '\\LF' brightgreen
|
|
|
|
|
keyword '\\VT' brightgreen
|
|
|
|
|
keyword '\\FF' brightgreen
|
|
|
|
|
keyword '\\CR' brightgreen
|
|
|
|
|
keyword '\\SO' brightgreen
|
|
|
|
|
keyword '\\SI' brightgreen
|
2009-01-10 16:35:31 +03:00
|
|
|
|
keyword '\\DLE' brightgreen
|
|
|
|
|
keyword '\\DC1' brightgreen
|
|
|
|
|
keyword '\\DC2' brightgreen
|
|
|
|
|
keyword '\\DC3' brightgreen
|
|
|
|
|
keyword '\\DC4' brightgreen
|
|
|
|
|
keyword '\\NAK' brightgreen
|
|
|
|
|
keyword '\\SYN' brightgreen
|
|
|
|
|
keyword '\\ETB' brightgreen
|
|
|
|
|
keyword '\\CAN' brightgreen
|
2010-04-04 20:24:13 +04:00
|
|
|
|
keyword '\\EM' brightgreen
|
2009-01-10 16:35:31 +03:00
|
|
|
|
keyword '\\SUB' brightgreen
|
|
|
|
|
keyword '\\ESC' brightgreen
|
2010-04-04 20:24:13 +04:00
|
|
|
|
keyword '\\FS' brightgreen
|
|
|
|
|
keyword '\\GS' brightgreen
|
|
|
|
|
keyword '\\RS' brightgreen
|
|
|
|
|
keyword '\\US' brightgreen
|
|
|
|
|
keyword '\\SP' brightgreen
|
2009-01-10 16:35:31 +03:00
|
|
|
|
keyword '\\DEL' brightgreen
|
|
|
|
|
|
|
|
|
|
keyword '\\\{0123\}\{01234567\}\{01234567\}' brightgreen
|
|
|
|
|
keyword '\\'' brightgreen
|
|
|
|
|
keyword '\\\\' brightgreen
|
|
|
|
|
keyword '\\0' brightgreen
|
|
|
|
|
keyword '\{\s!"#$%&()\*\+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~<7E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\}' brightgreen
|
|
|
|
|
|
|
|
|
|
# some punctuation characters
|
|
|
|
|
keyword whole $ yellow
|
|
|
|
|
keyword whole ! white
|
|
|
|
|
keyword whole && white
|
|
|
|
|
keyword whole \* yellow
|
|
|
|
|
keyword whole \+ yellow
|
|
|
|
|
keyword whole / yellow
|
|
|
|
|
keyword whole < yellow
|
|
|
|
|
keyword whole > yellow
|
|
|
|
|
keyword whole ^ white
|
|
|
|
|
keyword whole || white
|
|
|
|
|
keyword whole | white
|
|
|
|
|
|
|
|
|
|
keyword ~ white
|
|
|
|
|
keyword , brightcyan
|
|
|
|
|
keyword - yellow
|
|
|
|
|
keyword : brightcyan
|
|
|
|
|
keyword ; yellow
|
|
|
|
|
keyword = yellow
|
|
|
|
|
keyword { white
|
|
|
|
|
keyword } white
|
|
|
|
|
keyword [ brightcyan
|
|
|
|
|
keyword ] brightcyan
|
|
|
|
|
keyword ( brightcyan
|
|
|
|
|
keyword ) brightcyan
|
|
|
|
|
|
|
|
|
|
# comments
|
|
|
|
|
context exclusive /\* \*/ brown
|
|
|
|
|
spellcheck
|
|
|
|
|
|
|
|
|
|
context exclusive {-# #-} green
|
|
|
|
|
spellcheck
|
|
|
|
|
|
|
|
|
|
context exclusive {- -} brown
|
|
|
|
|
spellcheck
|
|
|
|
|
|
|
|
|
|
context exclusive // \n brown
|
|
|
|
|
spellcheck
|
|
|
|
|
|
|
|
|
|
context exclusive \-\- \n brown
|
|
|
|
|
spellcheck
|
|
|
|
|
|
|
|
|
|
# C macros
|
|
|
|
|
context linestart # \n brightred
|
|
|
|
|
keyword \\\n yellow
|
|
|
|
|
keyword /\**\*/ brown
|
|
|
|
|
keyword //*\n brown
|
|
|
|
|
keyword "+" red
|
|
|
|
|
keyword <+> red
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
context " " green
|
|
|
|
|
spellcheck
|
|
|
|
|
|
|
|
|
|
#haskell escapes in ""s
|
|
|
|
|
keyword \\NUL brightgreen
|
|
|
|
|
keyword \\SOH brightgreen
|
|
|
|
|
keyword \\STX brightgreen
|
|
|
|
|
keyword \\ETX brightgreen
|
|
|
|
|
keyword \\EOT brightgreen
|
|
|
|
|
keyword \\ENQ brightgreen
|
|
|
|
|
keyword \\ACK brightgreen
|
|
|
|
|
keyword \\BEL brightgreen
|
|
|
|
|
keyword \\BS brightgreen
|
|
|
|
|
keyword \\HT brightgreen
|
|
|
|
|
keyword \\LF brightgreen
|
|
|
|
|
keyword \\VT brightgreen
|
|
|
|
|
keyword \\FF brightgreen
|
|
|
|
|
keyword \\CR brightgreen
|
|
|
|
|
keyword \\SO brightgreen
|
|
|
|
|
keyword \\SI brightgreen
|
|
|
|
|
keyword \\DLE brightgreen
|
|
|
|
|
keyword \\DC1 brightgreen
|
|
|
|
|
keyword \\DC2 brightgreen
|
|
|
|
|
keyword \\DC3 brightgreen
|
|
|
|
|
keyword \\DC4 brightgreen
|
|
|
|
|
keyword \\NAK brightgreen
|
|
|
|
|
keyword \\SYN brightgreen
|
|
|
|
|
keyword \\ETB brightgreen
|
|
|
|
|
keyword \\CAN brightgreen
|
|
|
|
|
keyword \\EM brightgreen
|
|
|
|
|
keyword \\SUB brightgreen
|
|
|
|
|
keyword \\ESC brightgreen
|
|
|
|
|
keyword \\FS brightgreen
|
|
|
|
|
keyword \\GS brightgreen
|
|
|
|
|
keyword \\RS brightgreen
|
|
|
|
|
keyword \\US brightgreen
|
|
|
|
|
keyword \\SP brightgreen
|
|
|
|
|
keyword \\DEL brightgreen
|
|
|
|
|
|
|
|
|
|
keyword \\" brightgreen
|
|
|
|
|
keyword %% brightgreen
|
|
|
|
|
keyword %\[#0\s-\+,\]\[0123456789\*\]\[.\]\[0123456789\*\]\[L\]\{eEfgGoxX\} brightgreen
|
|
|
|
|
keyword %\[0\s-\+,\]\[0123456789\*\]\[.\]\[0123456789\*\]\[hl\]\{diuxX\} brightgreen
|
|
|
|
|
keyword %\[hl\]n brightgreen
|
|
|
|
|
keyword %\[-\]\[0123456789\*\]\[.\]\[0123456789\*\]s brightgreen
|
|
|
|
|
keyword %[*] brightgreen
|
|
|
|
|
keyword %c brightgreen
|
|
|
|
|
keyword %p brightgreen
|
|
|
|
|
keyword \\\{0123\}\{01234567\}\{01234567\} brightgreen
|
|
|
|
|
keyword \\\\ brightgreen
|
|
|
|
|
keyword \\' brightgreen
|
|
|
|
|
keyword \\\{abtnvfr\} brightgreen
|
|
|
|
|
|
|
|
|
|
# infix binop
|
|
|
|
|
context exclusive ` ` white
|