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