" Vim syntax file " Language: ABEL " Maintainer: John Cook " Last Change: 2011 Dec 27 " quit when a syntax file was already loaded if exists("b:current_syntax") finish endif let s:cpo_save = &cpo set cpo&vim " this language is oblivious to case syn case ignore " A bunch of keywords syn keyword abelHeader module title device options syn keyword abelSection declarations equations test_vectors end syn keyword abelDeclaration state truth_table state_diagram property syn keyword abelType pin node attribute constant macro library syn keyword abelTypeId com reg neg pos buffer dc reg_d reg_t contained syn keyword abelTypeId reg_sr reg_jk reg_g retain xor invert contained syn keyword abelStatement when then else if with endwith case endcase syn keyword abelStatement fuses expr trace " option to omit obsolete statements if exists("abel_obsolete_ok") syn keyword abelStatement enable flag in else syn keyword abelError enable flag in endif " directives syn match abelDirective "@alternate" syn match abelDirective "@standard" syn match abelDirective "@const" syn match abelDirective "@dcset" syn match abelDirective "@include" syn match abelDirective "@page" syn match abelDirective "@radix" syn match abelDirective "@repeat" syn match abelDirective "@irp" syn match abelDirective "@expr" syn match abelDirective "@if" syn match abelDirective "@ifb" syn match abelDirective "@ifnb" syn match abelDirective "@ifdef" syn match abelDirective "@ifndef" syn match abelDirective "@ifiden" syn match abelDirective "@ifniden" syn keyword abelTodo contained TODO XXX FIXME " wrap up type identifiers to differentiate them from normal strings syn region abelSpecifier start='istype' end=';' contains=abelTypeIdChar,abelTypeId,abelTypeIdEnd keepend syn match abelTypeIdChar "[,']" contained syn match abelTypeIdEnd ";" contained " string contstants and special characters within them syn match abelSpecial contained "\\['\\]" syn region abelString start=+'+ skip=+\\"+ end=+'+ contains=abelSpecial " valid integer number formats (decimal, binary, octal, hex) syn match abelNumber "\<[-+]\=[0-9]\+\>" syn match abelNumber "\^d[0-9]\+\>" syn match abelNumber "\^b[01]\+\>" syn match abelNumber "\^o[0-7]\+\>" syn match abelNumber "\^h[0-9a-f]\+\>" " special characters " (define these after abelOperator so ?= overrides ?) syn match abelSpecialChar "[\[\](){},;:?]" " operators syn match abelLogicalOperator "[!#&$]" syn match abelRangeOperator "\.\." syn match abelAlternateOperator "[/*+]" syn match abelAlternateOperator ":[+*]:" syn match abelArithmeticOperator "[-%]" syn match abelArithmeticOperator "<<" syn match abelArithmeticOperator ">>" syn match abelRelationalOperator "[<>!=]=" syn match abelRelationalOperator "[<>]" syn match abelAssignmentOperator "[:?]\==" syn match abelAssignmentOperator "?:=" syn match abelTruthTableOperator "->" " signal extensions syn match abelExtension "\.aclr\>" syn match abelExtension "\.aset\>" syn match abelExtension "\.clk\>" syn match abelExtension "\.clr\>" syn match abelExtension "\.com\>" syn match abelExtension "\.fb\>" syn match abelExtension "\.[co]e\>" syn match abelExtension "\.l[eh]\>" syn match abelExtension "\.fc\>" syn match abelExtension "\.pin\>" syn match abelExtension "\.set\>" syn match abelExtension "\.[djksrtq]\>" syn match abelExtension "\.pr\>" syn match abelExtension "\.re\>" syn match abelExtension "\.a[pr]\>" syn match abelExtension "\.s[pr]\>" " special constants syn match abelConstant "\.[ckudfpxz]\." syn match abelConstant "\.sv[2-9]\." " one-line comments syn region abelComment start=+"+ end=+"\|$+ contains=abelNumber,abelTodo " option to prevent C++ style comments if !exists("abel_cpp_comments_illegal") syn region abelComment start=+//+ end=+$+ contains=abelNumber,abelTodo endif syn sync minlines=1 " Define the default highlighting. " Only when an item doesn't have highlighting yet command -nargs=+ HiLink hi def link " The default highlighting. HiLink abelHeader abelStatement HiLink abelSection abelStatement HiLink abelDeclaration abelStatement HiLink abelLogicalOperator abelOperator HiLink abelRangeOperator abelOperator HiLink abelAlternateOperator abelOperator HiLink abelArithmeticOperator abelOperator HiLink abelRelationalOperator abelOperator HiLink abelAssignmentOperator abelOperator HiLink abelTruthTableOperator abelOperator HiLink abelSpecifier abelStatement HiLink abelOperator abelStatement HiLink abelStatement Statement HiLink abelIdentifier Identifier HiLink abelTypeId abelType HiLink abelTypeIdChar abelType HiLink abelType Type HiLink abelNumber abelString HiLink abelString String HiLink abelConstant Constant HiLink abelComment Comment HiLink abelExtension abelSpecial HiLink abelSpecialChar abelSpecial HiLink abelTypeIdEnd abelSpecial HiLink abelSpecial Special HiLink abelDirective PreProc HiLink abelTodo Todo HiLink abelError Error delcommand HiLink let b:current_syntax = "abel" let &cpo = s:cpo_save unlet s:cpo_save " vim:ts=8