1" Vim syntax file 2" Language: ABEL 3" Maintainer: John Cook <[email protected]> 4" Last Change: 2011 Dec 27 5 6" For version 5.x: Clear all syntax items 7" For version 6.x: Quit when a syntax file was already loaded 8if version < 600 9 syntax clear 10elseif exists("b:current_syntax") 11 finish 12endif 13 14let s:cpo_save = &cpo 15set cpo&vim 16 17" this language is oblivious to case 18syn case ignore 19 20" A bunch of keywords 21syn keyword abelHeader module title device options 22syn keyword abelSection declarations equations test_vectors end 23syn keyword abelDeclaration state truth_table state_diagram property 24syn keyword abelType pin node attribute constant macro library 25 26syn keyword abelTypeId com reg neg pos buffer dc reg_d reg_t contained 27syn keyword abelTypeId reg_sr reg_jk reg_g retain xor invert contained 28 29syn keyword abelStatement when then else if with endwith case endcase 30syn keyword abelStatement fuses expr trace 31 32" option to omit obsolete statements 33if exists("abel_obsolete_ok") 34 syn keyword abelStatement enable flag in 35else 36 syn keyword abelError enable flag in 37endif 38 39" directives 40syn match abelDirective "@alternate" 41syn match abelDirective "@standard" 42syn match abelDirective "@const" 43syn match abelDirective "@dcset" 44syn match abelDirective "@include" 45syn match abelDirective "@page" 46syn match abelDirective "@radix" 47syn match abelDirective "@repeat" 48syn match abelDirective "@irp" 49syn match abelDirective "@expr" 50syn match abelDirective "@if" 51syn match abelDirective "@ifb" 52syn match abelDirective "@ifnb" 53syn match abelDirective "@ifdef" 54syn match abelDirective "@ifndef" 55syn match abelDirective "@ifiden" 56syn match abelDirective "@ifniden" 57 58syn keyword abelTodo contained TODO XXX FIXME 59 60" wrap up type identifiers to differentiate them from normal strings 61syn region abelSpecifier start='istype' end=';' contains=abelTypeIdChar,abelTypeId,abelTypeIdEnd keepend 62syn match abelTypeIdChar "[,']" contained 63syn match abelTypeIdEnd ";" contained 64 65" string contstants and special characters within them 66syn match abelSpecial contained "\\['\\]" 67syn region abelString start=+'+ skip=+\\"+ end=+'+ contains=abelSpecial 68 69" valid integer number formats (decimal, binary, octal, hex) 70syn match abelNumber "\<[-+]\=[0-9]\+\>" 71syn match abelNumber "\^d[0-9]\+\>" 72syn match abelNumber "\^b[01]\+\>" 73syn match abelNumber "\^o[0-7]\+\>" 74syn match abelNumber "\^h[0-9a-f]\+\>" 75 76" special characters 77" (define these after abelOperator so ?= overrides ?) 78syn match abelSpecialChar "[\[\](){},;:?]" 79 80" operators 81syn match abelLogicalOperator "[!#&$]" 82syn match abelRangeOperator "\.\." 83syn match abelAlternateOperator "[/*+]" 84syn match abelAlternateOperator ":[+*]:" 85syn match abelArithmeticOperator "[-%]" 86syn match abelArithmeticOperator "<<" 87syn match abelArithmeticOperator ">>" 88syn match abelRelationalOperator "[<>!=]=" 89syn match abelRelationalOperator "[<>]" 90syn match abelAssignmentOperator "[:?]\==" 91syn match abelAssignmentOperator "?:=" 92syn match abelTruthTableOperator "->" 93 94" signal extensions 95syn match abelExtension "\.aclr\>" 96syn match abelExtension "\.aset\>" 97syn match abelExtension "\.clk\>" 98syn match abelExtension "\.clr\>" 99syn match abelExtension "\.com\>" 100syn match abelExtension "\.fb\>" 101syn match abelExtension "\.[co]e\>" 102syn match abelExtension "\.l[eh]\>" 103syn match abelExtension "\.fc\>" 104syn match abelExtension "\.pin\>" 105syn match abelExtension "\.set\>" 106syn match abelExtension "\.[djksrtq]\>" 107syn match abelExtension "\.pr\>" 108syn match abelExtension "\.re\>" 109syn match abelExtension "\.a[pr]\>" 110syn match abelExtension "\.s[pr]\>" 111 112" special constants 113syn match abelConstant "\.[ckudfpxz]\." 114syn match abelConstant "\.sv[2-9]\." 115 116" one-line comments 117syn region abelComment start=+"+ end=+"\|$+ contains=abelNumber,abelTodo 118" option to prevent C++ style comments 119if !exists("abel_cpp_comments_illegal") 120 syn region abelComment start=+//+ end=+$+ contains=abelNumber,abelTodo 121endif 122 123syn sync minlines=1 124 125" Define the default highlighting. 126" For version 5.7 and earlier: only when not done already 127" For version 5.8 and later: only when an item doesn't have highlighting yet 128if version >= 508 || !exists("did_abel_syn_inits") 129 if version < 508 130 let did_abel_syn_inits = 1 131 command -nargs=+ HiLink hi link <args> 132 else 133 command -nargs=+ HiLink hi def link <args> 134 endif 135 136 " The default highlighting. 137 HiLink abelHeader abelStatement 138 HiLink abelSection abelStatement 139 HiLink abelDeclaration abelStatement 140 HiLink abelLogicalOperator abelOperator 141 HiLink abelRangeOperator abelOperator 142 HiLink abelAlternateOperator abelOperator 143 HiLink abelArithmeticOperator abelOperator 144 HiLink abelRelationalOperator abelOperator 145 HiLink abelAssignmentOperator abelOperator 146 HiLink abelTruthTableOperator abelOperator 147 HiLink abelSpecifier abelStatement 148 HiLink abelOperator abelStatement 149 HiLink abelStatement Statement 150 HiLink abelIdentifier Identifier 151 HiLink abelTypeId abelType 152 HiLink abelTypeIdChar abelType 153 HiLink abelType Type 154 HiLink abelNumber abelString 155 HiLink abelString String 156 HiLink abelConstant Constant 157 HiLink abelComment Comment 158 HiLink abelExtension abelSpecial 159 HiLink abelSpecialChar abelSpecial 160 HiLink abelTypeIdEnd abelSpecial 161 HiLink abelSpecial Special 162 HiLink abelDirective PreProc 163 HiLink abelTodo Todo 164 HiLink abelError Error 165 166 delcommand HiLink 167endif 168 169let b:current_syntax = "abel" 170 171let &cpo = s:cpo_save 172unlet s:cpo_save 173 174" vim:ts=8 175