blob: 3fb77a2afa27c7a778867738f7827a7668fb7e7b [file] [log] [blame]
Bram Moolenaar071d4272004-06-13 20:20:40 +00001" Vim syntax file
2" Language: SPECMAN E-LANGUAGE
3" Maintainer: Or Freund <or@mobilian.com ;omf@gmx.co.uk; OrMeir@yahoo.com>
4" Last Update: Wed Oct 24 2001
5
6"---------------------------------------------------------
7"| If anyone found an error or fix the parenthesis part |
8"| I will be happy to hear about it |
9"| Thanks Or. |
10"---------------------------------------------------------
11
12" Remove any old syntax stuff hanging around
13" For version 5.x: Clear all syntax items
14" For version 6.x: Quit when a syntax file was already loaded
15if version < 600
16 syntax clear
17elseif exists("b:current_syntax")
18 finish
19endif
20
21syn keyword specmanTodo contained TODO todo ToDo FIXME XXX
22
23syn keyword specmanStatement var instance on compute start event expect check that routine
24syn keyword specmanStatement specman is also first only with like
25syn keyword specmanStatement list of all radix hex dec bin ignore illegal
26syn keyword specmanStatement traceable untraceable
27syn keyword specmanStatement cover using count_only trace_only at_least transition item ranges
28syn keyword specmanStatement cross text call task within
29
30syn keyword specmanMethod initialize non_terminal testgroup delayed exit finish
31syn keyword specmanMethod out append print outf appendf
32syn keyword specmanMethod post_generate pre_generate setup_test finalize_test extract_test
33syn keyword specmanMethod init run copy as_a set_config dut_error add clear lock quit
34syn keyword specmanMethod lock unlock release swap quit to_string value stop_run
35syn keyword specmanMethod crc_8 crc_32 crc_32_flip get_config add0 all_indices and_all
36syn keyword specmanMethod apply average count delete exists first_index get_indices
37syn keyword specmanMethod has insert is_a_permutation is_empty key key_exists key_index
38syn keyword specmanMethod last last_index max max_index max_value min min_index
39syn keyword specmanMethod min_value or_all pop pop0 push push0 product resize reverse
40syn keyword specmanMethod sort split sum top top0 unique clear is_all_iterations
41syn keyword specmanMethod get_enclosing_unit hdl_path exec deep_compare deep_compare_physical
42syn keyword specmanMethod pack unpack warning error fatal
43syn match specmanMethod "size()"
44syn keyword specmanPacking packing low high
45syn keyword specmanType locker address
46syn keyword specmanType body code vec chars
47syn keyword specmanType integer real bool int long uint byte bits bit time string
48syn keyword specmanType byte_array external_pointer
49syn keyword specmanBoolean TRUE FALSE
50syn keyword specmanPreCondit #ifdef #ifndef #else
51
52syn keyword specmanConditional choose matches
53syn keyword specmanConditional if then else when try
54
55
56
57syn keyword specmanLabel case casex casez default
58
59syn keyword specmanLogical and or not xor
60
61syn keyword specmanRepeat until repeat while for from to step each do break continue
62syn keyword specmanRepeat before next sequence always -kind network
63syn keyword specmanRepeat index it me in new return result select
64
65syn keyword specmanTemporal cycle sample events forever
66syn keyword specmanTemporal wait change negedge rise fall delay sync sim true detach eventually emit
67
68syn keyword specmanConstant MAX_INT MIN_INT NULL UNDEF
69
70syn keyword specmanDefine define as computed type extend
71syn keyword specmanDefine verilog vhdl variable global sys
72syn keyword specmanStructure struct unit
73syn keyword specmanInclude import
74syn keyword specmanConstraint gen keep keeping soft before
75
76syn keyword specmanSpecial untyped symtab ECHO DOECHO
77syn keyword specmanFile files load module ntv source_ref script read write
78syn keyword specmanFSM initial idle others posedge clock cycles
79
80
81syn match specmanOperator "[&|~><!)(*%@+/=?:;}{,.\^\-\[\]]"
82syn match specmanOperator "+="
83syn match specmanOperator "-="
84syn match specmanOperator "*="
85
86syn match specmanComment "//.*" contains=specmanTodo
87syn match specmanComment "--.*"
88syn region specmanComment start="^'>"hs=s+2 end="^<'"he=e-2
89
90syn match specmanHDL "'[`.a-zA-Z0-9_@\[\]]\+\>'"
91
92
93syn match specmanCompare "=="
94syn match specmanCompare "!==="
95syn match specmanCompare "==="
96syn match specmanCompare "!="
97syn match specmanCompare ">="
98syn match specmanCompare "<="
99syn match specmanNumber "[0-9]:[0-9]"
100syn match specmanNumber "\(\<\d\+\|\)'[bB]\s*[0-1_xXzZ?]\+\>"
101syn match specmanNumber "0[bB]\s*[0-1_xXzZ?]\+\>"
102syn match specmanNumber "\(\<\d\+\|\)'[oO]\s*[0-7_xXzZ?]\+\>"
103syn match specmanNumber "0[oO]\s*[0-9a-fA-F_xXzZ?]\+\>"
104syn match specmanNumber "\(\<\d\+\|\)'[dD]\s*[0-9_xXzZ?]\+\>"
105syn match specmanNumber "\(\<\d\+\|\)'[hH]\s*[0-9a-fA-F_xXzZ?]\+\>"
106syn match specmanNumber "0[xX]\s*[0-9a-fA-F_xXzZ?]\+\>"
107syn match specmanNumber "\<[+-]\=[0-9_]\+\(\.[0-9_]*\|\)\(e[0-9_]*\|\)\>"
108
109syn region specmanString start=+"+ end=+"+
110
111
112
113"**********************************************************************
114" I took this section from c.vim but I didnt succeded to make it work
115" ANY one who dare jumping to this deep watter is more than welocome!
116"**********************************************************************
117""catch errors caused by wrong parenthesis and brackets
118
119"syn cluster specmanParenGroup contains=specmanParenError
120"" ,specmanNumbera,specmanComment
121"if exists("specman_no_bracket_error")
122"syn region specmanParen transparent start='(' end=')' contains=ALLBUT,@specmanParenGroup
123"syn match specmanParenError ")"
124"syn match specmanErrInParen contained "[{}]"
125"else
126"syn region specmanParen transparent start='(' end=')' contains=ALLBUT,@specmanParenGroup,specmanErrInBracket
127"syn match specmanParenError "[\])]"
128"syn match specmanErrInParen contained "[\]{}]"
129"syn region specmanBracket transparent start='\[' end=']' contains=ALLBUT,@specmanParenGroup,specmanErrInParen
130"syn match specmanErrInBracket contained "[);{}]"
131"endif
132"
133
134"Modify the following as needed. The trade-off is performance versus
135"functionality.
136
137syn sync lines=50
138
139" Define the default highlighting.
140" For version 5.7 and earlier: only when not done already
141" For version 5.8 and later: only when an item doesn't have highlighting yet
142if version >= 508 || !exists("did_specman_syn_inits")
143 if version < 508
144 let did_specman_syn_inits = 1
145 command -nargs=+ HiLink hi link <args>
146 else
147 command -nargs=+ HiLink hi def link <args>
148 endif
149 " The default methods for highlighting. Can be overridden later
150 HiLink specmanConditional Conditional
151 HiLink specmanConstraint Conditional
152 HiLink specmanRepeat Repeat
153 HiLink specmanString String
154 HiLink specmanComment Comment
155 HiLink specmanConstant Macro
156 HiLink specmanNumber Number
157 HiLink specmanCompare Operator
158 HiLink specmanOperator Operator
159 HiLink specmanLogical Operator
160 HiLink specmanStatement Statement
161 HiLink specmanHDL SpecialChar
162 HiLink specmanMethod Function
163 HiLink specmanInclude Include
164 HiLink specmanStructure Structure
165 HiLink specmanBoolean Boolean
166 HiLink specmanFSM Label
167 HiLink specmanSpecial Special
168 HiLink specmanType Type
169 HiLink specmanTemporal Type
170 HiLink specmanFile Include
171 HiLink specmanPreCondit Include
172 HiLink specmanDefine Typedef
173 HiLink specmanLabel Label
174 HiLink specmanPacking keyword
175 HiLink specmanTodo Todo
176 HiLink specmanParenError Error
177 HiLink specmanErrInParen Error
178 HiLink specmanErrInBracket Error
179 delcommand HiLink
180endif
181
182let b:current_syntax = "specman"