3 contributed by M. Cesar R. Lacruz (mcesar@sec.upm.es)
5 from previous work by Dante Fabrizio and Nitsan Vardi
8 <!DOCTYPE MODE SYSTEM "xmode.dtd">
12 <PROPERTY NAME="label" VALUE="VHDL"/>
13 <PROPERTY NAME="lineComment" VALUE="--"/>
14 <PROPERTY NAME="contextInsensitive" VALUE="true" />
16 <RULES IGNORE_CASE="TRUE">
19 <SPAN_REGEXP TYPE="LITERAL4" AT_WORD_START="TRUE" NO_LINE_BREAK="TRUE">
20 <BEGIN>[box]?"</BEGIN>
23 <SPAN_REGEXP TYPE="LITERAL4" AT_WORD_START="TRUE" NO_LINE_BREAK="TRUE">
24 <BEGIN>[box]?%</BEGIN>
29 <SEQ_REGEXP TYPE="LITERAL1" HASH_CHAR="'">(?:'[\x20-\x7e\xa0-\xff]')</SEQ_REGEXP>
31 <!-- predefined attribute -->
32 <SEQ_REGEXP TYPE="KEYWORD3" HASH_CHAR="'">'left\b</SEQ_REGEXP>
33 <SEQ_REGEXP TYPE="KEYWORD3" HASH_CHAR="'">'right\b</SEQ_REGEXP>
34 <SEQ_REGEXP TYPE="KEYWORD3" HASH_CHAR="'">'low\b</SEQ_REGEXP>
35 <SEQ_REGEXP TYPE="KEYWORD3" HASH_CHAR="'">'high\b</SEQ_REGEXP>
36 <SEQ_REGEXP TYPE="KEYWORD3" HASH_CHAR="'">'ascending\b</SEQ_REGEXP>
37 <SEQ_REGEXP TYPE="KEYWORD3" HASH_CHAR="'">'image\b</SEQ_REGEXP>
38 <SEQ_REGEXP TYPE="KEYWORD3" HASH_CHAR="'">'value\b</SEQ_REGEXP>
39 <SEQ_REGEXP TYPE="KEYWORD3" HASH_CHAR="'">'pos\b</SEQ_REGEXP>
40 <SEQ_REGEXP TYPE="KEYWORD3" HASH_CHAR="'">'val\b</SEQ_REGEXP>
41 <SEQ_REGEXP TYPE="KEYWORD3" HASH_CHAR="'">'succ\b</SEQ_REGEXP>
42 <SEQ_REGEXP TYPE="KEYWORD3" HASH_CHAR="'">'pred\b</SEQ_REGEXP>
43 <SEQ_REGEXP TYPE="KEYWORD3" HASH_CHAR="'">'leftof\b</SEQ_REGEXP>
44 <SEQ_REGEXP TYPE="KEYWORD3" HASH_CHAR="'">'rightof\b</SEQ_REGEXP>
45 <SEQ_REGEXP TYPE="KEYWORD3" HASH_CHAR="'">'base\b</SEQ_REGEXP>
46 <SEQ_REGEXP TYPE="KEYWORD3" HASH_CHAR="'">'delayed\b</SEQ_REGEXP>
47 <SEQ_REGEXP TYPE="KEYWORD3" HASH_CHAR="'">'stable\b</SEQ_REGEXP>
48 <SEQ_REGEXP TYPE="KEYWORD3" HASH_CHAR="'">'quiet\b</SEQ_REGEXP>
49 <SEQ_REGEXP TYPE="KEYWORD3" HASH_CHAR="'">'transaction\b</SEQ_REGEXP>
50 <SEQ_REGEXP TYPE="KEYWORD3" HASH_CHAR="'">'event\b</SEQ_REGEXP>
51 <SEQ_REGEXP TYPE="KEYWORD3" HASH_CHAR="'">'active\b</SEQ_REGEXP>
52 <SEQ_REGEXP TYPE="KEYWORD3" HASH_CHAR="'">'last_event\b</SEQ_REGEXP>
53 <SEQ_REGEXP TYPE="KEYWORD3" HASH_CHAR="'">'last_active\b</SEQ_REGEXP>
54 <SEQ_REGEXP TYPE="KEYWORD3" HASH_CHAR="'">'last_value\b</SEQ_REGEXP>
55 <SEQ_REGEXP TYPE="KEYWORD3" HASH_CHAR="'">'driving\b</SEQ_REGEXP>
56 <SEQ_REGEXP TYPE="KEYWORD3" HASH_CHAR="'">'driving_value\b</SEQ_REGEXP>
57 <SEQ_REGEXP TYPE="KEYWORD3" HASH_CHAR="'">'range\b</SEQ_REGEXP>
58 <SEQ_REGEXP TYPE="KEYWORD3" HASH_CHAR="'">'reverse_range\b</SEQ_REGEXP>
59 <SEQ_REGEXP TYPE="KEYWORD3" HASH_CHAR="'">'length\b</SEQ_REGEXP>
60 <SEQ_REGEXP TYPE="KEYWORD3" HASH_CHAR="'">'simple_name\b</SEQ_REGEXP>
61 <SEQ_REGEXP TYPE="KEYWORD3" HASH_CHAR="'">'path_name\b</SEQ_REGEXP>
62 <SEQ_REGEXP TYPE="KEYWORD3" HASH_CHAR="'">'instance_name\b</SEQ_REGEXP>
63 <SEQ_REGEXP TYPE="KEYWORD3" HASH_CHAR="'">'foreign\b</SEQ_REGEXP>
65 <!-- other attribute -->
66 <MARK_FOLLOWING TYPE="KEYWORD4" MATCH_TYPE="KEYWORD3">'</MARK_FOLLOWING>
69 <EOL_SPAN TYPE="COMMENT1">--</EOL_SPAN>
72 <!-- sorry, but 'label : component_name', 'label : procedure_name'
73 & 'label : variable :=' are not managed, as they collide with
74 'generic_name : generic_type' -->
75 <SEQ_REGEXP TYPE="LABEL" AT_WHITESPACE_END="TRUE">
76 (\w|\w[\w\d_]*[\w\d])\s*(?=:)(?!:=)(?!:\s*\d)(?=:\s*(if\b|case\b|while\b|for\b|loop\b|next\b|null\b|block\b|process\b|wait\b|postponed\b|assert\b|with\b|entity\b|component\b|configuration\b|exit\b|return\b|(?:(?:\w[\w\d_]*\w|\w)\s*<=)))
80 <SEQ TYPE="OPERATOR">(</SEQ>
81 <SEQ TYPE="OPERATOR">)</SEQ>
82 <SEQ TYPE="OPERATOR">=></SEQ>
83 <SEQ TYPE="OPERATOR">**</SEQ>
84 <SEQ TYPE="OPERATOR">:=</SEQ>
85 <SEQ TYPE="OPERATOR">/=</SEQ>
86 <SEQ TYPE="OPERATOR">>=</SEQ>
87 <SEQ TYPE="OPERATOR"><=</SEQ>
88 <SEQ TYPE="OPERATOR"><></SEQ>
89 <SEQ TYPE="OPERATOR">=</SEQ>
90 <SEQ TYPE="OPERATOR">:</SEQ>
91 <SEQ TYPE="OPERATOR">></SEQ>
92 <SEQ TYPE="OPERATOR"><</SEQ>
93 <SEQ TYPE="OPERATOR">+</SEQ>
94 <SEQ TYPE="OPERATOR">-</SEQ>
95 <SEQ TYPE="OPERATOR">/</SEQ>
96 <SEQ TYPE="OPERATOR">*</SEQ>
97 <SEQ TYPE="OPERATOR">&</SEQ>
98 <SEQ TYPE="OPERATOR">|</SEQ>
101 <SEQ_REGEXP TYPE="DIGIT" AT_WORD_START="TRUE"
102 >\d{1,2}#(?:(?:[\da-f][\da-f_]*\.?[\da-f_]*[\da-f])|[\da-f])#(?:e[+-]?(?:\d[\d_]*\d|\d))?
104 <SEQ_REGEXP TYPE="DIGIT" AT_WORD_START="TRUE"
105 >\d{1,2}:(?:(?:[\da-f][\da-f_]*\.?[\da-f_]*[\da-f])|[\da-f]):(?:e[+-]?(?:\d[\d_]*\d|\d))?
107 <SEQ_REGEXP TYPE="DIGIT" AT_WORD_START="TRUE"
108 >(?:(?:\d[\d_]*\.?[\d_]*\d)|\d)(?:e[+-]?(?:\d[\d_]*\d|\d))?
112 <!-- VHDL-87 keyword -->
113 <KEYWORD1>access</KEYWORD1>
114 <KEYWORD1>after</KEYWORD1>
115 <KEYWORD1>alias</KEYWORD1>
116 <KEYWORD1>all</KEYWORD1>
117 <KEYWORD1>architecture</KEYWORD1>
118 <KEYWORD1>array</KEYWORD1>
119 <KEYWORD1>assert</KEYWORD1>
120 <KEYWORD1>attribute</KEYWORD1>
121 <KEYWORD1>begin</KEYWORD1>
122 <KEYWORD1>block</KEYWORD1>
123 <KEYWORD1>body</KEYWORD1>
124 <KEYWORD1>buffer</KEYWORD1>
125 <KEYWORD1>bus</KEYWORD1>
126 <KEYWORD1>case</KEYWORD1>
127 <KEYWORD1>component</KEYWORD1>
128 <KEYWORD1>configuration</KEYWORD1>
129 <KEYWORD1>constant</KEYWORD1>
130 <KEYWORD1>disconnect</KEYWORD1>
131 <KEYWORD1>downto</KEYWORD1>
132 <KEYWORD1>else</KEYWORD1>
133 <KEYWORD1>elsif</KEYWORD1>
134 <KEYWORD1>end</KEYWORD1>
135 <KEYWORD1>entity</KEYWORD1>
136 <KEYWORD1>exit</KEYWORD1>
137 <KEYWORD1>file</KEYWORD1>
138 <KEYWORD1>for</KEYWORD1>
139 <KEYWORD1>function</KEYWORD1>
140 <KEYWORD1>generate</KEYWORD1>
141 <KEYWORD1>generic</KEYWORD1>
142 <KEYWORD1>guarded</KEYWORD1>
143 <KEYWORD1>if</KEYWORD1>
144 <KEYWORD1>in</KEYWORD1>
145 <KEYWORD1>inout</KEYWORD1>
146 <KEYWORD1>is</KEYWORD1>
147 <KEYWORD1>label</KEYWORD1>
148 <KEYWORD1>library</KEYWORD1>
149 <KEYWORD1>linkage</KEYWORD1>
150 <KEYWORD1>loop</KEYWORD1>
151 <KEYWORD1>map</KEYWORD1>
152 <KEYWORD1>new</KEYWORD1>
153 <KEYWORD1>next</KEYWORD1>
154 <KEYWORD1>null</KEYWORD1>
155 <KEYWORD1>of</KEYWORD1>
156 <KEYWORD1>on</KEYWORD1>
157 <KEYWORD1>open</KEYWORD1>
158 <KEYWORD1>others</KEYWORD1>
159 <KEYWORD1>out</KEYWORD1>
160 <KEYWORD1>package</KEYWORD1>
161 <KEYWORD1>port</KEYWORD1>
162 <KEYWORD1>procedure</KEYWORD1>
163 <KEYWORD1>process</KEYWORD1>
164 <KEYWORD1>range</KEYWORD1>
165 <KEYWORD1>record</KEYWORD1>
166 <KEYWORD1>register</KEYWORD1>
167 <KEYWORD1>report</KEYWORD1>
168 <KEYWORD1>return</KEYWORD1>
169 <KEYWORD1>select</KEYWORD1>
170 <KEYWORD1>severity</KEYWORD1>
171 <KEYWORD1>signal</KEYWORD1>
172 <KEYWORD1>subtype</KEYWORD1>
173 <KEYWORD1>then</KEYWORD1>
174 <KEYWORD1>to</KEYWORD1>
175 <KEYWORD1>transport</KEYWORD1>
176 <KEYWORD1>type</KEYWORD1>
177 <KEYWORD1>units</KEYWORD1>
178 <KEYWORD1>until</KEYWORD1>
179 <KEYWORD1>use</KEYWORD1>
180 <KEYWORD1>variable</KEYWORD1>
181 <KEYWORD1>wait</KEYWORD1>
182 <KEYWORD1>when</KEYWORD1>
183 <KEYWORD1>while</KEYWORD1>
184 <KEYWORD1>with</KEYWORD1>
186 <!-- VHDL-93 new keyword -->
187 <KEYWORD1>group</KEYWORD1>
188 <KEYWORD1>impure</KEYWORD1>
189 <KEYWORD1>inertial</KEYWORD1>
190 <KEYWORD1>literal</KEYWORD1>
191 <KEYWORD1>postponed</KEYWORD1>
192 <KEYWORD1>pure</KEYWORD1>
193 <KEYWORD1>reject</KEYWORD1>
194 <KEYWORD1>shared</KEYWORD1>
195 <KEYWORD1>unaffected</KEYWORD1>
197 <!-- VHDL-2001 new keyword -->
198 <KEYWORD1>protected</KEYWORD1>
200 <!-- VHDL-87 keyword, but shown as operator -->
201 <OPERATOR>abs</OPERATOR>
202 <OPERATOR>and</OPERATOR>
203 <OPERATOR>mod</OPERATOR>
204 <OPERATOR>nand</OPERATOR>
205 <OPERATOR>nor</OPERATOR>
206 <OPERATOR>not</OPERATOR>
207 <OPERATOR>or</OPERATOR>
208 <OPERATOR>rem</OPERATOR>
209 <OPERATOR>xor</OPERATOR>
211 <!-- VHDL-93 new keyword, but shown as operator -->
212 <OPERATOR>rol</OPERATOR>
213 <OPERATOR>ror</OPERATOR>
214 <OPERATOR>sll</OPERATOR>
215 <OPERATOR>srl</OPERATOR>
216 <OPERATOR>sla</OPERATOR>
217 <OPERATOR>sra</OPERATOR>
218 <OPERATOR>xnor</OPERATOR>
220 <!-- VHDL-87 keyword, but shown as function -->
221 <FUNCTION>deallocate</FUNCTION>
223 <!-- built-in & standard type -->
224 <KEYWORD2>bit</KEYWORD2>
225 <KEYWORD2>bit_vector</KEYWORD2>
226 <KEYWORD2>boolean</KEYWORD2>
227 <KEYWORD2>character</KEYWORD2>
228 <KEYWORD2>delay_length</KEYWORD2>
229 <FUNCTION>now</FUNCTION>
230 <FUNCTION>file_open</FUNCTION>
231 <FUNCTION>file_close</FUNCTION>
232 <FUNCTION>read</FUNCTION>
233 <FUNCTION>write</FUNCTION>
234 <FUNCTION>endfile</FUNCTION>
235 <KEYWORD2>file_open_kind</KEYWORD2>
236 <KEYWORD2>file_open_status</KEYWORD2>
237 <KEYWORD2>integer</KEYWORD2>
238 <KEYWORD2>natural</KEYWORD2>
239 <KEYWORD2>positive</KEYWORD2>
240 <KEYWORD2>real</KEYWORD2>
241 <KEYWORD2>severity_level</KEYWORD2>
242 <KEYWORD2>string</KEYWORD2>
243 <KEYWORD2>time</KEYWORD2>
245 <LITERAL1>false</LITERAL1>
246 <LITERAL1>true</LITERAL1>
247 <!-- char, only those not having a ' ' representation -->
248 <LITERAL1>nul</LITERAL1>
249 <LITERAL1>soh</LITERAL1>
250 <LITERAL1>stx</LITERAL1>
251 <LITERAL1>etx</LITERAL1>
252 <LITERAL1>eot</LITERAL1>
253 <LITERAL1>enq</LITERAL1>
254 <LITERAL1>ack</LITERAL1>
255 <LITERAL1>bel</LITERAL1>
256 <LITERAL1>bs</LITERAL1>
257 <LITERAL1>ht</LITERAL1>
258 <LITERAL1>lf</LITERAL1>
259 <LITERAL1>vt</LITERAL1>
260 <LITERAL1>ff</LITERAL1>
261 <LITERAL1>cr</LITERAL1>
262 <LITERAL1>so</LITERAL1>
263 <LITERAL1>si</LITERAL1>
264 <LITERAL1>dle</LITERAL1>
265 <LITERAL1>dc1</LITERAL1>
266 <LITERAL1>dc2</LITERAL1>
267 <LITERAL1>dc3</LITERAL1>
268 <LITERAL1>dc4</LITERAL1>
269 <LITERAL1>nak</LITERAL1>
270 <LITERAL1>syn</LITERAL1>
271 <LITERAL1>etb</LITERAL1>
272 <LITERAL1>can</LITERAL1>
273 <LITERAL1>em</LITERAL1>
274 <LITERAL1>sub</LITERAL1>
275 <LITERAL1>esc</LITERAL1>
276 <LITERAL1>fsp</LITERAL1>
277 <LITERAL1>gsp</LITERAL1>
278 <LITERAL1>rsp</LITERAL1>
279 <LITERAL1>usp</LITERAL1>
280 <LITERAL1>del</LITERAL1>
281 <LITERAL1>c128</LITERAL1>
282 <LITERAL1>c129</LITERAL1>
283 <LITERAL1>c130</LITERAL1>
284 <LITERAL1>c131</LITERAL1>
285 <LITERAL1>c132</LITERAL1>
286 <LITERAL1>c133</LITERAL1>
287 <LITERAL1>c134</LITERAL1>
288 <LITERAL1>c135</LITERAL1>
289 <LITERAL1>c136</LITERAL1>
290 <LITERAL1>c137</LITERAL1>
291 <LITERAL1>c138</LITERAL1>
292 <LITERAL1>c139</LITERAL1>
293 <LITERAL1>c140</LITERAL1>
294 <LITERAL1>c141</LITERAL1>
295 <LITERAL1>c142</LITERAL1>
296 <LITERAL1>c143</LITERAL1>
297 <LITERAL1>c144</LITERAL1>
298 <LITERAL1>c145</LITERAL1>
299 <LITERAL1>c146</LITERAL1>
300 <LITERAL1>c147</LITERAL1>
301 <LITERAL1>c148</LITERAL1>
302 <LITERAL1>c149</LITERAL1>
303 <LITERAL1>c150</LITERAL1>
304 <LITERAL1>c151</LITERAL1>
305 <LITERAL1>c152</LITERAL1>
306 <LITERAL1>c153</LITERAL1>
307 <LITERAL1>c154</LITERAL1>
308 <LITERAL1>c155</LITERAL1>
309 <LITERAL1>c156</LITERAL1>
310 <LITERAL1>c157</LITERAL1>
311 <LITERAL1>c158</LITERAL1>
312 <LITERAL1>c159</LITERAL1>
313 <!-- severity_level -->
314 <LITERAL1>note</LITERAL1>
315 <LITERAL1>warning</LITERAL1>
316 <LITERAL1>error</LITERAL1>
317 <LITERAL1>failure</LITERAL1>
318 <!-- file_open_kind -->
319 <LITERAL1>read_mode</LITERAL1>
320 <LITERAL1>write_mode</LITERAL1>
321 <LITERAL1>append_mode</LITERAL1>
322 <!-- file_open_status -->
323 <LITERAL1>open_ok</LITERAL1>
324 <LITERAL1>status_error</LITERAL1>
325 <LITERAL1>name_error</LITERAL1>
326 <LITERAL1>mode_error</LITERAL1>
328 <!-- ieee.std_logic_1164 -->
329 <KEYWORD2>std_logic</KEYWORD2>
330 <KEYWORD2>std_ulogic</KEYWORD2>
331 <KEYWORD2>std_logic_vector</KEYWORD2>
332 <KEYWORD2>std_ulogic_vector</KEYWORD2>
333 <KEYWORD2>x01</KEYWORD2>
334 <KEYWORD2>x01z</KEYWORD2>
335 <KEYWORD2>ux01</KEYWORD2>
336 <KEYWORD2>ux01z</KEYWORD2>
337 <FUNCTION>to_bit</FUNCTION>
338 <FUNCTION>to_bitvector</FUNCTION>
339 <FUNCTION>to_stdulogic</FUNCTION>
340 <FUNCTION>to_stdlogicvector</FUNCTION>
341 <FUNCTION>to_stdulogicvector</FUNCTION>
342 <FUNCTION>to_x01</FUNCTION>
343 <FUNCTION>to_x01z</FUNCTION>
344 <FUNCTION>to_ux01</FUNCTION>
345 <FUNCTION>rising_edge</FUNCTION>
346 <FUNCTION>falling_edge</FUNCTION>
347 <FUNCTION>is_x</FUNCTION>
349 <!-- ieee.numeric_std -->
350 <KEYWORD2>signed</KEYWORD2>
351 <KEYWORD2>unsigned</KEYWORD2>
352 <FUNCTION>shift_left</FUNCTION>
353 <FUNCTION>shift_right</FUNCTION>
354 <FUNCTION>rotate_left</FUNCTION>
355 <FUNCTION>rotate_right</FUNCTION>
356 <FUNCTION>resize</FUNCTION>
357 <FUNCTION>std_match</FUNCTION>
358 <FUNCTION>to_integer</FUNCTION>
359 <FUNCTION>to_unsigned</FUNCTION>
360 <FUNCTION>to_signed</FUNCTION>
363 <KEYWORD2>line</KEYWORD2>
364 <KEYWORD2>text</KEYWORD2>
365 <KEYWORD2>side</KEYWORD2>
366 <KEYWORD2>width</KEYWORD2>
367 <LITERAL2>left</LITERAL2>
368 <LITERAL2>right</LITERAL2>
369 <LITERAL2>std_input</LITERAL2>
370 <LITERAL2>std_output</LITERAL2>
371 <LITERAL3>input</LITERAL3>
372 <LITERAL3>output</LITERAL3>
373 <FUNCTION>readline</FUNCTION>
374 <FUNCTION>writeline</FUNCTION>
376 <!-- ieee.std_logic_textio -->
377 <FUNCTION>oread</FUNCTION>
378 <FUNCTION>owrite</FUNCTION>
379 <FUNCTION>hread</FUNCTION>
380 <FUNCTION>hwrite</FUNCTION>
382 <!-- ieee.std_logic_arith -->
383 <KEYWORD2>signed</KEYWORD2>
384 <KEYWORD2>unsigned</KEYWORD2>
385 <KEYWORD2>small_int</KEYWORD2>
386 <FUNCTION>conv_integer</FUNCTION>
387 <FUNCTION>conv_unsigned</FUNCTION>
388 <FUNCTION>conv_signed</FUNCTION>
389 <FUNCTION>conv_std_logic_vector</FUNCTION>
390 <FUNCTION>shl</FUNCTION>
391 <FUNCTION>shr</FUNCTION>
392 <FUNCTION>ext</FUNCTION>
393 <FUNCTION>sxt</FUNCTION>
395 <!-- ieee.math_real -->
396 <LITERAL2>math_e</LITERAL2>
397 <LITERAL2>math_1_over_e</LITERAL2>
398 <LITERAL2>math_pi</LITERAL2>
399 <LITERAL2>math_2_pi</LITERAL2>
400 <LITERAL2>math_1_over_pi</LITERAL2>
401 <LITERAL2>math_pi_over_2</LITERAL2>
402 <LITERAL2>math_pi_over_3</LITERAL2>
403 <LITERAL2>math_pi_over_4</LITERAL2>
404 <LITERAL2>math_3_pi_over_2</LITERAL2>
405 <LITERAL2>math_log_of_2</LITERAL2>
406 <LITERAL2>math_log_of_10</LITERAL2>
407 <LITERAL2>math_log2_of_e</LITERAL2>
408 <LITERAL2>math_log10_of_e</LITERAL2>
409 <LITERAL2>math_sqrt_2</LITERAL2>
410 <LITERAL2>math_1_over_sqrt_2</LITERAL2>
411 <LITERAL2>math_sqrt_pi</LITERAL2>
412 <LITERAL2>math_deg_to_rad</LITERAL2>
413 <LITERAL2>math_rad_to_deg</LITERAL2>
414 <FUNCTION>sign</FUNCTION>
415 <FUNCTION>ceil</FUNCTION>
416 <FUNCTION>floor</FUNCTION>
417 <FUNCTION>round</FUNCTION>
418 <FUNCTION>trunc</FUNCTION>
419 <FUNCTION>realmax</FUNCTION>
420 <FUNCTION>realmin</FUNCTION>
421 <FUNCTION>uniform</FUNCTION>
422 <FUNCTION>sqrt</FUNCTION>
423 <FUNCTION>cbrt</FUNCTION>
424 <FUNCTION>exp</FUNCTION>
425 <FUNCTION>log</FUNCTION>
426 <FUNCTION>log2</FUNCTION>
427 <FUNCTION>log10</FUNCTION>
428 <FUNCTION>sin</FUNCTION>
429 <FUNCTION>cos</FUNCTION>
430 <FUNCTION>tan</FUNCTION>
431 <FUNCTION>arcsin</FUNCTION>
432 <FUNCTION>arccos</FUNCTION>
433 <FUNCTION>arctan</FUNCTION>
434 <FUNCTION>sinh</FUNCTION>
435 <FUNCTION>cosh</FUNCTION>
436 <FUNCTION>tanh</FUNCTION>
437 <FUNCTION>arcsinh</FUNCTION>
438 <FUNCTION>arccosh</FUNCTION>
439 <FUNCTION>arctanh</FUNCTION>
441 <!-- ieee.math_complex -->
442 <KEYWORD2>complex</KEYWORD2>
443 <KEYWORD2>positive_real</KEYWORD2>
444 <KEYWORD2>principal_value</KEYWORD2>
445 <KEYWORD2>complex_polar</KEYWORD2>
446 <KEYWORD2>re</KEYWORD2>
447 <KEYWORD2>im</KEYWORD2>
448 <KEYWORD2>mag</KEYWORD2>
449 <KEYWORD2>arg</KEYWORD2>
450 <LITERAL2>math_cbase_1</LITERAL2>
451 <LITERAL2>math_cbase_j</LITERAL2>
452 <LITERAL2>math_czero</LITERAL2>
453 <FUNCTION>cmplx</FUNCTION>
454 <FUNCTION>get_principal_value</FUNCTION>
455 <FUNCTION>complex_to_polar</FUNCTION>
456 <FUNCTION>polar_to_complex</FUNCTION>
457 <FUNCTION>conj</FUNCTION>