Radix cross Linux

The main Radix cross Linux repository contains the build scripts of packages, which have the most complete and common functionality for desktop machines

452 Commits   2 Branches   1 Tag
# 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\] color90

    keyword whole as color19
    keyword whole case color19
    keyword whole class color19
    keyword whole data color19
    keyword whole default color19
    keyword whole deriving color19
    keyword whole do color19
    keyword whole else color19
    keyword whole hiding color19
    keyword whole if color19
    keyword whole import color19
    keyword whole in color19
    keyword whole infix color19
    keyword whole infixl color19
    keyword whole infixr color19
    keyword whole instance color19
    keyword whole let color19
    keyword whole module color19
    keyword whole newtype color19
    keyword whole of color19
    keyword whole qualified color19
    keyword whole then color19
    keyword whole type color19
    keyword whole where color19

#   extension keywords
    keyword whole forall color19
    keyword whole mdo color19
    keyword whole family color19
    keyword whole group color19
    keyword whole by color19
    keyword whole using color19

#   ffi
    keyword whole foreign color19
    keyword whole export color19
    keyword whole label color19
    keyword whole dynamic color19
    keyword whole safe color19
    keyword whole threadsafe color19
    keyword whole unsafe color19
    keyword whole stdcall color19
    keyword whole ccall color19
    keyword whole dotnet color19

    keyword whole rec color19
    keyword whole proc color19

#   other
    keyword . color243
#    keyword whole .. color243

#   unboxed (started from upcase)
    keyword whole \{ABCDEFGHIJKLMNOPQRSTUVWXYZ\}\[0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz\]# color243
#   types/modules
    keyword whole \{ABCDEFGHIJKLMNOPQRSTUVWXYZ\}\[0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz\] color243

# C keywords (TODO: remove unused in haskell source)
    keyword whole auto color19
    keyword whole break color19
    keyword whole case color19
    keyword whole char color19
    keyword whole const color19
    keyword whole continue color19
    keyword whole do color19
    keyword whole double color19
    keyword whole else color19
    keyword whole enum color19
    keyword whole extern color19
    keyword whole float color19
    keyword whole for color19
    keyword whole goto color19
    keyword whole if color19
    keyword whole int color19
    keyword whole long color19
    keyword whole register color19
    keyword whole return color19
    keyword whole short color19
    keyword whole signed color19
    keyword whole sizeof color19
    keyword whole static color19
    keyword whole struct color19
    keyword whole switch color19
    keyword whole typedef color19
    keyword whole union color19
    keyword whole unsigned color19
    keyword whole void color19
    keyword whole volatile color19
    keyword whole while color19
    keyword whole asm color19
    keyword whole inline color19
    keyword whole wchar_t color19
    keyword whole ... color19
    keyword whole linestart \{\s\t\}\[\s\t\]#*\n color90
    keyword whole \[\s\t\]default color19
    keyword whole linestart \[\s\t\]\{ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz\}\[0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz\]: color26

#digits
    keyword whole 0\{xX\}\{0123456789abcdefABCDEF\}\[0123456789abcdefABCDEF\] color88
    keyword whole \{0123456789\}\[0123456789\] color88
    keyword whole \[0123456789\]\.\{0123456789\}\[0123456789\] color88
    keyword whole \{0123456789\}\[0123456789\]\.\[0123456789\] color88
    keyword whole \{0123456789\}\[0123456789\]\{eE\}\{0123456789\}\[0123456789\] color88
    keyword whole \{0123456789\}\[0123456789\]\{eE\}\{\-\+\}\{0123456789\}\[0123456789\] color88
    keyword whole \{0123456789\}\[0123456789\]\.\{0123456789\}\[0123456789\]\{eE\}\{0123456789\}\[0123456789\] color88
    keyword whole \{0123456789\}\[0123456789\]\.\{0123456789\}\[0123456789\]\{eE\}\{\-\+\}\{0123456789\}\[0123456789\] color88

#comments
    keyword {- color30
    keyword -} color30
    keyword -- color30

    keyword \*/ color30
    keyword /\* color30
    keyword // color30

    keyword '\\\{"abtnvfr\}' color88

#haskell standalone char escapes
    keyword '\\NUL' color88
    keyword '\\SOH' color88
    keyword '\\STX' color88
    keyword '\\ETX' color88
    keyword '\\EOT' color88
    keyword '\\ENQ' color88
    keyword '\\ACK' color88
    keyword '\\BEL' color88
    keyword '\\BS' color88
    keyword '\\HT' color88
    keyword '\\LF' color88
    keyword '\\VT' color88
    keyword '\\FF' color88
    keyword '\\CR' color88
    keyword '\\SO' color88
    keyword '\\SI' color88
    keyword '\\DLE' color88
    keyword '\\DC1' color88
    keyword '\\DC2' color88
    keyword '\\DC3' color88
    keyword '\\DC4' color88
    keyword '\\NAK' color88
    keyword '\\SYN' color88
    keyword '\\ETB' color88
    keyword '\\CAN' color88
    keyword '\\EM' color88
    keyword '\\SUB' color88
    keyword '\\ESC' color88
    keyword '\\FS' color88
    keyword '\\GS' color88
    keyword '\\RS' color88
    keyword '\\US' color88
    keyword '\\SP' color88
    keyword '\\DEL' color88

    keyword '\\\{0123\}\{01234567\}\{01234567\}' color88
    keyword '\\'' color88
    keyword '\\\\' color88
    keyword '\\0' color88
    keyword '\{\s!"#$%&()\*\+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ\}' color88

# some punctuation characters
    keyword whole $ color19
    keyword whole ! color243
    keyword whole && color243
    keyword whole \* color19
    keyword whole \+ color19
    keyword whole / color19
    keyword whole < color19
    keyword whole > color19
    keyword whole ^ color243
    keyword whole || color243
    keyword whole | color243

    keyword ~ color243
    keyword , color17
    keyword - color19
    keyword : color17
    keyword ; color19
    keyword = color19
    keyword { color243
    keyword } color243
    keyword [ color17
    keyword ] color17
    keyword ( color17
    keyword ) color17

# comments
context exclusive /\* \*/ color30
    spellcheck

context exclusive {-# #-} color28
    spellcheck

context exclusive {- -} color30
    spellcheck

context exclusive // \n color30
    spellcheck

context exclusive \-\- \n color30
    spellcheck

# C macros
context linestart # \n color196
    keyword \\\n color19
    keyword /\**\*/ color30
    keyword //*\n color30
    keyword "+" color160
    keyword <+> color160


context " " color28
    spellcheck

#haskell escapes in ""s
    keyword \\NUL color88
    keyword \\SOH color88
    keyword \\STX color88
    keyword \\ETX color88
    keyword \\EOT color88
    keyword \\ENQ color88
    keyword \\ACK color88
    keyword \\BEL color88
    keyword \\BS color88
    keyword \\HT color88
    keyword \\LF color88
    keyword \\VT color88
    keyword \\FF color88
    keyword \\CR color88
    keyword \\SO color88
    keyword \\SI color88
    keyword \\DLE color88
    keyword \\DC1 color88
    keyword \\DC2 color88
    keyword \\DC3 color88
    keyword \\DC4 color88
    keyword \\NAK color88
    keyword \\SYN color88
    keyword \\ETB color88
    keyword \\CAN color88
    keyword \\EM color88
    keyword \\SUB color88
    keyword \\ESC color88
    keyword \\FS color88
    keyword \\GS color88
    keyword \\RS color88
    keyword \\US color88
    keyword \\SP color88
    keyword \\DEL color88

    keyword \\" color88
    keyword %% color88
    keyword %\[#0\s-\+,\]\[0123456789\*\]\[.\]\[0123456789\*\]\[L\]\{eEfgGoxX\} color88
    keyword %\[0\s-\+,\]\[0123456789\*\]\[.\]\[0123456789\*\]\[hl\]\{diuxX\} color88
    keyword %\[hl\]n color88
    keyword %\[-\]\[0123456789\*\]\[.\]\[0123456789\*\]s color88
    keyword %[*] color88
    keyword %c color88
    keyword %p color88
    keyword \\\{0123\}\{01234567\}\{01234567\} color88
    keyword \\\\ color88
    keyword \\' color88
    keyword \\\{abtnvfr\} color88

# infix binop
context exclusive ` ` color243