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