xref: /vim-8.2.3635/runtime/syntax/srec.vim (revision cf2d8dee)
1" Vim syntax file
2" Language:	Motorola S-Record
3" Maintainer:	Markus Heidelberg <[email protected]>
4" Last Change:	2015 Feb 24
5
6" Each record (line) is built as follows:
7"
8"    field       digits          states
9"
10"  +----------+
11"  | start    |  1 ('S')         srecRecStart
12"  +----------+
13"  | type     |  1               srecRecType, (srecRecTypeUnknown)
14"  +----------+
15"  | count    |  2               srecByteCount
16"  +----------+
17"  | address  |  4/6/8           srecNoAddress, srecDataAddress, srecRecCount, srecStartAddress, (srecAddressFieldUnknown)
18"  +----------+
19"  | data     |  0..504/502/500  srecDataOdd, srecDataEven, (srecDataUnexpected)
20"  +----------+
21"  | checksum |  2               srecChecksum
22"  +----------+
23"
24" States in parentheses in the upper format description indicate that they
25" should not appear in a valid file.
26
27" For version 5.x: Clear all syntax items
28" For version 6.x: Quit when a syntax file was already loaded
29if version < 600
30  syntax clear
31elseif exists("b:current_syntax")
32  finish
33endif
34
35syn match srecRecStart "^S"
36
37syn match srecRecTypeUnknown "^S."        contains=srecRecStart
38syn match srecRecType        "^S[0-35-9]" contains=srecRecStart
39
40syn match srecByteCount "^S.[0-9a-fA-F]\{2}"        contains=srecRecTypeUnknown nextgroup=srecAddressFieldUnknown,srecChecksum
41syn match srecByteCount "^S[0-35-9][0-9a-fA-F]\{2}" contains=srecRecType
42
43syn match srecAddressFieldUnknown "[0-9a-fA-F]\{2}" contained nextgroup=srecAddressFieldUnknown,srecChecksum
44
45syn match srecNoAddress    "^S0[0-9a-fA-F]\{6}"  contains=srecByteCount nextgroup=srecDataOdd,srecChecksum
46syn match srecDataAddress  "^S1[0-9a-fA-F]\{6}"  contains=srecByteCount nextgroup=srecDataOdd,srecChecksum
47syn match srecDataAddress  "^S2[0-9a-fA-F]\{8}"  contains=srecByteCount nextgroup=srecDataOdd,srecChecksum
48syn match srecDataAddress  "^S3[0-9a-fA-F]\{10}" contains=srecByteCount nextgroup=srecDataOdd,srecChecksum
49syn match srecRecCount     "^S5[0-9a-fA-F]\{6}"  contains=srecByteCount nextgroup=srecDataUnexpected,srecChecksum
50syn match srecRecCount     "^S6[0-9a-fA-F]\{8}"  contains=srecByteCount nextgroup=srecDataUnexpected,srecChecksum
51syn match srecStartAddress "^S7[0-9a-fA-F]\{10}" contains=srecByteCount nextgroup=srecDataUnexpected,srecChecksum
52syn match srecStartAddress "^S8[0-9a-fA-F]\{8}"  contains=srecByteCount nextgroup=srecDataUnexpected,srecChecksum
53syn match srecStartAddress "^S9[0-9a-fA-F]\{6}"  contains=srecByteCount nextgroup=srecDataUnexpected,srecChecksum
54
55" alternating highlight per byte for easier reading
56syn match srecDataOdd        "[0-9a-fA-F]\{2}" contained nextgroup=srecDataEven,srecChecksum
57syn match srecDataEven       "[0-9a-fA-F]\{2}" contained nextgroup=srecDataOdd,srecChecksum
58" data bytes which should not exist
59syn match srecDataUnexpected "[0-9a-fA-F]\{2}" contained nextgroup=srecDataUnexpected,srecChecksum
60" Data digit pair regex usage also results in only highlighting the checksum
61" if the number of data characters is even.
62
63syn match srecChecksum "[0-9a-fA-F]\{2}$" contained
64
65" Define the default highlighting.
66" For version 5.7 and earlier: only when not done already
67" For version 5.8 and later: only when an item doesn't have highlighting yet
68if version >= 508 || !exists("did_srec_syntax_inits")
69  if version < 508
70    let did_srec_syntax_inits = 1
71    command -nargs=+ HiLink hi link <args>
72  else
73    command -nargs=+ HiLink hi def link <args>
74  endif
75
76  " The default methods for highlighting. Can be overridden later
77  HiLink srecRecStart            srecRecType
78  HiLink srecRecTypeUnknown      srecRecType
79  HiLink srecRecType             WarningMsg
80  HiLink srecByteCount           Constant
81  hi def srecAddressFieldUnknown term=italic cterm=italic gui=italic
82  HiLink srecNoAddress           DiffAdd
83  HiLink srecDataAddress         Comment
84  HiLink srecRecCount            srecNoAddress
85  HiLink srecStartAddress        srecDataAddress
86  hi def srecDataOdd             term=bold cterm=bold gui=bold
87  hi def srecDataEven            term=NONE cterm=NONE gui=NONE
88  HiLink srecDataUnexpected      Error
89  HiLink srecChecksum            DiffChange
90
91  delcommand HiLink
92endif
93
94let b:current_syntax = "srec"
95
96" vim: ts=8
97