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