mirror of
https://github.com/MidnightCommander/mc
synced 2024-12-22 12:32:40 +03:00
6f6ea1bc88
Signed-off-by: Mikhail S. Pobolovets <styx.mp@gmail.com>
284 lines
8.5 KiB
YAML
284 lines
8.5 KiB
YAML
# 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
|
||
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
|
||
|
||
#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
|
||
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 '\\\{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
|