virata.vim 11 KB

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