#
# Syntax rules for the JAL programming language.
#
caseinsensitive
context default
#=========================
# Variable types
#
keyword whole bit color21 color243
keyword whole byte color21 color243
keyword whole sbyte color21 color243
keyword whole word color21 color243
keyword whole sword color21 color243
keyword whole dword color21 color243
keyword whole sdword color21 color243
#=========================
# Predefined constants
#
keyword whole false color232 color28
keyword whole true color232 color28
keyword whole off color232 color28
keyword whole on color232 color28
keyword whole low color232 color28
keyword whole high color232 color28
#=========================
# Keywords
#
keyword whole alias color19
keyword whole at color19
keyword whole begin color19
keyword whole const color19
keyword whole count color19
keyword whole defined color19
keyword whole end color19
keyword whole exit color19
keyword whole function color19
keyword whole get color19
keyword whole in color19
keyword whole is color19
keyword whole local color19
keyword whole of color19
keyword whole out color19
keyword whole put color19
keyword whole procedure color19
keyword whole record color19
keyword whole repeat color19
keyword whole return color19
keyword whole then color19
keyword whole until color19
keyword whole var color19
keyword whole volatile color21 color243
keyword whole asm color196
keyword whole assembler color196
keyword whole assert color196
keyword whole include color196
keyword whole task color196
#=========================
# Pragma keywords
#
keyword whole pragma\{\t\s\}\[\t\s\]bootloader\{\t\s\}\[\t\s\]bloader color196
keyword whole pragma\{\t\s\}\[\t\s\]bootloader\{\t\s\}\[\t\s\]long_start color196
keyword whole pragma\{\t\s\}\[\t\s\]bootloader\{\t\s\}\[\t\s\]loader18 color196
keyword whole pragma\{\t\s\}\[\t\s\]bootloader\{\t\s\}\[\t\s\]rickpic color196
keyword whole pragma\{\t\s\}\[\t\s\]clear\{\t\s\}\[\t\s\]no color196
keyword whole pragma\{\t\s\}\[\t\s\]clear\{\t\s\}\[\t\s\]yes color196
keyword whole pragma\{\t\s\}\[\t\s\]code color196
keyword whole pragma\{\t\s\}\[\t\s\]data color196
keyword whole pragma\{\t\s\}\[\t\s\]debug\{\t\s\}\[\t\s\]codegen\{\t\s\}\[\t\s\]no color196
keyword whole pragma\{\t\s\}\[\t\s\]debug\{\t\s\}\[\t\s\]codegen\{\t\s\}\[\t\s\]yes color196
keyword whole pragma\{\t\s\}\[\t\s\]debug\{\t\s\}\[\t\s\]pcode\{\t\s\}\[\t\s\]no color196
keyword whole pragma\{\t\s\}\[\t\s\]debug\{\t\s\}\[\t\s\]pcode\{\t\s\}\[\t\s\]yes color196
keyword whole pragma\{\t\s\}\[\t\s\]eedata color196
keyword whole pragma\{\t\s\}\[\t\s\]eeprom color196
keyword whole pragma\{\t\s\}\[\t\s\]error color196
keyword whole pragma\{\t\s\}\[\t\s\]frame color196
keyword whole pragma\{\t\s\}\[\t\s\]fuse_def color196
keyword whole pragma\{\t\s\}\[\t\s\]id color196
keyword whole pragma\{\t\s\}\[\t\s\]iddata color196
keyword whole pragma\{\t\s\}\[\t\s\]inline color196
keyword whole pragma\{\t\s\}\[\t\s\]interrupt\{\t\s\}\[\t\s\]fast color196
keyword whole pragma\{\t\s\}\[\t\s\]interrupt\{\t\s\}\[\t\s\]normal color196
keyword whole pragma\{\t\s\}\[\t\s\]interrupt\{\t\s\}\[\t\s\]raw color196
keyword whole pragma\{\t\s\}\[\t\s\]interrupt color196
keyword whole pragma\{\t\s\}\[\t\s\]jump_table color196
keyword whole pragma\{\t\s\}\[\t\s\]keep\{\t\s\}\[\t\s\]bank color196
keyword whole pragma\{\t\s\}\[\t\s\]keep\{\t\s\}\[\t\s\]page color196
keyword whole pragma\{\t\s\}\[\t\s\]keep color196
keyword whole pragma\{\t\s\}\[\t\s\]name color196
keyword whole pragma\{\t\s\}\[\t\s\]nostack color196
keyword whole pragma\{\t\s\}\[\t\s\]opt\{\t\s\}\[\t\s\]expr_reduce\{\t\s\}\[\t\s\]no color196
keyword whole pragma\{\t\s\}\[\t\s\]opt\{\t\s\}\[\t\s\]expr_reduce\{\t\s\}\[\t\s\]yes color196
keyword whole pragma\{\t\s\}\[\t\s\]opt\{\t\s\}\[\t\s\]cexpr_reduce\{\t\s\}\[\t\s\]no color196
keyword whole pragma\{\t\s\}\[\t\s\]opt\{\t\s\}\[\t\s\]cexpr_reduce\{\t\s\}\[\t\s\]yes color196
keyword whole pragma\{\t\s\}\[\t\s\]opt\{\t\s\}\[\t\s\]const_detect\{\t\s\}\[\t\s\]no color196
keyword whole pragma\{\t\s\}\[\t\s\]opt\{\t\s\}\[\t\s\]const_detect\{\t\s\}\[\t\s\]yes color196
keyword whole pragma\{\t\s\}\[\t\s\]opt\{\t\s\}\[\t\s\]load_reduce\{\t\s\}\[\t\s\]no color196
keyword whole pragma\{\t\s\}\[\t\s\]opt\{\t\s\}\[\t\s\]load_reduce\{\t\s\}\[\t\s\]yes color196
keyword whole pragma\{\t\s\}\[\t\s\]opt\{\t\s\}\[\t\s\]temp_reduce\{\t\s\}\[\t\s\]no color196
keyword whole pragma\{\t\s\}\[\t\s\]opt\{\t\s\}\[\t\s\]temp_reduce\{\t\s\}\[\t\s\]yes color196
keyword whole pragma\{\t\s\}\[\t\s\]opt\{\t\s\}\[\t\s\]variable_frame\{\t\s\}\[\t\s\]no color196
keyword whole pragma\{\t\s\}\[\t\s\]opt\{\t\s\}\[\t\s\]variable_frame\{\t\s\}\[\t\s\]yes color196
keyword whole pragma\{\t\s\}\[\t\s\]opt\{\t\s\}\[\t\s\]variable_reduce\{\t\s\}\[\t\s\]no color196
keyword whole pragma\{\t\s\}\[\t\s\]opt\{\t\s\}\[\t\s\]variable_reduce\{\t\s\}\[\t\s\]yes color196
keyword whole pragma\{\t\s\}\[\t\s\]shared color196
keyword whole pragma\{\t\s\}\[\t\s\]size color196
keyword whole pragma\{\t\s\}\[\t\s\]speed color196
keyword whole pragma\{\t\s\}\[\t\s\]stack color196
keyword whole pragma\{\t\s\}\[\t\s\]target\{\t\s\}\[\t\s\]bank color196
keyword whole pragma\{\t\s\}\[\t\s\]target\{\t\s\}\[\t\s\]clock color196
keyword whole pragma\{\t\s\}\[\t\s\]target\{\t\s\}\[\t\s\]chip color196
keyword whole pragma\{\t\s\}\[\t\s\]target\{\t\s\}\[\t\s\]cpu color196
keyword whole pragma\{\t\s\}\[\t\s\]target\{\t\s\}\[\t\s\]fuses color196
keyword whole pragma\{\t\s\}\[\t\s\]target\{\t\s\}\[\t\s\]fuses_def color196
keyword whole pragma\{\t\s\}\[\t\s\]target\{\t\s\}\[\t\s\]page color196
keyword whole pragma\{\t\s\}\[\t\s\]target color196
keyword whole pragma\{\t\s\}\[\t\s\]task color196
keyword whole pragma\{\t\s\}\[\t\s\]warn\{\t\s\}\[\t\s\]all\{\t\s\}\[\t\s\]no color196
keyword whole pragma\{\t\s\}\[\t\s\]warn\{\t\s\}\[\t\s\]all\{\t\s\}\[\t\s\]yes color196
keyword whole pragma\{\t\s\}\[\t\s\]warn\{\t\s\}\[\t\s\]backend\{\t\s\}\[\t\s\]no color196
keyword whole pragma\{\t\s\}\[\t\s\]warn\{\t\s\}\[\t\s\]backend\{\t\s\}\[\t\s\]yes color196
keyword whole pragma\{\t\s\}\[\t\s\]warn\{\t\s\}\[\t\s\]conversion\{\t\s\}\[\t\s\]no color196
keyword whole pragma\{\t\s\}\[\t\s\]warn\{\t\s\}\[\t\s\]conversion\{\t\s\}\[\t\s\]yes color196
keyword whole pragma\{\t\s\}\[\t\s\]warn\{\t\s\}\[\t\s\]directives\{\t\s\}\[\t\s\]no color196
keyword whole pragma\{\t\s\}\[\t\s\]warn\{\t\s\}\[\t\s\]directives\{\t\s\}\[\t\s\]yes color196
keyword whole pragma\{\t\s\}\[\t\s\]warn\{\t\s\}\[\t\s\]misc\{\t\s\}\[\t\s\]no color196
keyword whole pragma\{\t\s\}\[\t\s\]warn\{\t\s\}\[\t\s\]misc\{\t\s\}\[\t\s\]yes color196
keyword whole pragma\{\t\s\}\[\t\s\]warn\{\t\s\}\[\t\s\]range\{\t\s\}\[\t\s\]no color196
keyword whole pragma\{\t\s\}\[\t\s\]warn\{\t\s\}\[\t\s\]range\{\t\s\}\[\t\s\]yes color196
keyword whole pragma\{\t\s\}\[\t\s\]warn\{\t\s\}\[\t\s\]stack_overflow\{\t\s\}\[\t\s\]no color196
keyword whole pragma\{\t\s\}\[\t\s\]warn\{\t\s\}\[\t\s\]stack_overflow\{\t\s\}\[\t\s\]yes color196
keyword whole pragma\{\t\s\}\[\t\s\]warn\{\t\s\}\[\t\s\]truncate\{\t\s\}\[\t\s\]no color196
keyword whole pragma\{\t\s\}\[\t\s\]warn\{\t\s\}\[\t\s\]truncate\{\t\s\}\[\t\s\]yes color196
keyword whole block color17
keyword whole case color17
keyword whole else color17
keyword whole elsif color17
keyword whole for color17
keyword whole forever color17
keyword whole if color17
keyword whole loop color17
keyword whole otherwise color17
keyword whole start color17
keyword whole suspend color17
keyword whole using color17
keyword whole while color17
keyword whole _debug color19
keyword whole _error color19
keyword whole _warn color19
keyword whole _code_size color196
keyword whole _fuses color196
keyword whole _fuses_base color196
keyword whole target_chip color196
keyword whole target_cpu color196
keyword whole target_clock color196
keyword whole _usec_delay color19
wholechars 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_
#=========================
# Numbers
#
keyword whole 0b\{01_\}\[01_\] color88
keyword whole 0q\{0123456_\}\[0123456_\] color88
keyword whole \[-\]\{0123456789_\}\[0123456789_\] color88
keyword whole 0x\{0123456789ABCDEFabcdef_\}\[0123456789ABCDEFabcdef_\] color88
#=========================
# Comments
#
keyword --*\n color243 color91
keyword ;*\n color243 color91
#=========================
# Special symbols
#
keyword - color19
keyword \* color19
keyword / color19
keyword % color19
keyword \+ color19
keyword << color19
keyword >> color19
keyword ~ color90
keyword !! color90
keyword & color90
keyword | color90
keyword ^ color90
keyword ' color90
keyword : color196
keyword != color196
keyword == color196
keyword <= color196
keyword >= color196
keyword < color196
keyword > color196
keyword = color19
keyword ! color90
#=========================
# Separators
#
keyword ( color17
keyword ) color17
keyword [ color17
keyword ] color17
keyword { color17
keyword } color17
keyword , color17
keyword . color17
#=========================
# Assembler lines
#
context exclusive asm\{\t\s\}\[\t\s\] \n color21 color26
#=========================
# Strings
#
context " " color232 color28
spellcheck
keyword \\" color160
keyword \\\\ color160
keyword \\\{abfnrtv?\} color160
keyword \\0\{0123456789ABCDEFabcdef\}\{0123456789ABCDEFabcdef\}\{0123456789ABCDEFabcdef\} color160
keyword \\\x\{0123456789ABCDEFabcdef\}\{0123456789ABCDEFabcdef\} color160