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