Merge branch 'vim-with-runtime' into feat/quickfix-title
[vim_extended.git] / runtime / syntax / vhdl.vim
blob4ac3b6d8a4826abd855250458778cc3778fdf8ea
1 " Vim syntax file
2 " Language:     VHDL
3 " Maintainer:   Czo <Olivier.Sirol@lip6.fr>
4 " Credits:      Stephan Hegel <stephan.hegel@snc.siemens.com.cn>
5 " $Id: vhdl.vim,v 1.1 2004/06/13 15:34:56 vimboss Exp $
7 " VHSIC Hardware Description Language
8 " Very High Scale Integrated Circuit
10 " For version 5.x: Clear all syntax items
11 " For version 6.x: Quit when a syntax file was already loaded
12 if version < 600
13   syntax clear
14 elseif exists("b:current_syntax")
15   finish
16 endif
18 " This is not VHDL. I use the C-Preprocessor cpp to generate different binaries
19 " from one VHDL source file. Unfortunately there is no preprocessor for VHDL
20 " available. If you don't like this, please remove the following lines.
21 syn match cDefine "^#ifdef[ ]\+[A-Za-z_]\+"
22 syn match cDefine "^#endif"
24 " case is not significant
25 syn case ignore
27 " VHDL keywords
28 syn keyword vhdlStatement access after alias all assert
29 syn keyword vhdlStatement architecture array attribute
30 syn keyword vhdlStatement begin block body buffer bus
31 syn keyword vhdlStatement case component configuration constant
32 syn keyword vhdlStatement disconnect downto
33 syn keyword vhdlStatement elsif end entity exit
34 syn keyword vhdlStatement file for function
35 syn keyword vhdlStatement generate generic group guarded
36 syn keyword vhdlStatement impure in inertial inout is
37 syn keyword vhdlStatement label library linkage literal loop
38 syn keyword vhdlStatement map
39 syn keyword vhdlStatement new next null
40 syn keyword vhdlStatement of on open others out
41 syn keyword vhdlStatement package port postponed procedure process pure
42 syn keyword vhdlStatement range record register reject report return
43 syn keyword vhdlStatement select severity signal shared
44 syn keyword vhdlStatement subtype
45 syn keyword vhdlStatement then to transport type
46 syn keyword vhdlStatement unaffected units until use
47 syn keyword vhdlStatement variable wait when while with
48 syn keyword vhdlStatement note warning error failure
50 " Special match for "if" and "else" since "else if" shouldn't be highlighted.
51 " The right keyword is "elsif"
52 syn match   vhdlStatement "\<\(if\|else\)\>"
53 syn match   vhdlNone      "\<else\s\+if\>$"
54 syn match   vhdlNone      "\<else\s\+if\>\s"
56 " Predifined VHDL types
57 syn keyword vhdlType bit bit_vector
58 syn keyword vhdlType character boolean integer real time
59 syn keyword vhdlType string severity_level
60 " Predifined standard ieee VHDL types
61 syn keyword vhdlType positive natural signed unsigned
62 syn keyword vhdlType line text
63 syn keyword vhdlType std_logic std_logic_vector
64 syn keyword vhdlType std_ulogic std_ulogic_vector
65 " Predefined non standard VHDL types for Mentor Graphics Sys1076/QuickHDL
66 syn keyword vhdlType qsim_state qsim_state_vector
67 syn keyword vhdlType qsim_12state qsim_12state_vector
68 syn keyword vhdlType qsim_strength
69 " Predefined non standard VHDL types for Alliance VLSI CAD
70 syn keyword vhdlType mux_bit mux_vector reg_bit reg_vector wor_bit wor_vector
72 " array attributes
73 syn match vhdlAttribute "\'high"
74 syn match vhdlAttribute "\'left"
75 syn match vhdlAttribute "\'length"
76 syn match vhdlAttribute "\'low"
77 syn match vhdlAttribute "\'range"
78 syn match vhdlAttribute "\'reverse_range"
79 syn match vhdlAttribute "\'right"
80 syn match vhdlAttribute "\'ascending"
81 " block attributes
82 syn match vhdlAttribute "\'behaviour"
83 syn match vhdlAttribute "\'structure"
84 syn match vhdlAttribute "\'simple_name"
85 syn match vhdlAttribute "\'instance_name"
86 syn match vhdlAttribute "\'path_name"
87 syn match vhdlAttribute "\'foreign"
88 " signal attribute
89 syn match vhdlAttribute "\'active"
90 syn match vhdlAttribute "\'delayed"
91 syn match vhdlAttribute "\'event"
92 syn match vhdlAttribute "\'last_active"
93 syn match vhdlAttribute "\'last_event"
94 syn match vhdlAttribute "\'last_value"
95 syn match vhdlAttribute "\'quiet"
96 syn match vhdlAttribute "\'stable"
97 syn match vhdlAttribute "\'transaction"
98 syn match vhdlAttribute "\'driving"
99 syn match vhdlAttribute "\'driving_value"
100 " type attributes
101 syn match vhdlAttribute "\'base"
102 syn match vhdlAttribute "\'high"
103 syn match vhdlAttribute "\'left"
104 syn match vhdlAttribute "\'leftof"
105 syn match vhdlAttribute "\'low"
106 syn match vhdlAttribute "\'pos"
107 syn match vhdlAttribute "\'pred"
108 syn match vhdlAttribute "\'rightof"
109 syn match vhdlAttribute "\'succ"
110 syn match vhdlAttribute "\'val"
111 syn match vhdlAttribute "\'image"
112 syn match vhdlAttribute "\'value"
114 syn keyword vhdlBoolean true false
116 " for this vector values case is significant
117 syn case match
118 " Values for standard VHDL types
119 syn match vhdlVector "\'[0L1HXWZU\-\?]\'"
120 " Values for non standard VHDL types qsim_12state for Mentor Graphics Sys1076/QuickHDL
121 syn keyword vhdlVector S0S S1S SXS S0R S1R SXR S0Z S1Z SXZ S0I S1I SXI
122 syn case ignore
124 syn match  vhdlVector "B\"[01_]\+\""
125 syn match  vhdlVector "O\"[0-7_]\+\""
126 syn match  vhdlVector "X\"[0-9a-f_]\+\""
127 syn match  vhdlCharacter "'.'"
128 syn region vhdlString start=+"+  end=+"+
130 " floating numbers
131 syn match vhdlNumber "-\=\<\d\+\.\d\+\(E[+\-]\=\d\+\)\>"
132 syn match vhdlNumber "-\=\<\d\+\.\d\+\>"
133 syn match vhdlNumber "0*2#[01_]\+\.[01_]\+#\(E[+\-]\=\d\+\)\="
134 syn match vhdlNumber "0*16#[0-9a-f_]\+\.[0-9a-f_]\+#\(E[+\-]\=\d\+\)\="
135 " integer numbers
136 syn match vhdlNumber "-\=\<\d\+\(E[+\-]\=\d\+\)\>"
137 syn match vhdlNumber "-\=\<\d\+\>"
138 syn match vhdlNumber "0*2#[01_]\+#\(E[+\-]\=\d\+\)\="
139 syn match vhdlNumber "0*16#[0-9a-f_]\+#\(E[+\-]\=\d\+\)\="
140 " operators
141 syn keyword vhdlOperator and nand or nor xor xnor
142 syn keyword vhdlOperator rol ror sla sll sra srl
143 syn keyword vhdlOperator mod rem abs not
144 syn match   vhdlOperator "[&><=:+\-*\/|]"
145 syn match   vhdlSpecial  "[().,;]"
146 " time
147 syn match vhdlTime "\<\d\+\s\+\(\([fpnum]s\)\|\(sec\)\|\(min\)\|\(hr\)\)\>"
148 syn match vhdlTime "\<\d\+\.\d\+\s\+\(\([fpnum]s\)\|\(sec\)\|\(min\)\|\(hr\)\)\>"
150 syn match vhdlComment "--.*$"
151 " syn match vhdlGlobal "[\'$#~!%@?\^\[\]{}\\]"
153 " Define the default highlighting.
154 " For version 5.7 and earlier: only when not done already
155 " For version 5.8 and later: only when an item doesn't have highlighting yet
156 if version >= 508 || !exists("did_vhdl_syntax_inits")
157   if version < 508
158     let did_vhdl_syntax_inits = 1
159     command -nargs=+ HiLink hi link <args>
160   else
161     command -nargs=+ HiLink hi def link <args>
162   endif
164   HiLink cDefine       PreProc
165   HiLink vhdlSpecial   Special
166   HiLink vhdlStatement Statement
167   HiLink vhdlCharacter String
168   HiLink vhdlString    String
169   HiLink vhdlVector    String
170   HiLink vhdlBoolean   String
171   HiLink vhdlComment   Comment
172   HiLink vhdlNumber    String
173   HiLink vhdlTime      String
174   HiLink vhdlType      Type
175   HiLink vhdlOperator  Type
176   HiLink vhdlGlobal    Error
177   HiLink vhdlAttribute Type
179   delcommand HiLink
180 endif
182 let b:current_syntax = "vhdl"
184 " vim: ts=8