VirtualBox

source: kBuild/trunk/src/ash/syntax.c@ 622

Last change on this file since 622 was 622, checked in by bird, 18 years ago

Current libc code (based on NetBSD sh 2005-07-03).

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