blob: dfa872f4224d53d172ef645ad21d12467cb06842 [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
Bram Moolenaar89bcfda2016-08-30 23:26:57 +02006" quit when a syntax file was already loaded
7if exists("b:current_syntax")
Bram Moolenaar071d4272004-06-13 20:20:40 +00008 finish
9endif
10
Bram Moolenaarb6b046b2011-12-30 13:11:27 +010011let s:cpo_save = &cpo
12set cpo&vim
13
Bram Moolenaar071d4272004-06-13 20:20:40 +000014" 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.
Bram Moolenaar89bcfda2016-08-30 23:26:57 +0200123" Only when an item doesn't have highlighting yet
124command -nargs=+ HiLink hi def link <args>
Bram Moolenaar071d4272004-06-13 20:20:40 +0000125
Bram Moolenaar89bcfda2016-08-30 23:26:57 +0200126" The default highlighting.
127HiLink abelHeader abelStatement
128HiLink abelSection abelStatement
129HiLink abelDeclaration abelStatement
130HiLink abelLogicalOperator abelOperator
131HiLink abelRangeOperator abelOperator
132HiLink abelAlternateOperator abelOperator
133HiLink abelArithmeticOperator abelOperator
134HiLink abelRelationalOperator abelOperator
135HiLink abelAssignmentOperator abelOperator
136HiLink abelTruthTableOperator abelOperator
137HiLink abelSpecifier abelStatement
138HiLink abelOperator abelStatement
139HiLink abelStatement Statement
140HiLink abelIdentifier Identifier
141HiLink abelTypeId abelType
142HiLink abelTypeIdChar abelType
143HiLink abelType Type
144HiLink abelNumber abelString
145HiLink abelString String
146HiLink abelConstant Constant
147HiLink abelComment Comment
148HiLink abelExtension abelSpecial
149HiLink abelSpecialChar abelSpecial
150HiLink abelTypeIdEnd abelSpecial
151HiLink abelSpecial Special
152HiLink abelDirective PreProc
153HiLink abelTodo Todo
154HiLink abelError Error
Bram Moolenaar071d4272004-06-13 20:20:40 +0000155
Bram Moolenaar89bcfda2016-08-30 23:26:57 +0200156delcommand HiLink
Bram Moolenaar071d4272004-06-13 20:20:40 +0000157
158let b:current_syntax = "abel"
Bram Moolenaarb6b046b2011-12-30 13:11:27 +0100159
160let &cpo = s:cpo_save
161unlet s:cpo_save
162
Bram Moolenaar071d4272004-06-13 20:20:40 +0000163" vim:ts=8