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