blob: 3023f13a917929a0dd433a23ecc1e4cf6ddae23e [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:
Bram Moolenaar89bcfda2016-08-30 23:26:57 +020016" quit when a syntax file was already loaded
17if exists("b:current_syntax")
Bram Moolenaar071d4272004-06-13 20:20:40 +000018 finish
19endif
20" Virata syntax is case insensitive (mostly)
21syn case ignore
22
23
24
25" Comments:
26" Virata comments start with %, but % is not a keyword character
27syn region virataComment start="^%" start="\s%"lc=1 keepend end="$" contains=@virataGrpInComments
28syn region virataSpclComment start="^%%" start="\s%%"lc=1 keepend end="$" contains=@virataGrpInComments
29syn keyword virataInCommentTodo contained TODO FIXME XXX[XXXXX] REVIEW TBD
30syn cluster virataGrpInComments contains=virataInCommentTodo
31syn cluster virataGrpComments contains=@virataGrpInComments,virataComment,virataSpclComment
32
33
34" Constants:
35syn match virataStringError +["]+
36syn region virataString start=+"+ skip=+\(\\\\\|\\"\)+ end=+"+ oneline contains=virataSpclCharError,virataSpclChar,@virataGrpDefSubsts
37syn match virataCharacter +'[^']\{-}'+ contains=virataSpclCharError,virataSpclChar
38syn match virataSpclChar contained +\\\(x\x\+\|\o\{1,3}\|['\"?\\abefnrtv]\)+
39syn match virataNumberError "\<\d\{-1,}\I\{-1,}\>"
40syn match virataNumberError "\<0x\x*\X\x*\>"
41syn match virataNumberError "\<\d\+\.\d*\(e[+-]\=\d\+\)\=\>"
42syn match virataDecNumber "\<\d\+U\=L\=\>"
43syn match virataHexNumber "\<0x\x\+U\=L\=\>"
44syn match virataSizeNumber "\<\d\+[BKM]\>"he=e-1
45syn match virataSizeNumber "\<\d\+[KM]B\>"he=e-2
46syn cluster virataGrpNumbers contains=virataNumberError,virataDecNumber,virataHexNumber,virataSizeNumber
47syn cluster virataGrpConstants contains=@virataGrpNumbers,virataStringError,virataString,virataCharacter,virataSpclChar
48
49
50" Identifiers:
51syn match virataIdentError contained "\<\D\S*\>"
52syn match virataIdentifier contained "\<\I\i\{-}\(\-\i\{-1,}\)*\>" contains=@virataGrpDefSubsts
53syn match virataFileIdent contained "\F\f*" contains=@virataGrpDefSubsts
54syn cluster virataGrpIdents contains=virataIdentifier,virataIdentError
55syn cluster virataGrpFileIdents contains=virataFileIdent,virataIdentError
56
57
58" Statements:
59syn match virataStatement "^\s*Config\(\(/Kernel\)\=\.\(hs\=\|s\)\)\=\>"
60syn match virataStatement "^\s*Config\s\+\I\i\{-}\(\-\i\{-1,}\)*\.\(hs\=\|s\)\>"
61syn match virataStatement "^\s*Make\.\I\i\{-}\(\-\i\{-1}\)*\>" skipwhite nextgroup=@virataGrpIdents
62syn match virataStatement "^\s*Make\.c\(at\)\=++\s"me=e-1 skipwhite nextgroup=@virataGrpIdents
63syn match virataStatement "^\s*\(Architecture\|GetEnv\|Reserved\|\(Un\)\=Define\|Version\)\>" skipwhite nextgroup=@virataGrpIdents
64syn match virataStatement "^\s*\(Hardware\|ModuleSource\|\(Release\)\=Path\|Software\)\>" skipwhite nextgroup=@virataGrpFileIdents
65syn match virataStatement "^\s*\(DefaultPri\|Hydrogen\)\>" skipwhite nextgroup=virataDecNumber,virataNumberError
66syn match virataStatement "^\s*\(NoInit\|PCI\|SysLink\)\>"
67syn match virataStatement "^\s*Allow\s\+\(ModuleConfig\)\>"
68syn match virataStatement "^\s*NoWarn\s\+\(Export\|Parse\=able\|Relative]\)\>"
69syn match virataStatement "^\s*Debug\s\+O\(ff\|n\)\>"
70
71" Import (Package <exec>|Module <name> from <dir>)
72syn region virataImportDef transparent matchgroup=virataStatement start="^\s*Import\>" keepend end="$" contains=virataInImport,virataModuleDef,virataNumberError,virataStringError,@virataGrpDefSubsts
73syn match virataInImport contained "\<\(Module\|Package\|from\)\>" skipwhite nextgroup=@virataGrpFileIdents
74" Export (Header <header file>|SLibrary <obj file>)
75syn region virataExportDef transparent matchgroup=virataStatement start="^\s*Export\>" keepend end="$" contains=virataInExport,virataNumberError,virataStringError,@virataGrpDefSubsts
76syn match virataInExport contained "\<\(Header\|[SU]Library\)\>" skipwhite nextgroup=@virataGrpFileIdents
77" Process <name> is <dir/exec>
78syn region virataProcessDef transparent matchgroup=virataStatement start="^\s*Process\>" keepend end="$" contains=virataInProcess,virataInExec,virataNumberError,virataStringError,@virataGrpDefSubsts,@virataGrpIdents
79syn match virataInProcess contained "\<is\>"
80" Instance <name> of <module>
81syn region virataInstanceDef transparent matchgroup=virataStatement start="^\s*Instance\>" keepend end="$" contains=virataInInstance,virataNumberError,virataStringError,@virataGrpDefSubsts,@virataGrpIdents
82syn match virataInInstance contained "\<of\>"
83" Module <name> from <dir>
84syn region virataModuleDef transparent matchgroup=virataStatement start="^\s*\(Package\|Module\)\>" keepend end="$" contains=virataInModule,virataNumberError,virataStringError,@virataGrpDefSubsts
85syn match virataInModule contained "^\s*Package\>"hs=e-7 skipwhite nextgroup=@virataGrpIdents
86syn match virataInModule contained "^\s*Module\>"hs=e-6 skipwhite nextgroup=@virataGrpIdents
87syn match virataInModule contained "\<from\>" skipwhite nextgroup=@virataGrpFileIdents
88" Colour <name> from <dir>
89syn region virataColourDef transparent matchgroup=virataStatement start="^\s*Colour\>" keepend end="$" contains=virataInColour,virataNumberError,virataStringError,@virataGrpDefSubsts
90syn match virataInColour contained "^\s*Colour\>"hs=e-6 skipwhite nextgroup=@virataGrpIdents
91syn match virataInColour contained "\<from\>" skipwhite nextgroup=@virataGrpFileIdents
92" Link {<link cmds>}
93" Object {Executable [<ExecOptions>]}
94syn match virataStatement "^\s*\(Link\|Object\)"
95" Executable <name> [<ExecOptions>]
96syn region virataExecDef transparent matchgroup=virataStatement start="^\s*Executable\>" keepend end="$" contains=virataInExec,virataNumberError,virataStringError
97syn match virataInExec contained "^\s*Executable\>" skipwhite nextgroup=@virataGrpDefSubsts,@virataGrpIdents
98syn match virataInExec contained "\<\(epilogue\|pro\(logue\|cess\)\|qhandler\)\>" skipwhite nextgroup=@virataGrpDefSubsts,@virataGrpIdents
99syn match virataInExec contained "\<\(priority\|stack\)\>" skipwhite nextgroup=@virataGrpDefSubsts,@virataGrpNumbers
100" Message <name> {<msg format>}
101" MessageId <number>
102syn match virataStatement "^\s*Message\(Id\)\=\>" skipwhite nextgroup=@virataGrpNumbers
103" MakeRule <make suffix=file> {<make cmds>}
104syn region virataMakeDef transparent matchgroup=virataStatement start="^\s*MakeRule\>" keepend end="$" contains=virataInMake,@virataGrpDefSubsts
105syn case match
106syn match virataInMake contained "\<N\>"
107syn case ignore
108" (Append|Edit|Copy)Rule <make suffix=file> <subst cmd>
109syn match virataStatement "^\s*\(Append\|Copy\|Edit\)Rule\>"
110" AlterRules in <file> <subst cmd>
111syn region virataAlterDef transparent matchgroup=virataStatement start="^\s*AlterRules\>" keepend end="$" contains=virataInAlter,@virataGrpDefSubsts
112syn match virataInAlter contained "\<in\>" skipwhite nextgroup=@virataGrpIdents
113" Clustering
114syn cluster virataGrpInStatmnts contains=virataInImport,virataInExport,virataInExec,virataInProcess,virataInAlter,virataInInstance,virataInModule,virataInColour
115syn cluster virataGrpStatements contains=@virataGrpInStatmnts,virataStatement,virataImportDef,virataExportDef,virataExecDef,virataProcessDef,virataAlterDef,virataInstanceDef,virataModuleDef,virataColourDef
116
117
118" MkFlash.Cfg File Statements:
119syn 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
120syn region virataCfgSizeDef transparent matchgroup=virataCfgStatement start="^\s*\a\{-}Size\>" start="^\s*ConfigInfo\>" keepend end="$" contains=@virataGrpNumbers,@virataGrpDefSubsts,virataIdentError
121syn region virataCfgNumberDef transparent matchgroup=virataCfgStatement start="^\s*FlashchipNum\(b\(er\=\)\=\)\=\>" start="^\s*Granularity\>" keepend end="$" contains=@virataGrpNumbers,@virataGrpDefSubsts
122syn region virataCfgMacAddrDef transparent matchgroup=virataCfgStatement start="^\s*MacAddress\>" keepend end="$" contains=virataNumberError,virataStringError,virataIdentError,virataInMacAddr,@virataGrpDefSubsts
123syn match virataInMacAddr contained "\x[:]\x\{1,2}\>"lc=2
124syn match virataInMacAddr contained "\s\x\{1,2}[:]\x"lc=1,me=e-1,he=e-2 nextgroup=virataInMacAddr
125syn match virataCfgStatement "^\s*Target\>" skipwhite nextgroup=@virataGrpIdents
126syn cluster virataGrpCfgs contains=virataCfgStatement,virataCfgFileDef,virataCfgSizeDef,virataCfgNumberDef,virataCfgMacAddrDef,virataInMacAddr
127
128
129
130" PreProcessor Instructions:
131" Defines
132syn match virataDefine "^\s*\(Un\)\=Set\>" skipwhite nextgroup=@virataGrpIdents
133syn match virataInclude "^\s*Include\>" skipwhite nextgroup=@virataGrpFileIdents
134syn match virataDefSubstError "[^$]\$"lc=1
135syn match virataDefSubstError "\$\(\w\|{\(.\{-}}\)\=\)"
136syn case match
137syn match virataDefSubst "\$\(\d\|[DINORS]\|{\I\i\{-}\(\-\i\{-1,}\)*}\)"
138syn case ignore
139" Conditionals
140syn cluster virataGrpCntnPreCon contains=ALLBUT,@virataGrpInComments,@virataGrpFileIdents,@virataGrpInStatmnts
141syn region virataPreConDef transparent matchgroup=virataPreCondit start="^\s*If\>" end="^\s*Endif\>" contains=@virataGrpCntnPreCon
142syn match virataPreCondit contained "^\s*Else\(\s\+If\)\=\>"
143syn region virataPreConDef transparent matchgroup=virataPreCondit start="^\s*ForEach\>" end="^\s*Done\>" contains=@virataGrpCntnPreCon
144" Pre-Processors
145syn region virataPreProc start="^\s*Error\>" start="^\s*Warning\>" oneline end="$" contains=@virataGrpConstants,@virataGrpDefSubsts
146syn cluster virataGrpDefSubsts contains=virataDefSubstError,virataDefSubst
147syn cluster virataGrpPreProcs contains=@virataGrpDefSubsts,virataDefine,virataInclude,virataPreConDef,virataPreCondit,virataPreProc
148
149
150" Synchronize Syntax:
151syn sync clear
152syn sync minlines=50 "for multiple region nesting
153
154
155
156" Define the default highlighting.
Bram Moolenaar89bcfda2016-08-30 23:26:57 +0200157" Only when an item doesn't have highlighting yet
158command -nargs=+ HiLink hi def link <args>
Bram Moolenaar071d4272004-06-13 20:20:40 +0000159
Bram Moolenaar89bcfda2016-08-30 23:26:57 +0200160" Sub Links:
161HiLink virataDefSubstError virataPreProcError
162HiLink virataDefSubst virataPreProc
163HiLink virataInAlter virataOperator
164HiLink virataInExec virataOperator
165HiLink virataInExport virataOperator
166HiLink virataInImport virataOperator
167HiLink virataInInstance virataOperator
168HiLink virataInMake virataOperator
169HiLink virataInModule virataOperator
170HiLink virataInProcess virataOperator
171HiLink virataInMacAddr virataHexNumber
Bram Moolenaar071d4272004-06-13 20:20:40 +0000172
Bram Moolenaar89bcfda2016-08-30 23:26:57 +0200173" Comment Group:
174HiLink virataComment Comment
175HiLink virataSpclComment SpecialComment
176HiLink virataInCommentTodo Todo
Bram Moolenaar071d4272004-06-13 20:20:40 +0000177
Bram Moolenaar89bcfda2016-08-30 23:26:57 +0200178" Constant Group:
179HiLink virataString String
180HiLink virataStringError Error
181HiLink virataCharacter Character
182HiLink virataSpclChar Special
183HiLink virataDecNumber Number
184HiLink virataHexNumber Number
185HiLink virataSizeNumber Number
186HiLink virataNumberError Error
Bram Moolenaar071d4272004-06-13 20:20:40 +0000187
Bram Moolenaar89bcfda2016-08-30 23:26:57 +0200188" Identifier Group:
189HiLink virataIdentError Error
Bram Moolenaar071d4272004-06-13 20:20:40 +0000190
Bram Moolenaar89bcfda2016-08-30 23:26:57 +0200191" PreProc Group:
192HiLink virataPreProc PreProc
193HiLink virataDefine Define
194HiLink virataInclude Include
195HiLink virataPreCondit PreCondit
196HiLink virataPreProcError Error
197HiLink virataPreProcWarn Todo
Bram Moolenaar071d4272004-06-13 20:20:40 +0000198
Bram Moolenaar89bcfda2016-08-30 23:26:57 +0200199" Directive Group:
200HiLink virataStatement Statement
201HiLink virataCfgStatement Statement
202HiLink virataOperator Operator
203HiLink virataDirective Keyword
Bram Moolenaar071d4272004-06-13 20:20:40 +0000204
Bram Moolenaar89bcfda2016-08-30 23:26:57 +0200205delcommand HiLink
Bram Moolenaar071d4272004-06-13 20:20:40 +0000206
207let b:current_syntax = "virata"
208
209" vim:ts=8:sw=2:noet: