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: 16" quit when a syntax file was already loaded 17if exists("b:current_syntax") 18 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. 157" Only when an item doesn't have highlighting yet 158 159" Sub Links: 160hi def link virataDefSubstError virataPreProcError 161hi def link virataDefSubst virataPreProc 162hi def link virataInAlter virataOperator 163hi def link virataInExec virataOperator 164hi def link virataInExport virataOperator 165hi def link virataInImport virataOperator 166hi def link virataInInstance virataOperator 167hi def link virataInMake virataOperator 168hi def link virataInModule virataOperator 169hi def link virataInProcess virataOperator 170hi def link virataInMacAddr virataHexNumber 171 172" Comment Group: 173hi def link virataComment Comment 174hi def link virataSpclComment SpecialComment 175hi def link virataInCommentTodo Todo 176 177" Constant Group: 178hi def link virataString String 179hi def link virataStringError Error 180hi def link virataCharacter Character 181hi def link virataSpclChar Special 182hi def link virataDecNumber Number 183hi def link virataHexNumber Number 184hi def link virataSizeNumber Number 185hi def link virataNumberError Error 186 187" Identifier Group: 188hi def link virataIdentError Error 189 190" PreProc Group: 191hi def link virataPreProc PreProc 192hi def link virataDefine Define 193hi def link virataInclude Include 194hi def link virataPreCondit PreCondit 195hi def link virataPreProcError Error 196hi def link virataPreProcWarn Todo 197 198" Directive Group: 199hi def link virataStatement Statement 200hi def link virataCfgStatement Statement 201hi def link virataOperator Operator 202hi def link virataDirective Keyword 203 204 205let b:current_syntax = "virata" 206 207" vim:ts=8:sw=2:noet: 208