cupl.vim (3872B)
1 " Vim syntax file 2 " Language: CUPL 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 cuplHeader name partno date revision rev designer company nextgroup=cuplHeaderContents 19 syn keyword cuplHeader assembly assy location device nextgroup=cuplHeaderContents 20 21 syn keyword cuplTodo contained TODO XXX FIXME 22 23 " cuplHeaderContents uses default highlighting except for numbers 24 syn match cuplHeaderContents ".\+;"me=e-1 contains=cuplNumber contained 25 26 " String constants 27 syn region cuplString start=+'+ end=+'+ 28 syn region cuplString start=+"+ end=+"+ 29 30 syn keyword cuplStatement append condition 31 syn keyword cuplStatement default else 32 syn keyword cuplStatement field fld format function fuse 33 syn keyword cuplStatement group if jump loc 34 syn keyword cuplStatement macro min node out 35 syn keyword cuplStatement pin pinnode present table 36 syn keyword cuplStatement sequence sequenced sequencejk sequencers sequencet 37 38 syn keyword cuplFunction log2 log8 log16 log 39 40 " Valid integer number formats (decimal, binary, octal, hex) 41 syn match cuplNumber "\<[-+]\=[0-9]\+\>" 42 syn match cuplNumber "'d'[0-9]\+\>" 43 syn match cuplNumber "'b'[01x]\+\>" 44 syn match cuplNumber "'o'[0-7x]\+\>" 45 syn match cuplNumber "'h'[0-9a-fx]\+\>" 46 47 " operators 48 syn match cuplLogicalOperator "[!#&$]" 49 syn match cuplArithmeticOperator "[-+*/%]" 50 syn match cuplArithmeticOperator "\*\*" 51 syn match cuplAssignmentOperator ":\==" 52 syn match cuplEqualityOperator ":" 53 syn match cuplTruthTableOperator "=>" 54 55 " Signal extensions 56 syn match cuplExtension "\.[as][pr]\>" 57 syn match cuplExtension "\.oe\>" 58 syn match cuplExtension "\.oemux\>" 59 syn match cuplExtension "\.[dlsrjk]\>" 60 syn match cuplExtension "\.ck\>" 61 syn match cuplExtension "\.dq\>" 62 syn match cuplExtension "\.ckmux\>" 63 syn match cuplExtension "\.tec\>" 64 syn match cuplExtension "\.cnt\>" 65 66 syn match cuplRangeOperator "\.\." contained 67 68 " match ranges like memadr:[0000..1FFF] 69 " and highlight both the numbers and the .. operator 70 syn match cuplNumberRange "\<\x\+\.\.\x\+\>" contains=cuplRangeOperator 71 72 " match vectors of type [name3..0] (decimal numbers only) 73 " but assign them no special highlighting except for the .. operator 74 syn match cuplBitVector "\<\a\+\d\+\.\.\d\+\>" contains=cuplRangeOperator 75 76 " other special characters 77 syn match cuplSpecialChar "[\[\](){},;]" 78 79 " directives 80 " (define these after cuplOperator so $xxx overrides $) 81 syn match cuplDirective "\$msg" 82 syn match cuplDirective "\$macro" 83 syn match cuplDirective "\$mend" 84 syn match cuplDirective "\$repeat" 85 syn match cuplDirective "\$repend" 86 syn match cuplDirective "\$define" 87 syn match cuplDirective "\$include" 88 89 " multi-line comments 90 syn region cuplComment start=+/\*+ end=+\*/+ contains=cuplNumber,cuplTodo 91 92 syn sync minlines=1 93 94 " Define the default highlighting. 95 " Only when an item doesn't have highlighting yet 96 97 " The default highlighting. 98 hi def link cuplHeader cuplStatement 99 hi def link cuplLogicalOperator cuplOperator 100 hi def link cuplRangeOperator cuplOperator 101 hi def link cuplArithmeticOperator cuplOperator 102 hi def link cuplAssignmentOperator cuplOperator 103 hi def link cuplEqualityOperator cuplOperator 104 hi def link cuplTruthTableOperator cuplOperator 105 hi def link cuplOperator cuplStatement 106 hi def link cuplFunction cuplStatement 107 hi def link cuplStatement Statement 108 hi def link cuplNumberRange cuplNumber 109 hi def link cuplNumber cuplString 110 hi def link cuplString String 111 hi def link cuplComment Comment 112 hi def link cuplExtension cuplSpecial 113 hi def link cuplSpecialChar cuplSpecial 114 hi def link cuplSpecial Special 115 hi def link cuplDirective PreProc 116 hi def link cuplTodo Todo 117 118 119 let b:current_syntax = "cupl" 120 121 let &cpo = s:cpo_save 122 unlet s:cpo_save 123 124 " vim:ts=8