xref: /vim-8.2.3635/runtime/syntax/abel.vim (revision 6c391a74)
1071d4279SBram Moolenaar" Vim syntax file
2071d4279SBram Moolenaar" Language:	ABEL
3b6b046b2SBram Moolenaar" Maintainer:	John Cook <[email protected]>
4b6b046b2SBram Moolenaar" Last Change:	2011 Dec 27
5071d4279SBram Moolenaar
689bcfda6SBram Moolenaar" quit when a syntax file was already loaded
789bcfda6SBram Moolenaarif exists("b:current_syntax")
8071d4279SBram Moolenaar  finish
9071d4279SBram Moolenaarendif
10071d4279SBram Moolenaar
11b6b046b2SBram Moolenaarlet s:cpo_save = &cpo
12b6b046b2SBram Moolenaarset cpo&vim
13b6b046b2SBram Moolenaar
14071d4279SBram Moolenaar" this language is oblivious to case
15071d4279SBram Moolenaarsyn case ignore
16071d4279SBram Moolenaar
17071d4279SBram Moolenaar" A bunch of keywords
18071d4279SBram Moolenaarsyn keyword abelHeader		module title device options
19071d4279SBram Moolenaarsyn keyword abelSection		declarations equations test_vectors end
20071d4279SBram Moolenaarsyn keyword abelDeclaration	state truth_table state_diagram property
21071d4279SBram Moolenaarsyn keyword abelType		pin node attribute constant macro library
22071d4279SBram Moolenaar
23071d4279SBram Moolenaarsyn keyword abelTypeId		com reg neg pos buffer dc reg_d reg_t contained
24071d4279SBram Moolenaarsyn keyword abelTypeId		reg_sr reg_jk reg_g retain xor invert contained
25071d4279SBram Moolenaar
26071d4279SBram Moolenaarsyn keyword abelStatement	when then else if with endwith case endcase
27071d4279SBram Moolenaarsyn keyword abelStatement	fuses expr trace
28071d4279SBram Moolenaar
29071d4279SBram Moolenaar" option to omit obsolete statements
30071d4279SBram Moolenaarif exists("abel_obsolete_ok")
31071d4279SBram Moolenaar  syn keyword abelStatement enable flag in
32071d4279SBram Moolenaarelse
33071d4279SBram Moolenaar  syn keyword abelError enable flag in
34071d4279SBram Moolenaarendif
35071d4279SBram Moolenaar
36071d4279SBram Moolenaar" directives
37071d4279SBram Moolenaarsyn match abelDirective "@alternate"
38071d4279SBram Moolenaarsyn match abelDirective "@standard"
39071d4279SBram Moolenaarsyn match abelDirective "@const"
40071d4279SBram Moolenaarsyn match abelDirective "@dcset"
41071d4279SBram Moolenaarsyn match abelDirective "@include"
42071d4279SBram Moolenaarsyn match abelDirective "@page"
43071d4279SBram Moolenaarsyn match abelDirective "@radix"
44071d4279SBram Moolenaarsyn match abelDirective "@repeat"
45071d4279SBram Moolenaarsyn match abelDirective "@irp"
46071d4279SBram Moolenaarsyn match abelDirective "@expr"
47071d4279SBram Moolenaarsyn match abelDirective "@if"
48071d4279SBram Moolenaarsyn match abelDirective "@ifb"
49071d4279SBram Moolenaarsyn match abelDirective "@ifnb"
50071d4279SBram Moolenaarsyn match abelDirective "@ifdef"
51071d4279SBram Moolenaarsyn match abelDirective "@ifndef"
52071d4279SBram Moolenaarsyn match abelDirective "@ifiden"
53071d4279SBram Moolenaarsyn match abelDirective "@ifniden"
54071d4279SBram Moolenaar
55071d4279SBram Moolenaarsyn keyword abelTodo contained TODO XXX FIXME
56071d4279SBram Moolenaar
57071d4279SBram Moolenaar" wrap up type identifiers to differentiate them from normal strings
58071d4279SBram Moolenaarsyn region abelSpecifier start='istype' end=';' contains=abelTypeIdChar,abelTypeId,abelTypeIdEnd keepend
59071d4279SBram Moolenaarsyn match  abelTypeIdChar "[,']" contained
60071d4279SBram Moolenaarsyn match  abelTypeIdEnd  ";" contained
61071d4279SBram Moolenaar
62*6c391a74SBram Moolenaar" string constants and special characters within them
63071d4279SBram Moolenaarsyn match  abelSpecial contained "\\['\\]"
64071d4279SBram Moolenaarsyn region abelString start=+'+ skip=+\\"+ end=+'+ contains=abelSpecial
65071d4279SBram Moolenaar
66071d4279SBram Moolenaar" valid integer number formats (decimal, binary, octal, hex)
67071d4279SBram Moolenaarsyn match abelNumber "\<[-+]\=[0-9]\+\>"
68071d4279SBram Moolenaarsyn match abelNumber "\^d[0-9]\+\>"
69071d4279SBram Moolenaarsyn match abelNumber "\^b[01]\+\>"
70071d4279SBram Moolenaarsyn match abelNumber "\^o[0-7]\+\>"
71071d4279SBram Moolenaarsyn match abelNumber "\^h[0-9a-f]\+\>"
72071d4279SBram Moolenaar
73071d4279SBram Moolenaar" special characters
74071d4279SBram Moolenaar" (define these after abelOperator so ?= overrides ?)
75071d4279SBram Moolenaarsyn match abelSpecialChar "[\[\](){},;:?]"
76071d4279SBram Moolenaar
77071d4279SBram Moolenaar" operators
78071d4279SBram Moolenaarsyn match abelLogicalOperator "[!#&$]"
79071d4279SBram Moolenaarsyn match abelRangeOperator "\.\."
80071d4279SBram Moolenaarsyn match abelAlternateOperator "[/*+]"
81071d4279SBram Moolenaarsyn match abelAlternateOperator ":[+*]:"
82071d4279SBram Moolenaarsyn match abelArithmeticOperator "[-%]"
83071d4279SBram Moolenaarsyn match abelArithmeticOperator "<<"
84071d4279SBram Moolenaarsyn match abelArithmeticOperator ">>"
85071d4279SBram Moolenaarsyn match abelRelationalOperator "[<>!=]="
86071d4279SBram Moolenaarsyn match abelRelationalOperator "[<>]"
87071d4279SBram Moolenaarsyn match abelAssignmentOperator "[:?]\=="
88071d4279SBram Moolenaarsyn match abelAssignmentOperator "?:="
89071d4279SBram Moolenaarsyn match abelTruthTableOperator "->"
90071d4279SBram Moolenaar
91071d4279SBram Moolenaar" signal extensions
92071d4279SBram Moolenaarsyn match abelExtension "\.aclr\>"
93071d4279SBram Moolenaarsyn match abelExtension "\.aset\>"
94071d4279SBram Moolenaarsyn match abelExtension "\.clk\>"
95071d4279SBram Moolenaarsyn match abelExtension "\.clr\>"
96071d4279SBram Moolenaarsyn match abelExtension "\.com\>"
97071d4279SBram Moolenaarsyn match abelExtension "\.fb\>"
98071d4279SBram Moolenaarsyn match abelExtension "\.[co]e\>"
99071d4279SBram Moolenaarsyn match abelExtension "\.l[eh]\>"
100071d4279SBram Moolenaarsyn match abelExtension "\.fc\>"
101071d4279SBram Moolenaarsyn match abelExtension "\.pin\>"
102071d4279SBram Moolenaarsyn match abelExtension "\.set\>"
103071d4279SBram Moolenaarsyn match abelExtension "\.[djksrtq]\>"
104071d4279SBram Moolenaarsyn match abelExtension "\.pr\>"
105071d4279SBram Moolenaarsyn match abelExtension "\.re\>"
106071d4279SBram Moolenaarsyn match abelExtension "\.a[pr]\>"
107071d4279SBram Moolenaarsyn match abelExtension "\.s[pr]\>"
108071d4279SBram Moolenaar
109071d4279SBram Moolenaar" special constants
110071d4279SBram Moolenaarsyn match abelConstant "\.[ckudfpxz]\."
111071d4279SBram Moolenaarsyn match abelConstant "\.sv[2-9]\."
112071d4279SBram Moolenaar
113071d4279SBram Moolenaar" one-line comments
114071d4279SBram Moolenaarsyn region abelComment start=+"+ end=+"\|$+ contains=abelNumber,abelTodo
115071d4279SBram Moolenaar" option to prevent C++ style comments
116071d4279SBram Moolenaarif !exists("abel_cpp_comments_illegal")
117071d4279SBram Moolenaar  syn region abelComment start=+//+ end=+$+ contains=abelNumber,abelTodo
118071d4279SBram Moolenaarendif
119071d4279SBram Moolenaar
120071d4279SBram Moolenaarsyn sync minlines=1
121071d4279SBram Moolenaar
122071d4279SBram Moolenaar" Define the default highlighting.
12389bcfda6SBram Moolenaar" Only when an item doesn't have highlighting yet
124071d4279SBram Moolenaar
125071d4279SBram Moolenaar" The default highlighting.
126f37506f6SBram Moolenaarhi def link abelHeader		abelStatement
127f37506f6SBram Moolenaarhi def link abelSection		abelStatement
128f37506f6SBram Moolenaarhi def link abelDeclaration	abelStatement
129f37506f6SBram Moolenaarhi def link abelLogicalOperator	abelOperator
130f37506f6SBram Moolenaarhi def link abelRangeOperator	abelOperator
131f37506f6SBram Moolenaarhi def link abelAlternateOperator	abelOperator
132f37506f6SBram Moolenaarhi def link abelArithmeticOperator	abelOperator
133f37506f6SBram Moolenaarhi def link abelRelationalOperator	abelOperator
134f37506f6SBram Moolenaarhi def link abelAssignmentOperator	abelOperator
135f37506f6SBram Moolenaarhi def link abelTruthTableOperator	abelOperator
136f37506f6SBram Moolenaarhi def link abelSpecifier		abelStatement
137f37506f6SBram Moolenaarhi def link abelOperator		abelStatement
138f37506f6SBram Moolenaarhi def link abelStatement		Statement
139f37506f6SBram Moolenaarhi def link abelIdentifier		Identifier
140f37506f6SBram Moolenaarhi def link abelTypeId		abelType
141f37506f6SBram Moolenaarhi def link abelTypeIdChar		abelType
142f37506f6SBram Moolenaarhi def link abelType		Type
143f37506f6SBram Moolenaarhi def link abelNumber		abelString
144f37506f6SBram Moolenaarhi def link abelString		String
145f37506f6SBram Moolenaarhi def link abelConstant		Constant
146f37506f6SBram Moolenaarhi def link abelComment		Comment
147f37506f6SBram Moolenaarhi def link abelExtension		abelSpecial
148f37506f6SBram Moolenaarhi def link abelSpecialChar	abelSpecial
149f37506f6SBram Moolenaarhi def link abelTypeIdEnd		abelSpecial
150f37506f6SBram Moolenaarhi def link abelSpecial		Special
151f37506f6SBram Moolenaarhi def link abelDirective		PreProc
152f37506f6SBram Moolenaarhi def link abelTodo		Todo
153f37506f6SBram Moolenaarhi def link abelError		Error
154071d4279SBram Moolenaar
155071d4279SBram Moolenaar
156071d4279SBram Moolenaarlet b:current_syntax = "abel"
157b6b046b2SBram Moolenaar
158b6b046b2SBram Moolenaarlet &cpo = s:cpo_save
159b6b046b2SBram Moolenaarunlet s:cpo_save
160b6b046b2SBram Moolenaar
161071d4279SBram Moolenaar" vim:ts=8
162