1071d4279SBram Moolenaar" Vim syntax file 2071d4279SBram Moolenaar" Language: ABEL 3b6b046b2SBram Moolenaar" Maintainer: John Cook <[email protected]> 4b6b046b2SBram Moolenaar" Last Change: 2011 Dec 27 5071d4279SBram Moolenaar 689bcfda6SBram Moolenaar" quit when a syntax file was already loaded 789bcfda6SBram Moolenaarif exists("b:current_syntax") 8071d4279SBram Moolenaar finish 9071d4279SBram Moolenaarendif 10071d4279SBram Moolenaar 11b6b046b2SBram Moolenaarlet s:cpo_save = &cpo 12b6b046b2SBram Moolenaarset cpo&vim 13b6b046b2SBram Moolenaar 14071d4279SBram Moolenaar" this language is oblivious to case 15071d4279SBram Moolenaarsyn case ignore 16071d4279SBram Moolenaar 17071d4279SBram Moolenaar" A bunch of keywords 18071d4279SBram Moolenaarsyn keyword abelHeader module title device options 19071d4279SBram Moolenaarsyn keyword abelSection declarations equations test_vectors end 20071d4279SBram Moolenaarsyn keyword abelDeclaration state truth_table state_diagram property 21071d4279SBram Moolenaarsyn keyword abelType pin node attribute constant macro library 22071d4279SBram Moolenaar 23071d4279SBram Moolenaarsyn keyword abelTypeId com reg neg pos buffer dc reg_d reg_t contained 24071d4279SBram Moolenaarsyn keyword abelTypeId reg_sr reg_jk reg_g retain xor invert contained 25071d4279SBram Moolenaar 26071d4279SBram Moolenaarsyn keyword abelStatement when then else if with endwith case endcase 27071d4279SBram Moolenaarsyn keyword abelStatement fuses expr trace 28071d4279SBram Moolenaar 29071d4279SBram Moolenaar" option to omit obsolete statements 30071d4279SBram Moolenaarif exists("abel_obsolete_ok") 31071d4279SBram Moolenaar syn keyword abelStatement enable flag in 32071d4279SBram Moolenaarelse 33071d4279SBram Moolenaar syn keyword abelError enable flag in 34071d4279SBram Moolenaarendif 35071d4279SBram Moolenaar 36071d4279SBram Moolenaar" directives 37071d4279SBram Moolenaarsyn match abelDirective "@alternate" 38071d4279SBram Moolenaarsyn match abelDirective "@standard" 39071d4279SBram Moolenaarsyn match abelDirective "@const" 40071d4279SBram Moolenaarsyn match abelDirective "@dcset" 41071d4279SBram Moolenaarsyn match abelDirective "@include" 42071d4279SBram Moolenaarsyn match abelDirective "@page" 43071d4279SBram Moolenaarsyn match abelDirective "@radix" 44071d4279SBram Moolenaarsyn match abelDirective "@repeat" 45071d4279SBram Moolenaarsyn match abelDirective "@irp" 46071d4279SBram Moolenaarsyn match abelDirective "@expr" 47071d4279SBram Moolenaarsyn match abelDirective "@if" 48071d4279SBram Moolenaarsyn match abelDirective "@ifb" 49071d4279SBram Moolenaarsyn match abelDirective "@ifnb" 50071d4279SBram Moolenaarsyn match abelDirective "@ifdef" 51071d4279SBram Moolenaarsyn match abelDirective "@ifndef" 52071d4279SBram Moolenaarsyn match abelDirective "@ifiden" 53071d4279SBram Moolenaarsyn match abelDirective "@ifniden" 54071d4279SBram Moolenaar 55071d4279SBram Moolenaarsyn keyword abelTodo contained TODO XXX FIXME 56071d4279SBram Moolenaar 57071d4279SBram Moolenaar" wrap up type identifiers to differentiate them from normal strings 58071d4279SBram Moolenaarsyn region abelSpecifier start='istype' end=';' contains=abelTypeIdChar,abelTypeId,abelTypeIdEnd keepend 59071d4279SBram Moolenaarsyn match abelTypeIdChar "[,']" contained 60071d4279SBram Moolenaarsyn match abelTypeIdEnd ";" contained 61071d4279SBram Moolenaar 62*6c391a74SBram Moolenaar" string constants and special characters within them 63071d4279SBram Moolenaarsyn match abelSpecial contained "\\['\\]" 64071d4279SBram Moolenaarsyn region abelString start=+'+ skip=+\\"+ end=+'+ contains=abelSpecial 65071d4279SBram Moolenaar 66071d4279SBram Moolenaar" valid integer number formats (decimal, binary, octal, hex) 67071d4279SBram Moolenaarsyn match abelNumber "\<[-+]\=[0-9]\+\>" 68071d4279SBram Moolenaarsyn match abelNumber "\^d[0-9]\+\>" 69071d4279SBram Moolenaarsyn match abelNumber "\^b[01]\+\>" 70071d4279SBram Moolenaarsyn match abelNumber "\^o[0-7]\+\>" 71071d4279SBram Moolenaarsyn match abelNumber "\^h[0-9a-f]\+\>" 72071d4279SBram Moolenaar 73071d4279SBram Moolenaar" special characters 74071d4279SBram Moolenaar" (define these after abelOperator so ?= overrides ?) 75071d4279SBram Moolenaarsyn match abelSpecialChar "[\[\](){},;:?]" 76071d4279SBram Moolenaar 77071d4279SBram Moolenaar" operators 78071d4279SBram Moolenaarsyn match abelLogicalOperator "[!#&$]" 79071d4279SBram Moolenaarsyn match abelRangeOperator "\.\." 80071d4279SBram Moolenaarsyn match abelAlternateOperator "[/*+]" 81071d4279SBram Moolenaarsyn match abelAlternateOperator ":[+*]:" 82071d4279SBram Moolenaarsyn match abelArithmeticOperator "[-%]" 83071d4279SBram Moolenaarsyn match abelArithmeticOperator "<<" 84071d4279SBram Moolenaarsyn match abelArithmeticOperator ">>" 85071d4279SBram Moolenaarsyn match abelRelationalOperator "[<>!=]=" 86071d4279SBram Moolenaarsyn match abelRelationalOperator "[<>]" 87071d4279SBram Moolenaarsyn match abelAssignmentOperator "[:?]\==" 88071d4279SBram Moolenaarsyn match abelAssignmentOperator "?:=" 89071d4279SBram Moolenaarsyn match abelTruthTableOperator "->" 90071d4279SBram Moolenaar 91071d4279SBram Moolenaar" signal extensions 92071d4279SBram Moolenaarsyn match abelExtension "\.aclr\>" 93071d4279SBram Moolenaarsyn match abelExtension "\.aset\>" 94071d4279SBram Moolenaarsyn match abelExtension "\.clk\>" 95071d4279SBram Moolenaarsyn match abelExtension "\.clr\>" 96071d4279SBram Moolenaarsyn match abelExtension "\.com\>" 97071d4279SBram Moolenaarsyn match abelExtension "\.fb\>" 98071d4279SBram Moolenaarsyn match abelExtension "\.[co]e\>" 99071d4279SBram Moolenaarsyn match abelExtension "\.l[eh]\>" 100071d4279SBram Moolenaarsyn match abelExtension "\.fc\>" 101071d4279SBram Moolenaarsyn match abelExtension "\.pin\>" 102071d4279SBram Moolenaarsyn match abelExtension "\.set\>" 103071d4279SBram Moolenaarsyn match abelExtension "\.[djksrtq]\>" 104071d4279SBram Moolenaarsyn match abelExtension "\.pr\>" 105071d4279SBram Moolenaarsyn match abelExtension "\.re\>" 106071d4279SBram Moolenaarsyn match abelExtension "\.a[pr]\>" 107071d4279SBram Moolenaarsyn match abelExtension "\.s[pr]\>" 108071d4279SBram Moolenaar 109071d4279SBram Moolenaar" special constants 110071d4279SBram Moolenaarsyn match abelConstant "\.[ckudfpxz]\." 111071d4279SBram Moolenaarsyn match abelConstant "\.sv[2-9]\." 112071d4279SBram Moolenaar 113071d4279SBram Moolenaar" one-line comments 114071d4279SBram Moolenaarsyn region abelComment start=+"+ end=+"\|$+ contains=abelNumber,abelTodo 115071d4279SBram Moolenaar" option to prevent C++ style comments 116071d4279SBram Moolenaarif !exists("abel_cpp_comments_illegal") 117071d4279SBram Moolenaar syn region abelComment start=+//+ end=+$+ contains=abelNumber,abelTodo 118071d4279SBram Moolenaarendif 119071d4279SBram Moolenaar 120071d4279SBram Moolenaarsyn sync minlines=1 121071d4279SBram Moolenaar 122071d4279SBram Moolenaar" Define the default highlighting. 12389bcfda6SBram Moolenaar" Only when an item doesn't have highlighting yet 124071d4279SBram Moolenaar 125071d4279SBram Moolenaar" The default highlighting. 126f37506f6SBram Moolenaarhi def link abelHeader abelStatement 127f37506f6SBram Moolenaarhi def link abelSection abelStatement 128f37506f6SBram Moolenaarhi def link abelDeclaration abelStatement 129f37506f6SBram Moolenaarhi def link abelLogicalOperator abelOperator 130f37506f6SBram Moolenaarhi def link abelRangeOperator abelOperator 131f37506f6SBram Moolenaarhi def link abelAlternateOperator abelOperator 132f37506f6SBram Moolenaarhi def link abelArithmeticOperator abelOperator 133f37506f6SBram Moolenaarhi def link abelRelationalOperator abelOperator 134f37506f6SBram Moolenaarhi def link abelAssignmentOperator abelOperator 135f37506f6SBram Moolenaarhi def link abelTruthTableOperator abelOperator 136f37506f6SBram Moolenaarhi def link abelSpecifier abelStatement 137f37506f6SBram Moolenaarhi def link abelOperator abelStatement 138f37506f6SBram Moolenaarhi def link abelStatement Statement 139f37506f6SBram Moolenaarhi def link abelIdentifier Identifier 140f37506f6SBram Moolenaarhi def link abelTypeId abelType 141f37506f6SBram Moolenaarhi def link abelTypeIdChar abelType 142f37506f6SBram Moolenaarhi def link abelType Type 143f37506f6SBram Moolenaarhi def link abelNumber abelString 144f37506f6SBram Moolenaarhi def link abelString String 145f37506f6SBram Moolenaarhi def link abelConstant Constant 146f37506f6SBram Moolenaarhi def link abelComment Comment 147f37506f6SBram Moolenaarhi def link abelExtension abelSpecial 148f37506f6SBram Moolenaarhi def link abelSpecialChar abelSpecial 149f37506f6SBram Moolenaarhi def link abelTypeIdEnd abelSpecial 150f37506f6SBram Moolenaarhi def link abelSpecial Special 151f37506f6SBram Moolenaarhi def link abelDirective PreProc 152f37506f6SBram Moolenaarhi def link abelTodo Todo 153f37506f6SBram Moolenaarhi def link abelError Error 154071d4279SBram Moolenaar 155071d4279SBram Moolenaar 156071d4279SBram Moolenaarlet b:current_syntax = "abel" 157b6b046b2SBram Moolenaar 158b6b046b2SBram Moolenaarlet &cpo = s:cpo_save 159b6b046b2SBram Moolenaarunlet s:cpo_save 160b6b046b2SBram Moolenaar 161071d4279SBram Moolenaar" vim:ts=8 162