xref: /vim-8.2.3635/runtime/syntax/abel.vim (revision cb03397a)
1" Vim syntax file
2" Language:	ABEL
3" Maintainer:	John Cook <[email protected]>
4" Last Change:	2011 Dec 27
5
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
14let s:cpo_save = &cpo
15set cpo&vim
16
17" 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"
170
171let &cpo = s:cpo_save
172unlet s:cpo_save
173
174" vim:ts=8
175