Small change to getopt stuff
[enscript.git] / states / hl / inf.st
1 /**
2  * Name: inf
3  * Description: GUI INF Script language
4  * Author: Markku Rossi <mtr@iki.fi>
5  */
6
7 state inf_string extends Highlight
8 {
9   /\"\"/ {
10     /* A quoted '"' character. */
11     language_print($0);
12   }
13   /\"/ {
14     /* End of the string. */
15     language_print($0);
16     return;
17   }
18 }
19
20
21 state inf extends HighlightEntry
22 {
23   /* Comments. */
24   /;/ {
25     comment_face(true);
26     language_print($0);
27     call(eat_one_line);
28     comment_face(false);
29   }
30
31   /* Section names. */
32   /^(\[)([^\]]+)(\][ \t]*)/ {
33     language_print($1);
34
35     function_name_face(true);
36     language_print($2);
37     function_name_face(false);
38
39     language_print($3);
40   }
41
42   /* String constants. */
43   /\"\"\"/ {
44     /* A string starting with a '"' character. */
45     string_face(true);
46     language_print($0);
47     call(inf_string);
48     string_face(false);
49   }
50   /\"\"/ {
51     /* An empty string. */
52     string_face(true);
53     language_print($0);
54     string_face(false);
55   }
56   /\"/ {
57     /* Start of a string. */
58     string_face(true);
59     language_print($0);
60     call(inf_string);
61     string_face(false);
62   }
63
64   /* Labels. */
65   /^([a-zA-Z_][a-zA-Z_0-9]*)([ \t]*=[ \t]*\+)/ {
66     reference_face(true);
67     language_print($1);
68     reference_face(false);
69     language_print($2);
70   }
71   /* Goto statements and its target. */
72   /(goto)([ \t]*)([a-zA-Z_][a-zA-Z_0-9]*)/ {
73     keyword_face(true);
74     language_print($1);
75     keyword_face(false);
76
77     language_print($2);
78
79     reference_face(true);
80     language_print($3);
81     reference_face(false);
82   }
83
84   /* Shell section calls. */
85   /\bshell\b/i {
86     builtin_face(true);
87     language_print($0);
88     builtin_face(false);
89   }
90
91   /* The read-syms, install, and detect calls. */
92   /^([ \t]*)(read-syms|detect|install)([ \t]+)([a-zA-Z_][a-zA-Z_0-9]*)/i {
93     language_print($1);
94
95     builtin_face(true);
96     language_print($2);
97     builtin_face(false);
98
99     language_print($3);
100
101     reference_face(true);
102     language_print($4);
103     reference_face(false);
104   }
105
106   /* The read-syms, detect, and install in other contexts. */
107   /^([ \t]*)(read-syms|detect|install)\b/i {
108     language_print($1);
109
110     builtin_face(true);
111     language_print($2);
112     builtin_face(false);
113   }
114
115   /* Variable / constant definitions.  We catch these here so we won't
116      conflict with any keywords, etc. */
117   /([a-zA-Z_][a-zA-Z_0-9]*[ \t]*=)/ {
118     language_print($0);
119   }
120
121   /* Keywords, sort of.
122
123      (build-re '(return read-syms ifstr ifint ifcontains else
124      else-ifstr else-ifint elseif-contains endif forlistdo
125      endforlistdo goto set set-subst set-add set-sub set-mul set-div
126      set-or set-hextodec set-dectohex exit))
127
128   */
129   /\b(e(lse(|-if(int|str)|if-contains)|nd(forlistdo|if)|xit)|forlistdo|goto\
130 |if(contains|int|str)|re(ad-syms|turn)\
131 |set(|-(add|d(ectohex|iv)|hextodec|mul|or|sub(|st))))\b(\(i\))?/i {
132     keyword_face(true);
133     language_print($0);
134     keyword_face(false);
135   }
136
137
138
139 }
140
141 \f
142 /*
143 Local variables:
144 mode: c
145 End:
146 */