VirtualBox

source: kBuild/trunk/src/kash/syntax.c@ 3646

Last change on this file since 3646 was 3574, checked in by bird, 2 years ago

kash: shut up annoying warning

  • Property svn:eol-style set to LF
  • Property svn:keywords set to Id
File size: 4.7 KB
Line 
1/* $NetBSD: syntax.c,v 1.1 2004/01/17 17:38:12 dsl Exp $ */
2
3#include "shell.h"
4#include "syntax.h"
5#include "parser.h"
6#include "shinstance.h"
7
8#ifdef _MSC_VER /* doesn't implement the fancy initializers I think... */
9
10char basesyntax[257] = {CSHEOF};
11char dqsyntax[257] = {CSHEOF};
12char sqsyntax[257] = {CSHEOF};
13char arisyntax[257] = {CSHEOF};
14char is_type[257] = {0};
15
16void init_syntax(void)
17{
18 char *tab;
19 int i;
20
21#define ndx(ch) (ch + 1 - CHAR_MIN)
22#define set(ch, val) tab[ndx(ch)] = val
23#define set_range(s, e, val) for (i = ndx(s); i <= ndx(e); i++) tab[i] = val
24
25 /*basesyntax*/
26 tab = basesyntax;
27 set_range(CTL_FIRST, CTL_LAST, CCTL);
28 set('\n', CNL);
29 set('\\', CBACK);
30 set('\'', CSQUOTE);
31 set('"', CDQUOTE);
32 set('`', CBQUOTE);
33 set('$', CVAR);
34 set('}', CENDVAR);
35 set('<', CSPCL);
36 set('>', CSPCL);
37 set('(', CSPCL);
38 set(')', CSPCL);
39 set(';', CSPCL);
40 set('&', CSPCL);
41 set('|', CSPCL);
42 set(' ', CSPCL);
43 set('\t', CSPCL);
44
45 tab = dqsyntax;
46 set_range(CTL_FIRST, CTL_LAST, CCTL);
47 set('\n', CNL);
48 set('\\', CBACK);
49 set('"', CDQUOTE);
50 set('`', CBQUOTE);
51 set('$', CVAR);
52 set('}', CENDVAR);
53 /* ':/' for tilde expansion, '-' for [a\-x] pattern ranges */
54 set('!', CCTL);
55 set('*', CCTL);
56 set('?', CCTL);
57 set('[', CCTL);
58 set('=', CCTL);
59 set('~', CCTL);
60 set(':', CCTL);
61 set('/', CCTL);
62 set('-', CCTL);
63
64 tab = sqsyntax;
65 set_range(CTL_FIRST, CTL_LAST, CCTL);
66 set('\n', CNL);
67 set('\'', CSQUOTE);
68 /* ':/' for tilde expansion, '-' for [a\-x] pattern ranges */
69 set('!', CCTL);
70 set('*', CCTL) ;
71 set('?', CCTL);
72 set('[', CCTL);
73 set('=', CCTL);
74 set('~', CCTL);
75 set(':', CCTL);
76 set('/', CCTL);
77 set('-', CCTL);
78
79 tab = arisyntax;
80 set_range(CTL_FIRST, CTL_LAST, CCTL);
81 set('\n', CNL);
82 set('\\', CBACK);
83 set('`', CBQUOTE);
84 set('\'', CSQUOTE);
85 set('"', CDQUOTE);
86 set('$', CVAR);
87 set('}', CENDVAR);
88 set('(', CLP);
89 set(')', CRP);
90
91 tab = is_type;
92 set_range('0', '9', ISDIGIT);
93 set_range('a', 'z', ISLOWER);
94 set_range('A', 'Z', ISUPPER);
95 set('_', ISUNDER);
96 set('#', ISSPECL);
97 set('?', ISSPECL);
98 set('$', ISSPECL);
99 set('!', ISSPECL);
100 set('-', ISSPECL);
101 set('*', ISSPECL);
102 set('@', ISSPECL);
103}
104
105#else /* !_MSC_VER */
106
107#if CWORD != 0
108#error initialisation assumes 'CWORD' is zero
109#endif
110
111#define ndx(ch) (ch + 1 - CHAR_MIN)
112#define set(ch, val) [ndx(ch)] = val,
113#define set_range(s, e, val) [ndx(s) ... ndx(e)] = val,
114
115/* Shut up the pedantic warnings about set_range() */
116#ifdef __GNUC__
117# if __GNUC__ >= 5 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 2)
118# pragma GCC diagnostic ignored "-Wpedantic"
119# endif
120#endif
121
122/* syntax table used when not in quotes */
123const char basesyntax[257] = { CSHEOF,
124 set_range(CTL_FIRST, CTL_LAST, CCTL)
125 set('\n', CNL)
126 set('\\', CBACK)
127 set('\'', CSQUOTE)
128 set('"', CDQUOTE)
129 set('`', CBQUOTE)
130 set('$', CVAR)
131 set('}', CENDVAR)
132 set('<', CSPCL)
133 set('>', CSPCL)
134 set('(', CSPCL)
135 set(')', CSPCL)
136 set(';', CSPCL)
137 set('&', CSPCL)
138 set('|', CSPCL)
139 set(' ', CSPCL)
140 set('\t', CSPCL)
141};
142
143/* syntax table used when in double quotes */
144const char dqsyntax[257] = { CSHEOF,
145 set_range(CTL_FIRST, CTL_LAST, CCTL)
146 set('\n', CNL)
147 set('\\', CBACK)
148 set('"', CDQUOTE)
149 set('`', CBQUOTE)
150 set('$', CVAR)
151 set('}', CENDVAR)
152 /* ':/' for tilde expansion, '-' for [a\-x] pattern ranges */
153 set('!', CCTL)
154 set('*', CCTL)
155 set('?', CCTL)
156 set('[', CCTL)
157 set('=', CCTL)
158 set('~', CCTL)
159 set(':', CCTL)
160 set('/', CCTL)
161 set('-', CCTL)
162};
163
164/* syntax table used when in single quotes */
165const char sqsyntax[257] = { CSHEOF,
166 set_range(CTL_FIRST, CTL_LAST, CCTL)
167 set('\n', CNL)
168 set('\'', CSQUOTE)
169 /* ':/' for tilde expansion, '-' for [a\-x] pattern ranges */
170 set('!', CCTL)
171 set('*', CCTL)
172 set('?', CCTL)
173 set('[', CCTL)
174 set('=', CCTL)
175 set('~', CCTL)
176 set(':', CCTL)
177 set('/', CCTL)
178 set('-', CCTL)
179};
180
181/* syntax table used when in arithmetic */
182const char arisyntax[257] = { CSHEOF,
183 set_range(CTL_FIRST, CTL_LAST, CCTL)
184 set('\n', CNL)
185 set('\\', CBACK)
186 set('`', CBQUOTE)
187 set('\'', CSQUOTE)
188 set('"', CDQUOTE)
189 set('$', CVAR)
190 set('}', CENDVAR)
191 set('(', CLP)
192 set(')', CRP)
193};
194
195/* character classification table */
196const char is_type[257] = { 0,
197 set_range('0', '9', ISDIGIT)
198 set_range('a', 'z', ISLOWER)
199 set_range('A', 'Z', ISUPPER)
200 set('_', ISUNDER)
201 set('#', ISSPECL)
202 set('?', ISSPECL)
203 set('$', ISSPECL)
204 set('!', ISSPECL)
205 set('-', ISSPECL)
206 set('*', ISSPECL)
207 set('@', ISSPECL)
208};
209#endif /* !_MSC_VER */
Note: See TracBrowser for help on using the repository browser.

© 2025 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette