summaryrefslogtreecommitdiff
path: root/runtime/syntax/virata.vim
diff options
context:
space:
mode:
Diffstat (limited to 'runtime/syntax/virata.vim')
-rw-r--r--runtime/syntax/virata.vim219
1 files changed, 219 insertions, 0 deletions
diff --git a/runtime/syntax/virata.vim b/runtime/syntax/virata.vim
new file mode 100644
index 000000000..e597b8e31
--- /dev/null
+++ b/runtime/syntax/virata.vim
@@ -0,0 +1,219 @@
+" Vim syntax file
+" Language: Virata AConfig Configuration Script
+" Maintainer: Manuel M.H. Stol <mmh.stol@gmx.net>
+" Last Change: 2003 May 11
+" Vim URL: http://www.vim.org/lang.html
+" Virata URL: http://www.globespanvirata.com/
+
+
+" Virata AConfig Configuration Script syntax
+" Can be detected by: 1) Extension .hw, .sw, .pkg and .module
+" 2) The file name pattern "mk.*\.cfg"
+" 3) The string "Virata" in the first 5 lines
+
+
+" Setup Syntax:
+if version < 600
+ " Clear old syntax settings
+ syn clear
+elseif exists("b:current_syntax")
+ finish
+endif
+" Virata syntax is case insensitive (mostly)
+syn case ignore
+
+
+
+" Comments:
+" Virata comments start with %, but % is not a keyword character
+syn region virataComment start="^%" start="\s%"lc=1 keepend end="$" contains=@virataGrpInComments
+syn region virataSpclComment start="^%%" start="\s%%"lc=1 keepend end="$" contains=@virataGrpInComments
+syn keyword virataInCommentTodo contained TODO FIXME XXX[XXXXX] REVIEW TBD
+syn cluster virataGrpInComments contains=virataInCommentTodo
+syn cluster virataGrpComments contains=@virataGrpInComments,virataComment,virataSpclComment
+
+
+" Constants:
+syn match virataStringError +["]+
+syn region virataString start=+"+ skip=+\(\\\\\|\\"\)+ end=+"+ oneline contains=virataSpclCharError,virataSpclChar,@virataGrpDefSubsts
+syn match virataCharacter +'[^']\{-}'+ contains=virataSpclCharError,virataSpclChar
+syn match virataSpclChar contained +\\\(x\x\+\|\o\{1,3}\|['\"?\\abefnrtv]\)+
+syn match virataNumberError "\<\d\{-1,}\I\{-1,}\>"
+syn match virataNumberError "\<0x\x*\X\x*\>"
+syn match virataNumberError "\<\d\+\.\d*\(e[+-]\=\d\+\)\=\>"
+syn match virataDecNumber "\<\d\+U\=L\=\>"
+syn match virataHexNumber "\<0x\x\+U\=L\=\>"
+syn match virataSizeNumber "\<\d\+[BKM]\>"he=e-1
+syn match virataSizeNumber "\<\d\+[KM]B\>"he=e-2
+syn cluster virataGrpNumbers contains=virataNumberError,virataDecNumber,virataHexNumber,virataSizeNumber
+syn cluster virataGrpConstants contains=@virataGrpNumbers,virataStringError,virataString,virataCharacter,virataSpclChar
+
+
+" Identifiers:
+syn match virataIdentError contained "\<\D\S*\>"
+syn match virataIdentifier contained "\<\I\i\{-}\(\-\i\{-1,}\)*\>" contains=@virataGrpDefSubsts
+syn match virataFileIdent contained "\F\f*" contains=@virataGrpDefSubsts
+syn cluster virataGrpIdents contains=virataIdentifier,virataIdentError
+syn cluster virataGrpFileIdents contains=virataFileIdent,virataIdentError
+
+
+" Statements:
+syn match virataStatement "^\s*Config\(\(/Kernel\)\=\.\(hs\=\|s\)\)\=\>"
+syn match virataStatement "^\s*Config\s\+\I\i\{-}\(\-\i\{-1,}\)*\.\(hs\=\|s\)\>"
+syn match virataStatement "^\s*Make\.\I\i\{-}\(\-\i\{-1}\)*\>" skipwhite nextgroup=@virataGrpIdents
+syn match virataStatement "^\s*Make\.c\(at\)\=++\s"me=e-1 skipwhite nextgroup=@virataGrpIdents
+syn match virataStatement "^\s*\(Architecture\|GetEnv\|Reserved\|\(Un\)\=Define\|Version\)\>" skipwhite nextgroup=@virataGrpIdents
+syn match virataStatement "^\s*\(Hardware\|ModuleSource\|\(Release\)\=Path\|Software\)\>" skipwhite nextgroup=@virataGrpFileIdents
+syn match virataStatement "^\s*\(DefaultPri\|Hydrogen\)\>" skipwhite nextgroup=virataDecNumber,virataNumberError
+syn match virataStatement "^\s*\(NoInit\|PCI\|SysLink\)\>"
+syn match virataStatement "^\s*Allow\s\+\(ModuleConfig\)\>"
+syn match virataStatement "^\s*NoWarn\s\+\(Export\|Parse\=able\|Relative]\)\>"
+syn match virataStatement "^\s*Debug\s\+O\(ff\|n\)\>"
+
+" Import (Package <exec>|Module <name> from <dir>)
+syn region virataImportDef transparent matchgroup=virataStatement start="^\s*Import\>" keepend end="$" contains=virataInImport,virataModuleDef,virataNumberError,virataStringError,@virataGrpDefSubsts
+syn match virataInImport contained "\<\(Module\|Package\|from\)\>" skipwhite nextgroup=@virataGrpFileIdents
+" Export (Header <header file>|SLibrary <obj file>)
+syn region virataExportDef transparent matchgroup=virataStatement start="^\s*Export\>" keepend end="$" contains=virataInExport,virataNumberError,virataStringError,@virataGrpDefSubsts
+syn match virataInExport contained "\<\(Header\|[SU]Library\)\>" skipwhite nextgroup=@virataGrpFileIdents
+" Process <name> is <dir/exec>
+syn region virataProcessDef transparent matchgroup=virataStatement start="^\s*Process\>" keepend end="$" contains=virataInProcess,virataInExec,virataNumberError,virataStringError,@virataGrpDefSubsts,@virataGrpIdents
+syn match virataInProcess contained "\<is\>"
+" Instance <name> of <module>
+syn region virataInstanceDef transparent matchgroup=virataStatement start="^\s*Instance\>" keepend end="$" contains=virataInInstance,virataNumberError,virataStringError,@virataGrpDefSubsts,@virataGrpIdents
+syn match virataInInstance contained "\<of\>"
+" Module <name> from <dir>
+syn region virataModuleDef transparent matchgroup=virataStatement start="^\s*\(Package\|Module\)\>" keepend end="$" contains=virataInModule,virataNumberError,virataStringError,@virataGrpDefSubsts
+syn match virataInModule contained "^\s*Package\>"hs=e-7 skipwhite nextgroup=@virataGrpIdents
+syn match virataInModule contained "^\s*Module\>"hs=e-6 skipwhite nextgroup=@virataGrpIdents
+syn match virataInModule contained "\<from\>" skipwhite nextgroup=@virataGrpFileIdents
+" Colour <name> from <dir>
+syn region virataColourDef transparent matchgroup=virataStatement start="^\s*Colour\>" keepend end="$" contains=virataInColour,virataNumberError,virataStringError,@virataGrpDefSubsts
+syn match virataInColour contained "^\s*Colour\>"hs=e-6 skipwhite nextgroup=@virataGrpIdents
+syn match virataInColour contained "\<from\>" skipwhite nextgroup=@virataGrpFileIdents
+" Link {<link cmds>}
+" Object {Executable [<ExecOptions>]}
+syn match virataStatement "^\s*\(Link\|Object\)"
+" Executable <name> [<ExecOptions>]
+syn region virataExecDef transparent matchgroup=virataStatement start="^\s*Executable\>" keepend end="$" contains=virataInExec,virataNumberError,virataStringError
+syn match virataInExec contained "^\s*Executable\>" skipwhite nextgroup=@virataGrpDefSubsts,@virataGrpIdents
+syn match virataInExec contained "\<\(epilogue\|pro\(logue\|cess\)\|qhandler\)\>" skipwhite nextgroup=@virataGrpDefSubsts,@virataGrpIdents
+syn match virataInExec contained "\<\(priority\|stack\)\>" skipwhite nextgroup=@virataGrpDefSubsts,@virataGrpNumbers
+" Message <name> {<msg format>}
+" MessageId <number>
+syn match virataStatement "^\s*Message\(Id\)\=\>" skipwhite nextgroup=@virataGrpNumbers
+" MakeRule <make suffix=file> {<make cmds>}
+syn region virataMakeDef transparent matchgroup=virataStatement start="^\s*MakeRule\>" keepend end="$" contains=virataInMake,@virataGrpDefSubsts
+syn case match
+syn match virataInMake contained "\<N\>"
+syn case ignore
+" (Append|Edit|Copy)Rule <make suffix=file> <subst cmd>
+syn match virataStatement "^\s*\(Append\|Copy\|Edit\)Rule\>"
+" AlterRules in <file> <subst cmd>
+syn region virataAlterDef transparent matchgroup=virataStatement start="^\s*AlterRules\>" keepend end="$" contains=virataInAlter,@virataGrpDefSubsts
+syn match virataInAlter contained "\<in\>" skipwhite nextgroup=@virataGrpIdents
+" Clustering
+syn cluster virataGrpInStatmnts contains=virataInImport,virataInExport,virataInExec,virataInProcess,virataInAlter,virataInInstance,virataInModule,virataInColour
+syn cluster virataGrpStatements contains=@virataGrpInStatmnts,virataStatement,virataImportDef,virataExportDef,virataExecDef,virataProcessDef,virataAlterDef,virataInstanceDef,virataModuleDef,virataColourDef
+
+
+" MkFlash.Cfg File Statements:
+syn 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
+syn region virataCfgSizeDef transparent matchgroup=virataCfgStatement start="^\s*\a\{-}Size\>" start="^\s*ConfigInfo\>" keepend end="$" contains=@virataGrpNumbers,@virataGrpDefSubsts,virataIdentError
+syn region virataCfgNumberDef transparent matchgroup=virataCfgStatement start="^\s*FlashchipNum\(b\(er\=\)\=\)\=\>" start="^\s*Granularity\>" keepend end="$" contains=@virataGrpNumbers,@virataGrpDefSubsts
+syn region virataCfgMacAddrDef transparent matchgroup=virataCfgStatement start="^\s*MacAddress\>" keepend end="$" contains=virataNumberError,virataStringError,virataIdentError,virataInMacAddr,@virataGrpDefSubsts
+syn match virataInMacAddr contained "\x[:]\x\{1,2}\>"lc=2
+syn match virataInMacAddr contained "\s\x\{1,2}[:]\x"lc=1,me=e-1,he=e-2 nextgroup=virataInMacAddr
+syn match virataCfgStatement "^\s*Target\>" skipwhite nextgroup=@virataGrpIdents
+syn cluster virataGrpCfgs contains=virataCfgStatement,virataCfgFileDef,virataCfgSizeDef,virataCfgNumberDef,virataCfgMacAddrDef,virataInMacAddr
+
+
+
+" PreProcessor Instructions:
+" Defines
+syn match virataDefine "^\s*\(Un\)\=Set\>" skipwhite nextgroup=@virataGrpIdents
+syn match virataInclude "^\s*Include\>" skipwhite nextgroup=@virataGrpFileIdents
+syn match virataDefSubstError "[^$]\$"lc=1
+syn match virataDefSubstError "\$\(\w\|{\(.\{-}}\)\=\)"
+syn case match
+syn match virataDefSubst "\$\(\d\|[DINORS]\|{\I\i\{-}\(\-\i\{-1,}\)*}\)"
+syn case ignore
+" Conditionals
+syn cluster virataGrpCntnPreCon contains=ALLBUT,@virataGrpInComments,@virataGrpFileIdents,@virataGrpInStatmnts
+syn region virataPreConDef transparent matchgroup=virataPreCondit start="^\s*If\>" end="^\s*Endif\>" contains=@virataGrpCntnPreCon
+syn match virataPreCondit contained "^\s*Else\(\s\+If\)\=\>"
+syn region virataPreConDef transparent matchgroup=virataPreCondit start="^\s*ForEach\>" end="^\s*Done\>" contains=@virataGrpCntnPreCon
+" Pre-Processors
+syn region virataPreProc start="^\s*Error\>" start="^\s*Warning\>" oneline end="$" contains=@virataGrpConstants,@virataGrpDefSubsts
+syn cluster virataGrpDefSubsts contains=virataDefSubstError,virataDefSubst
+syn cluster virataGrpPreProcs contains=@virataGrpDefSubsts,virataDefine,virataInclude,virataPreConDef,virataPreCondit,virataPreProc
+
+
+" Synchronize Syntax:
+syn sync clear
+syn sync minlines=50 "for multiple region nesting
+
+
+
+" Define the default highlighting.
+" For version 5.7 and earlier: only when not done already
+" For version 5.8 and later : only when an item doesn't have highlighting yet
+if version >= 508 || !exists("did_virata_syntax_inits")
+ if version < 508
+ let did_virata_syntax_inits = 1
+ command -nargs=+ HiLink hi link <args>
+ else
+ command -nargs=+ HiLink hi def link <args>
+ endif
+
+ " Sub Links:
+ HiLink virataDefSubstError virataPreProcError
+ HiLink virataDefSubst virataPreProc
+ HiLink virataInAlter virataOperator
+ HiLink virataInExec virataOperator
+ HiLink virataInExport virataOperator
+ HiLink virataInImport virataOperator
+ HiLink virataInInstance virataOperator
+ HiLink virataInMake virataOperator
+ HiLink virataInModule virataOperator
+ HiLink virataInProcess virataOperator
+ HiLink virataInMacAddr virataHexNumber
+
+ " Comment Group:
+ HiLink virataComment Comment
+ HiLink virataSpclComment SpecialComment
+ HiLink virataInCommentTodo Todo
+
+ " Constant Group:
+ HiLink virataString String
+ HiLink virataStringError Error
+ HiLink virataCharacter Character
+ HiLink virataSpclChar Special
+ HiLink virataDecNumber Number
+ HiLink virataHexNumber Number
+ HiLink virataSizeNumber Number
+ HiLink virataNumberError Error
+
+ " Identifier Group:
+ HiLink virataIdentError Error
+
+ " PreProc Group:
+ HiLink virataPreProc PreProc
+ HiLink virataDefine Define
+ HiLink virataInclude Include
+ HiLink virataPreCondit PreCondit
+ HiLink virataPreProcError Error
+ HiLink virataPreProcWarn Todo
+
+ " Directive Group:
+ HiLink virataStatement Statement
+ HiLink virataCfgStatement Statement
+ HiLink virataOperator Operator
+ HiLink virataDirective Keyword
+
+ delcommand HiLink
+endif
+
+let b:current_syntax = "virata"
+
+" vim:ts=8:sw=2:noet: