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