source: trunk/src/ash/syntax.c@ 635

Last change on this file since 635 was 635, checked in by bird, 19 years ago

More hacking. Found SDK/TOOL bug.

  • Property svn:eol-style set to native
File size: 2.3 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
7#ifdef _MSC_VER
8
9#else
10#if CWORD != 0
11#error initialisation assumes 'CWORD' is zero
12#endif
13
14#define ndx(ch) (ch + 1 - CHAR_MIN)
15#define set(ch, val) [ndx(ch)] = val,
16#define set_range(s, e, val) [ndx(s) ... ndx(e)] = val,
17
18/* syntax table used when not in quotes */
19const char basesyntax[257] = { CEOF,
20 set_range(CTL_FIRST, CTL_LAST, CCTL)
21 set('\n', CNL)
22 set('\\', CBACK)
23 set('\'', CSQUOTE)
24 set('"', CDQUOTE)
25 set('`', CBQUOTE)
26 set('$', CVAR)
27 set('}', CENDVAR)
28 set('<', CSPCL)
29 set('>', CSPCL)
30 set('(', CSPCL)
31 set(')', CSPCL)
32 set(';', CSPCL)
33 set('&', CSPCL)
34 set('|', CSPCL)
35 set(' ', CSPCL)
36 set('\t', CSPCL)
37};
38
39/* syntax table used when in double quotes */
40const char dqsyntax[257] = { CEOF,
41 set_range(CTL_FIRST, CTL_LAST, CCTL)
42 set('\n', CNL)
43 set('\\', CBACK)
44 set('"', CDQUOTE)
45 set('`', CBQUOTE)
46 set('$', CVAR)
47 set('}', CENDVAR)
48 /* ':/' for tilde expansion, '-' for [a\-x] pattern ranges */
49 set('!', CCTL)
50 set('*', CCTL)
51 set('?', CCTL)
52 set('[', CCTL)
53 set('=', CCTL)
54 set('~', CCTL)
55 set(':', CCTL)
56 set('/', CCTL)
57 set('-', CCTL)
58};
59
60/* syntax table used when in single quotes */
61const char sqsyntax[257] = { CEOF,
62 set_range(CTL_FIRST, CTL_LAST, CCTL)
63 set('\n', CNL)
64 set('\'', CSQUOTE)
65 /* ':/' for tilde expansion, '-' for [a\-x] pattern ranges */
66 set('!', CCTL)
67 set('*', CCTL)
68 set('?', CCTL)
69 set('[', CCTL)
70 set('=', CCTL)
71 set('~', CCTL)
72 set(':', CCTL)
73 set('/', CCTL)
74 set('-', CCTL)
75};
76
77/* syntax table used when in arithmetic */
78const char arisyntax[257] = { CEOF,
79 set_range(CTL_FIRST, CTL_LAST, CCTL)
80 set('\n', CNL)
81 set('\\', CBACK)
82 set('`', CBQUOTE)
83 set('\'', CSQUOTE)
84 set('"', CDQUOTE)
85 set('$', CVAR)
86 set('}', CENDVAR)
87 set('(', CLP)
88 set(')', CRP)
89};
90
91/* character classification table */
92const char is_type[257] = { 0,
93 set_range('0', '9', ISDIGIT)
94 set_range('a', 'z', ISLOWER)
95 set_range('A', 'Z', ISUPPER)
96 set('_', ISUNDER)
97 set('#', ISSPECL)
98 set('?', ISSPECL)
99 set('$', ISSPECL)
100 set('!', ISSPECL)
101 set('-', ISSPECL)
102 set('*', ISSPECL)
103 set('@', ISSPECL)
104};
105#endif /* !_MSC_VER */
Note: See TracBrowser for help on using the repository browser.