xref: /vim-8.2.3635/runtime/syntax/poke.vim (revision c8cdf0f8)
1*c8cdf0f8SBram Moolenaar" Copyright (C) 2021 Matthew T. Ihlenfield.
2*c8cdf0f8SBram Moolenaar"
3*c8cdf0f8SBram Moolenaar" This program is free software: you can redistribute it and/or modify
4*c8cdf0f8SBram Moolenaar" it under the terms of the GNU General Public License as published by
5*c8cdf0f8SBram Moolenaar" the Free Software Foundation, either version 3 of the License, or
6*c8cdf0f8SBram Moolenaar" (at your option) any later version.
7*c8cdf0f8SBram Moolenaar"
8*c8cdf0f8SBram Moolenaar" This program is distributed in the hope that it will be useful,
9*c8cdf0f8SBram Moolenaar" but WITHOUT ANY WARRANTY; without even the implied warranty of
10*c8cdf0f8SBram Moolenaar" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
11*c8cdf0f8SBram Moolenaar" GNU General Public License for more details.
12*c8cdf0f8SBram Moolenaar"
13*c8cdf0f8SBram Moolenaar" You should have received a copy of the GNU General Public License
14*c8cdf0f8SBram Moolenaar" along with this program.  If not, see <http://www.gnu.org/licenses/>.
15*c8cdf0f8SBram Moolenaar"
16*c8cdf0f8SBram Moolenaar" Vim syntax file
17*c8cdf0f8SBram Moolenaar" Language: Poke
18*c8cdf0f8SBram Moolenaar" Maintainer: Matt Ihlenfield <[email protected]>
19*c8cdf0f8SBram Moolenaar" Filenames: *.pk
20*c8cdf0f8SBram Moolenaar" Latest Revision: 10 March 2021
21*c8cdf0f8SBram Moolenaar
22*c8cdf0f8SBram Moolenaarif exists('b:current_syntax')
23*c8cdf0f8SBram Moolenaar    finish
24*c8cdf0f8SBram Moolenaarendif
25*c8cdf0f8SBram Moolenaar
26*c8cdf0f8SBram Moolenaar" Poke statement
27*c8cdf0f8SBram Moolenaarsyn keyword pokeStatement assert break continue return
28*c8cdf0f8SBram Moolenaarsyn keyword pokeStatement type unit fun method nextgroup=pokeFunction skipwhite
29*c8cdf0f8SBram Moolenaarsyn keyword pokeStatement var nextgroup=pokeVar skipWhite
30*c8cdf0f8SBram Moolenaar
31*c8cdf0f8SBram Moolenaar" Identifiers
32*c8cdf0f8SBram Moolenaarsyn match pokeVar '\h\w*' display contained
33*c8cdf0f8SBram Moolenaar
34*c8cdf0f8SBram Moolenaar" User defined functions
35*c8cdf0f8SBram Moolenaarsyn match pokeFunction '\h\w*' display contained
36*c8cdf0f8SBram Moolenaar
37*c8cdf0f8SBram Moolenaar" Poke operators
38*c8cdf0f8SBram Moolenaarsyn keyword pokeOperator in sizeof as isa unmap
39*c8cdf0f8SBram Moolenaar
40*c8cdf0f8SBram Moolenaar" Conditionals
41*c8cdf0f8SBram Moolenaarsyn keyword pokeConditional if else where
42*c8cdf0f8SBram Moolenaar
43*c8cdf0f8SBram Moolenaar" Structures, unions, etc...
44*c8cdf0f8SBram Moolenaarsyn keyword pokeStructure struct union pinned
45*c8cdf0f8SBram Moolenaar
46*c8cdf0f8SBram Moolenaar" Loops
47*c8cdf0f8SBram Moolenaarsyn keyword pokeRepeat while for
48*c8cdf0f8SBram Moolenaar
49*c8cdf0f8SBram Moolenaar" Imports
50*c8cdf0f8SBram Moolenaarsyn keyword pokeLoad load
51*c8cdf0f8SBram Moolenaar
52*c8cdf0f8SBram Moolenaar" Exceptions
53*c8cdf0f8SBram Moolenaarsyn keyword pokeException try catch until raise
54*c8cdf0f8SBram Moolenaar
55*c8cdf0f8SBram Moolenaar" Exception types
56*c8cdf0f8SBram Moolenaarsyn keyword pokeExceptionType Exception E_generic E_out_of_bounds
57*c8cdf0f8SBram Moolenaarsyn keyword pokeExceptionType E_eof E_elem E_constraint
58*c8cdf0f8SBram Moolenaarsyn keyword pokeExceptionType E_conv E_map_bounds E_map
59*c8cdf0f8SBram Moolenaarsyn keyword pokeExceptionType E_div_by_zero E_no_ios E_no_return
60*c8cdf0f8SBram Moolenaarsyn keyword pokeExceptionType E_io E_io_flags E_assert E_overflow
61*c8cdf0f8SBram Moolenaar
62*c8cdf0f8SBram Moolenaar" Exception codes
63*c8cdf0f8SBram Moolenaarsyn keyword pokeExceptionCode EC_generic EC_out_of_bounds
64*c8cdf0f8SBram Moolenaarsyn keyword pokeExceptionCode EC_eof EC_elem EC_constraint
65*c8cdf0f8SBram Moolenaarsyn keyword pokeExceptionCode EC_conv EC_map_bounds EC_map
66*c8cdf0f8SBram Moolenaarsyn keyword pokeExceptionCode EC_div_by_zero EC_no_ios EC_no_return
67*c8cdf0f8SBram Moolenaarsyn keyword pokeExceptionCode EC_io EC_io_flags EC_assert EC_overflow
68*c8cdf0f8SBram Moolenaar
69*c8cdf0f8SBram Moolenaar" Poke builtin types
70*c8cdf0f8SBram Moolenaarsyn keyword pokeBuiltinType string void int uint bit nibble
71*c8cdf0f8SBram Moolenaarsyn keyword pokeBuiltinType byte char ushort short ulong long
72*c8cdf0f8SBram Moolenaarsyn keyword pokeBuiltinType uint8 uint16 uint32 uint64
73*c8cdf0f8SBram Moolenaarsyn keyword pokeBuiltinType off64 uoff64 offset
74*c8cdf0f8SBram Moolenaarsyn keyword pokeBuiltinType Comparator POSIX_Time32 POSIX_Time64
75*c8cdf0f8SBram Moolenaarsyn keyword pokeBuiltinType big little any
76*c8cdf0f8SBram Moolenaar
77*c8cdf0f8SBram Moolenaar" Poke constants
78*c8cdf0f8SBram Moolenaarsyn keyword pokeConstant ENDIAN_LITTLE ENDIAN_BIG
79*c8cdf0f8SBram Moolenaarsyn keyword pokeConstant IOS_F_READ IOS_F_WRITE IOS_F_TRUNCATE IOS_F_CREATE
80*c8cdf0f8SBram Moolenaarsyn keyword pokeConstant IOS_M_RDONLY IOS_M_WRONLY IOS_M_RDWR
81*c8cdf0f8SBram Moolenaarsyn keyword pokeConstant load_path NULL OFFSET
82*c8cdf0f8SBram Moolenaar
83*c8cdf0f8SBram Moolenaar" Poke std lib
84*c8cdf0f8SBram Moolenaarsyn keyword pokeBuiltinFunction print printf catos stoca atoi ltos reverse
85*c8cdf0f8SBram Moolenaarsyn keyword pokeBuiltinFunction ltrim rtrim strchr qsort crc32 alignto
86*c8cdf0f8SBram Moolenaarsyn keyword pokeBuiltinFunction open close flush get_ios set_ios iosize
87*c8cdf0f8SBram Moolenaarsyn keyword pokeBuiltinFunction rand get_endian set_endian strace exit
88*c8cdf0f8SBram Moolenaarsyn keyword pokeBuiltinFunction getenv
89*c8cdf0f8SBram Moolenaar
90*c8cdf0f8SBram Moolenaar" Formats
91*c8cdf0f8SBram Moolenaar
92*c8cdf0f8SBram Moolenaar" Special chars
93*c8cdf0f8SBram Moolenaarsyn match pokeSpecial "\\\([nt\\]\|\o\{1,3}\)" display contained
94*c8cdf0f8SBram Moolenaar
95*c8cdf0f8SBram Moolenaar" Chars
96*c8cdf0f8SBram Moolenaarsyn match pokeChar "'[^']*'" contains=pokeSpecial
97*c8cdf0f8SBram Moolenaar
98*c8cdf0f8SBram Moolenaar" Attributes
99*c8cdf0f8SBram Moolenaarsyn match pokeAttribute "\h\w*'\h\w"
100*c8cdf0f8SBram Moolenaar
101*c8cdf0f8SBram Moolenaar" Strings
102*c8cdf0f8SBram Moolenaarsyn region pokeString skip=+\\\\\|\\"+ start=+"+ end=+"+ contains=pokeSpecial
103*c8cdf0f8SBram Moolenaar
104*c8cdf0f8SBram Moolenaar" Integer literals
105*c8cdf0f8SBram Moolenaarsyn match pokeInteger "\<\d\+_*\d*\([LlHhBbNn]\=[Uu]\=\|[Uu]\=[LlHhBbNn]\=\)\>"
106*c8cdf0f8SBram Moolenaarsyn match pokeInteger "\<0[Xx]\x\+_*\x*\([LlHhBbNn]\=[Uu]\=\|[Uu]\=[LlHhBbNn]\=\)\>"
107*c8cdf0f8SBram Moolenaarsyn match pokeInteger "\<0[Oo]\o\+_*\o*\([LlHhBbNn]\=[Uu]\=\|[Uu]\=[LlHhBbNn]\=\)\>"
108*c8cdf0f8SBram Moolenaarsyn match pokeInteger "\<0[Bb][01]\+_*[01]*\([LlHhBbNn]\=[Uu]\=\|[Uu]\=[LlHhBbNn]\=\)\>"
109*c8cdf0f8SBram Moolenaar
110*c8cdf0f8SBram Moolenaar" Units
111*c8cdf0f8SBram Moolenaarsyn keyword pokeBuiltinUnit b M B
112*c8cdf0f8SBram Moolenaarsyn keyword pokeBuiltinUnit Kb KB Mb MB Gb GB
113*c8cdf0f8SBram Moolenaarsyn keyword pokeBuiltinUnit Kib KiB Mib MiB Gib GiB
114*c8cdf0f8SBram Moolenaar
115*c8cdf0f8SBram Moolenaar" Offsets
116*c8cdf0f8SBram Moolenaarsyn match pokeOffset "#\h\w*" contains=pokeBuiltinUnit
117*c8cdf0f8SBram Moolenaar
118*c8cdf0f8SBram Moolenaar" Comments
119*c8cdf0f8SBram Moolenaarsyn keyword pokeCommentTodo TODO FIXME XXX TBD contained
120*c8cdf0f8SBram Moolenaarsyn match pokeLineComment "\/\/.*" contains=pokeCommentTodo,@Spell extend
121*c8cdf0f8SBram Moolenaarsyn region pokeComment start="/\*"  end="\*/" contains=pokeCommentTodo,@Spell fold extend
122*c8cdf0f8SBram Moolenaar
123*c8cdf0f8SBram Moolenaar" Allow folding of blocks
124*c8cdf0f8SBram Moolenaarsyn region pokeBlock start="{" end="}" transparent fold
125*c8cdf0f8SBram Moolenaar
126*c8cdf0f8SBram Moolenaar" Highlight groups
127*c8cdf0f8SBram Moolenaarhi def link pokeBuiltinFunction Function
128*c8cdf0f8SBram Moolenaarhi def link pokeBuiltinType Type
129*c8cdf0f8SBram Moolenaarhi def link pokeBuiltinUnit Keyword
130*c8cdf0f8SBram Moolenaarhi def link pokeChar Character
131*c8cdf0f8SBram Moolenaarhi def link pokeComment Comment
132*c8cdf0f8SBram Moolenaarhi def link pokeCommentTodo Todo
133*c8cdf0f8SBram Moolenaarhi def link pokeConditional Conditional
134*c8cdf0f8SBram Moolenaarhi def link pokeConstant Constant
135*c8cdf0f8SBram Moolenaarhi def link pokeException Exception
136*c8cdf0f8SBram Moolenaarhi def link pokeExceptionCode Constant
137*c8cdf0f8SBram Moolenaarhi def link pokeExceptionType Type
138*c8cdf0f8SBram Moolenaarhi def link pokeFunction Function
139*c8cdf0f8SBram Moolenaarhi def link pokeInteger Number
140*c8cdf0f8SBram Moolenaarhi def link pokeLineComment Comment
141*c8cdf0f8SBram Moolenaarhi def link pokeLoad Include
142*c8cdf0f8SBram Moolenaarhi def link pokeOffset StorageClass
143*c8cdf0f8SBram Moolenaarhi def link pokeOperator Operator
144*c8cdf0f8SBram Moolenaarhi def link pokeSpecial SpecialChar
145*c8cdf0f8SBram Moolenaarhi def link pokeStatement Statement
146*c8cdf0f8SBram Moolenaarhi def link pokeString String
147*c8cdf0f8SBram Moolenaarhi def link pokeStructure Structure
148*c8cdf0f8SBram Moolenaarhi def link pokeRepeat Repeat
149*c8cdf0f8SBram Moolenaarhi def link pokeVar Identifier
150*c8cdf0f8SBram Moolenaar
151*c8cdf0f8SBram Moolenaarlet b:current_syntax = 'poke'
152