blob: e597b8e31ca563f95178fb9a3e45a379768e1a95 [file] [log] [blame]
Bram Moolenaar071d4272004-06-13 20:20:40 +00001" Vim syntax file
2" Language: Virata AConfig Configuration Script
3" Maintainer: Manuel M.H. Stol <mmh.stol@gmx.net>
4" Last Change: 2003 May 11
5" Vim URL: http://www.vim.org/lang.html
6" Virata URL: http://www.globespanvirata.com/
7
8
9" Virata AConfig Configuration Script syntax
10" Can be detected by: 1) Extension .hw, .sw, .pkg and .module
11" 2) The file name pattern "mk.*\.cfg"
12" 3) The string "Virata" in the first 5 lines
13
14
15" Setup Syntax:
16if version < 600
17 " Clear old syntax settings
18 syn clear
19elseif exists("b:current_syntax")
20 finish
21endif
22" Virata syntax is case insensitive (mostly)
23syn case ignore
24
25
26
27" Comments:
28" Virata comments start with %, but % is not a keyword character
29syn region virataComment start="^%" start="\s%"lc=1 keepend end="$" contains=@virataGrpInComments
30syn region virataSpclComment start="^%%" start="\s%%"lc=1 keepend end="$" contains=@virataGrpInComments
31syn keyword virataInCommentTodo contained TODO FIXME XXX[XXXXX] REVIEW TBD
32syn cluster virataGrpInComments contains=virataInCommentTodo
33syn cluster virataGrpComments contains=@virataGrpInComments,virataComment,virataSpclComment
34
35
36" Constants:
37syn match virataStringError +["]+
38syn region virataString start=+"+ skip=+\(\\\\\|\\"\)+ end=+"+ oneline contains=virataSpclCharError,virataSpclChar,@virataGrpDefSubsts
39syn match virataCharacter +'[^']\{-}'+ contains=virataSpclCharError,virataSpclChar
40syn match virataSpclChar contained +\\\(x\x\+\|\o\{1,3}\|['\"?\\abefnrtv]\)+
41syn match virataNumberError "\<\d\{-1,}\I\{-1,}\>"
42syn match virataNumberError "\<0x\x*\X\x*\>"
43syn match virataNumberError "\<\d\+\.\d*\(e[+-]\=\d\+\)\=\>"
44syn match virataDecNumber "\<\d\+U\=L\=\>"
45syn match virataHexNumber "\<0x\x\+U\=L\=\>"
46syn match virataSizeNumber "\<\d\+[BKM]\>"he=e-1
47syn match virataSizeNumber "\<\d\+[KM]B\>"he=e-2
48syn cluster virataGrpNumbers contains=virataNumberError,virataDecNumber,virataHexNumber,virataSizeNumber
49syn cluster virataGrpConstants contains=@virataGrpNumbers,virataStringError,virataString,virataCharacter,virataSpclChar
50
51
52" Identifiers:
53syn match virataIdentError contained "\<\D\S*\>"
54syn match virataIdentifier contained "\<\I\i\{-}\(\-\i\{-1,}\)*\>" contains=@virataGrpDefSubsts
55syn match virataFileIdent contained "\F\f*" contains=@virataGrpDefSubsts
56syn cluster virataGrpIdents contains=virataIdentifier,virataIdentError
57syn cluster virataGrpFileIdents contains=virataFileIdent,virataIdentError
58
59
60" Statements:
61syn match virataStatement "^\s*Config\(\(/Kernel\)\=\.\(hs\=\|s\)\)\=\>"
62syn match virataStatement "^\s*Config\s\+\I\i\{-}\(\-\i\{-1,}\)*\.\(hs\=\|s\)\>"
63syn match virataStatement "^\s*Make\.\I\i\{-}\(\-\i\{-1}\)*\>" skipwhite nextgroup=@virataGrpIdents
64syn match virataStatement "^\s*Make\.c\(at\)\=++\s"me=e-1 skipwhite nextgroup=@virataGrpIdents
65syn match virataStatement "^\s*\(Architecture\|GetEnv\|Reserved\|\(Un\)\=Define\|Version\)\>" skipwhite nextgroup=@virataGrpIdents
66syn match virataStatement "^\s*\(Hardware\|ModuleSource\|\(Release\)\=Path\|Software\)\>" skipwhite nextgroup=@virataGrpFileIdents
67syn match virataStatement "^\s*\(DefaultPri\|Hydrogen\)\>" skipwhite nextgroup=virataDecNumber,virataNumberError
68syn match virataStatement "^\s*\(NoInit\|PCI\|SysLink\)\>"
69syn match virataStatement "^\s*Allow\s\+\(ModuleConfig\)\>"
70syn match virataStatement "^\s*NoWarn\s\+\(Export\|Parse\=able\|Relative]\)\>"
71syn match virataStatement "^\s*Debug\s\+O\(ff\|n\)\>"
72
73" Import (Package <exec>|Module <name> from <dir>)
74syn region virataImportDef transparent matchgroup=virataStatement start="^\s*Import\>" keepend end="$" contains=virataInImport,virataModuleDef,virataNumberError,virataStringError,@virataGrpDefSubsts
75syn match virataInImport contained "\<\(Module\|Package\|from\)\>" skipwhite nextgroup=@virataGrpFileIdents
76" Export (Header <header file>|SLibrary <obj file>)
77syn region virataExportDef transparent matchgroup=virataStatement start="^\s*Export\>" keepend end="$" contains=virataInExport,virataNumberError,virataStringError,@virataGrpDefSubsts
78syn match virataInExport contained "\<\(Header\|[SU]Library\)\>" skipwhite nextgroup=@virataGrpFileIdents
79" Process <name> is <dir/exec>
80syn region virataProcessDef transparent matchgroup=virataStatement start="^\s*Process\>" keepend end="$" contains=virataInProcess,virataInExec,virataNumberError,virataStringError,@virataGrpDefSubsts,@virataGrpIdents
81syn match virataInProcess contained "\<is\>"
82" Instance <name> of <module>
83syn region virataInstanceDef transparent matchgroup=virataStatement start="^\s*Instance\>" keepend end="$" contains=virataInInstance,virataNumberError,virataStringError,@virataGrpDefSubsts,@virataGrpIdents
84syn match virataInInstance contained "\<of\>"
85" Module <name> from <dir>
86syn region virataModuleDef transparent matchgroup=virataStatement start="^\s*\(Package\|Module\)\>" keepend end="$" contains=virataInModule,virataNumberError,virataStringError,@virataGrpDefSubsts
87syn match virataInModule contained "^\s*Package\>"hs=e-7 skipwhite nextgroup=@virataGrpIdents
88syn match virataInModule contained "^\s*Module\>"hs=e-6 skipwhite nextgroup=@virataGrpIdents
89syn match virataInModule contained "\<from\>" skipwhite nextgroup=@virataGrpFileIdents
90" Colour <name> from <dir>
91syn region virataColourDef transparent matchgroup=virataStatement start="^\s*Colour\>" keepend end="$" contains=virataInColour,virataNumberError,virataStringError,@virataGrpDefSubsts
92syn match virataInColour contained "^\s*Colour\>"hs=e-6 skipwhite nextgroup=@virataGrpIdents
93syn match virataInColour contained "\<from\>" skipwhite nextgroup=@virataGrpFileIdents
94" Link {<link cmds>}
95" Object {Executable [<ExecOptions>]}
96syn match virataStatement "^\s*\(Link\|Object\)"
97" Executable <name> [<ExecOptions>]
98syn region virataExecDef transparent matchgroup=virataStatement start="^\s*Executable\>" keepend end="$" contains=virataInExec,virataNumberError,virataStringError
99syn match virataInExec contained "^\s*Executable\>" skipwhite nextgroup=@virataGrpDefSubsts,@virataGrpIdents
100syn match virataInExec contained "\<\(epilogue\|pro\(logue\|cess\)\|qhandler\)\>" skipwhite nextgroup=@virataGrpDefSubsts,@virataGrpIdents
101syn match virataInExec contained "\<\(priority\|stack\)\>" skipwhite nextgroup=@virataGrpDefSubsts,@virataGrpNumbers
102" Message <name> {<msg format>}
103" MessageId <number>
104syn match virataStatement "^\s*Message\(Id\)\=\>" skipwhite nextgroup=@virataGrpNumbers
105" MakeRule <make suffix=file> {<make cmds>}
106syn region virataMakeDef transparent matchgroup=virataStatement start="^\s*MakeRule\>" keepend end="$" contains=virataInMake,@virataGrpDefSubsts
107syn case match
108syn match virataInMake contained "\<N\>"
109syn case ignore
110" (Append|Edit|Copy)Rule <make suffix=file> <subst cmd>
111syn match virataStatement "^\s*\(Append\|Copy\|Edit\)Rule\>"
112" AlterRules in <file> <subst cmd>
113syn region virataAlterDef transparent matchgroup=virataStatement start="^\s*AlterRules\>" keepend end="$" contains=virataInAlter,@virataGrpDefSubsts
114syn match virataInAlter contained "\<in\>" skipwhite nextgroup=@virataGrpIdents
115" Clustering
116syn cluster virataGrpInStatmnts contains=virataInImport,virataInExport,virataInExec,virataInProcess,virataInAlter,virataInInstance,virataInModule,virataInColour
117syn cluster virataGrpStatements contains=@virataGrpInStatmnts,virataStatement,virataImportDef,virataExportDef,virataExecDef,virataProcessDef,virataAlterDef,virataInstanceDef,virataModuleDef,virataColourDef
118
119
120" MkFlash.Cfg File Statements:
121syn region virataCfgFileDef transparent matchgroup=virataCfgStatement start="^\s*Dir\>" start="^\s*\a\{-}File\>" start="^\s*OutputFile\d\d\=\>" start="^\s*\a\w\{-}[NP]PFile\>" keepend end="$" contains=@virataGrpFileIdents
122syn region virataCfgSizeDef transparent matchgroup=virataCfgStatement start="^\s*\a\{-}Size\>" start="^\s*ConfigInfo\>" keepend end="$" contains=@virataGrpNumbers,@virataGrpDefSubsts,virataIdentError
123syn region virataCfgNumberDef transparent matchgroup=virataCfgStatement start="^\s*FlashchipNum\(b\(er\=\)\=\)\=\>" start="^\s*Granularity\>" keepend end="$" contains=@virataGrpNumbers,@virataGrpDefSubsts
124syn region virataCfgMacAddrDef transparent matchgroup=virataCfgStatement start="^\s*MacAddress\>" keepend end="$" contains=virataNumberError,virataStringError,virataIdentError,virataInMacAddr,@virataGrpDefSubsts
125syn match virataInMacAddr contained "\x[:]\x\{1,2}\>"lc=2
126syn match virataInMacAddr contained "\s\x\{1,2}[:]\x"lc=1,me=e-1,he=e-2 nextgroup=virataInMacAddr
127syn match virataCfgStatement "^\s*Target\>" skipwhite nextgroup=@virataGrpIdents
128syn cluster virataGrpCfgs contains=virataCfgStatement,virataCfgFileDef,virataCfgSizeDef,virataCfgNumberDef,virataCfgMacAddrDef,virataInMacAddr
129
130
131
132" PreProcessor Instructions:
133" Defines
134syn match virataDefine "^\s*\(Un\)\=Set\>" skipwhite nextgroup=@virataGrpIdents
135syn match virataInclude "^\s*Include\>" skipwhite nextgroup=@virataGrpFileIdents
136syn match virataDefSubstError "[^$]\$"lc=1
137syn match virataDefSubstError "\$\(\w\|{\(.\{-}}\)\=\)"
138syn case match
139syn match virataDefSubst "\$\(\d\|[DINORS]\|{\I\i\{-}\(\-\i\{-1,}\)*}\)"
140syn case ignore
141" Conditionals
142syn cluster virataGrpCntnPreCon contains=ALLBUT,@virataGrpInComments,@virataGrpFileIdents,@virataGrpInStatmnts
143syn region virataPreConDef transparent matchgroup=virataPreCondit start="^\s*If\>" end="^\s*Endif\>" contains=@virataGrpCntnPreCon
144syn match virataPreCondit contained "^\s*Else\(\s\+If\)\=\>"
145syn region virataPreConDef transparent matchgroup=virataPreCondit start="^\s*ForEach\>" end="^\s*Done\>" contains=@virataGrpCntnPreCon
146" Pre-Processors
147syn region virataPreProc start="^\s*Error\>" start="^\s*Warning\>" oneline end="$" contains=@virataGrpConstants,@virataGrpDefSubsts
148syn cluster virataGrpDefSubsts contains=virataDefSubstError,virataDefSubst
149syn cluster virataGrpPreProcs contains=@virataGrpDefSubsts,virataDefine,virataInclude,virataPreConDef,virataPreCondit,virataPreProc
150
151
152" Synchronize Syntax:
153syn sync clear
154syn sync minlines=50 "for multiple region nesting
155
156
157
158" Define the default highlighting.
159" For version 5.7 and earlier: only when not done already
160" For version 5.8 and later : only when an item doesn't have highlighting yet
161if version >= 508 || !exists("did_virata_syntax_inits")
162 if version < 508
163 let did_virata_syntax_inits = 1
164 command -nargs=+ HiLink hi link <args>
165 else
166 command -nargs=+ HiLink hi def link <args>
167 endif
168
169 " Sub Links:
170 HiLink virataDefSubstError virataPreProcError
171 HiLink virataDefSubst virataPreProc
172 HiLink virataInAlter virataOperator
173 HiLink virataInExec virataOperator
174 HiLink virataInExport virataOperator
175 HiLink virataInImport virataOperator
176 HiLink virataInInstance virataOperator
177 HiLink virataInMake virataOperator
178 HiLink virataInModule virataOperator
179 HiLink virataInProcess virataOperator
180 HiLink virataInMacAddr virataHexNumber
181
182 " Comment Group:
183 HiLink virataComment Comment
184 HiLink virataSpclComment SpecialComment
185 HiLink virataInCommentTodo Todo
186
187 " Constant Group:
188 HiLink virataString String
189 HiLink virataStringError Error
190 HiLink virataCharacter Character
191 HiLink virataSpclChar Special
192 HiLink virataDecNumber Number
193 HiLink virataHexNumber Number
194 HiLink virataSizeNumber Number
195 HiLink virataNumberError Error
196
197 " Identifier Group:
198 HiLink virataIdentError Error
199
200 " PreProc Group:
201 HiLink virataPreProc PreProc
202 HiLink virataDefine Define
203 HiLink virataInclude Include
204 HiLink virataPreCondit PreCondit
205 HiLink virataPreProcError Error
206 HiLink virataPreProcWarn Todo
207
208 " Directive Group:
209 HiLink virataStatement Statement
210 HiLink virataCfgStatement Statement
211 HiLink virataOperator Operator
212 HiLink virataDirective Keyword
213
214 delcommand HiLink
215endif
216
217let b:current_syntax = "virata"
218
219" vim:ts=8:sw=2:noet: