1" Vim syntax file 2" Language: Virata AConfig Configuration Script 3" Maintainer: Manuel M.H. Stol <[email protected]> 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: 220