1/**
2 * Name: vhdl
3 * Description: VHSIC Hardware Description Language (VHDL)
4 *		Highlights keywords, comments and special vhdl
5 *		constructs.  Please send comments or suggestions.
6 *
7 * Author: Brian Silveira (brian@nortel.ca)
8 *
9 */
10
11state vhdl extends HighlightEntry
12{
13  /* Comments. */
14  /--/ {
15    comment_face (true);
16    language_print ($0);
17    call (eat_one_line);
18    comment_face (false);
19  }
20
21  /* String constants. */
22  /\"/ {
23    string_face (true);
24    language_print ($0);
25    call (c_string);
26    string_face (false);
27  }
28
29  /* Keywords.
30     (build-re '(abs access after alias all and architecture array
31     assert attribute begin begin block body body buffer bus case
32     component configuration configuration constant disconnect downto
33     else elsif end entity exit file for function function generate
34     generic guarded if in inout is label library linkage loop map
35     mod nand new next nor not null of on open or others out package
36     port procedure process range record register rem report return
37     reverse select severity signal subtype then to transport type
38     units until use variable wait when while with with xor)
39     t)
40   */
41  /\b([aA]([bB][sS]|[cC][cC][eE][sS][sS]|[fF][tT][eE][rR]\
42|[lL]([iI][aA][sS]|[lL])|[nN][dD]\
43|[rR]([cC][hH][iI][tT][eE][cC][tT][uU][rR][eE]|[rR][aA][yY])\
44|[sS][sS][eE][rR][tT]|[tT][tT][rR][iI][bB][uU][tT][eE])\
45|[bB]([eE][gG][iI][nN]()|[lL][oO][cC][kK]|[oO][dD][yY]()\
46|[uU]([fF][fF][eE][rR]|[sS]))\
47|[cC]([aA][sS][eE]\
48|[oO]([mM][pP][oO][nN][eE][nN][tT]\
49|[nN]([fF][iI][gG][uU][rR][aA][tT][iI][oO][nN]()|[sS][tT][aA][nN][tT])))\
50|[dD]([iI][sS][cC][oO][nN][nN][eE][cC][tT]|[oO][wW][nN][tT][oO])\
51|[eE]([lL][sS]([eE]|[iI][fF])|[nN]([dD]|[tT][iI][tT][yY])|[xX][iI][tT])\
52|[fF]([iI][lL][eE]|[oO][rR]|[uU][nN][cC][tT][iI][oO][nN]())\
53|[gG]([eE][nN][eE][rR]([aA][tT][eE]|[iI][cC])|[uU][aA][rR][dD][eE][dD])\
54|[iI]([fF]|[nN](|[oO][uU][tT])|[sS])\
55|[lL]([aA][bB][eE][lL]|[iI]([bB][rR][aA][rR][yY]|[nN][kK][aA][gG][eE])\
56|[oO][oO][pP])\
57|[mM]([aA][pP]|[oO][dD])\
58|[nN]([aA][nN][dD]|[eE]([wW]|[xX][tT])|[oO]([rR]|[tT])|[uU][lL][lL])\
59|[oO]([fF]|[nN]|[pP][eE][nN]|[rR]|[tT][hH][eE][rR][sS]|[uU][tT])\
60|[pP]([aA][cC][kK][aA][gG][eE]|[oO][rR][tT]\
61|[rR][oO][cC][eE]([dD][uU][rR][eE]|[sS][sS]))\
62|[rR]([aA][nN][gG][eE]\
63|[eE]([cC][oO][rR][dD]|[gG][iI][sS][tT][eE][rR]|[mM]|[pP][oO][rR][tT]\
64|[tT][uU][rR][nN]|[vV][eE][rR][sS][eE]))\
65|[sS]([eE]([lL][eE][cC][tT]|[vV][eE][rR][iI][tT][yY])|[iI][gG][nN][aA][lL]\
66|[uU][bB][tT][yY][pP][eE])\
67|[tT]([hH][eE][nN]|[oO]|[rR][aA][nN][sS][pP][oO][rR][tT]|[yY][pP][eE])\
68|[uU]([nN]([iI][tT][sS]|[tT][iI][lL])|[sS][eE])\
69|[vV][aA][rR][iI][aA][bB][lL][eE]\
70|[wW]([aA][iI][tT]|[hH]([eE][nN]|[iI][lL][eE])|[iI][tT][hH]())\
71|[xX][oO][rR])\b/ {
72    keyword_face (true);
73    language_print ($0);
74    keyword_face (false);
75  }
76
77  /<=|=>/ {
78    reference_face (true);
79    language_print ($0);
80    reference_face(false);
81  }
82}
83
84
85/*
86Local variables:
87mode: c
88End:
89*/
90