xref: /vim-8.2.3635/runtime/syntax/specman.vim (revision cb03397a)
1" Vim syntax file
2" Language:	SPECMAN E-LANGUAGE
3" Maintainer:	Or Freund <[email protected] ;[email protected]; [email protected]>
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"
183