- Timestamp:
- Nov 26, 2006, 6:47:03 PM (19 years ago)
- Location:
- trunk/src/ash
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/ash/main.c
r626 r638 174 174 rootpid = getpid(); 175 175 rootshell = 1; 176 #ifdef _MSC_VER 177 { 178 extern void init_syntax(void); 179 init_syntax(); 180 } 181 #endif 176 182 init(); 177 183 setstackmark(&smark); -
trunk/src/ash/syntax.c
r635 r638 5 5 #include "parser.h" 6 6 7 #ifdef _MSC_VER 8 9 #else 7 #ifdef _MSC_VER /* doesn't implement the fancy initializers I think... */ 8 9 char basesyntax[257] = {CEOF}; 10 char dqsyntax[257] = {CEOF}; 11 char sqsyntax[257] = {CEOF}; 12 char arisyntax[257] = {CEOF}; 13 char is_type[257] = {0}; 14 15 void init_syntax(void) 16 { 17 char *tab; 18 int i; 19 20 #define ndx(ch) (ch + 1 - CHAR_MIN) 21 #define set(ch, val) tab[ndx(ch)] = val 22 #define set_range(s, e, val) for (i = ndx(s); i <= ndx(e); i++) tab[i] = val 23 24 /*basesyntax*/ 25 tab = basesyntax; 26 set_range(CTL_FIRST, CTL_LAST, CCTL); 27 set('\n', CNL); 28 set('\\', CBACK); 29 set('\'', CSQUOTE); 30 set('"', CDQUOTE); 31 set('`', CBQUOTE); 32 set('$', CVAR); 33 set('}', CENDVAR); 34 set('<', CSPCL); 35 set('>', CSPCL); 36 set('(', CSPCL); 37 set(')', CSPCL); 38 set(';', CSPCL); 39 set('&', CSPCL); 40 set('|', CSPCL); 41 set(' ', CSPCL); 42 set('\t', CSPCL); 43 44 tab = dqsyntax; 45 set_range(CTL_FIRST, CTL_LAST, CCTL); 46 set('\n', CNL); 47 set('\\', CBACK); 48 set('"', CDQUOTE); 49 set('`', CBQUOTE); 50 set('$', CVAR); 51 set('}', CENDVAR); 52 /* ':/' for tilde expansion, '-' for [a\-x] pattern ranges */ 53 set('!', CCTL); 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 63 tab = sqsyntax; 64 set_range(CTL_FIRST, CTL_LAST, CCTL); 65 set('\n', CNL); 66 set('\'', CSQUOTE); 67 /* ':/' for tilde expansion, '-' for [a\-x] pattern ranges */ 68 set('!', CCTL); 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 78 tab = arisyntax; 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 tab = is_type; 91 set_range('0', '9', ISDIGIT); 92 set_range('a', 'z', ISLOWER); 93 set_range('A', 'Z', ISUPPER); 94 set('_', ISUNDER); 95 set('#', ISSPECL); 96 set('?', ISSPECL); 97 set('$', ISSPECL); 98 set('!', ISSPECL); 99 set('-', ISSPECL); 100 set('*', ISSPECL); 101 set('@', ISSPECL); 102 } 103 104 #else /* !_MSC_VER */ 105 10 106 #if CWORD != 0 11 107 #error initialisation assumes 'CWORD' is zero -
trunk/src/ash/syntax.h
r626 r638 77 77 #define digit_val(c) ((c) - '0') 78 78 79 #ifdef _MSC_VER 80 extern char basesyntax[]; 81 extern char dqsyntax[]; 82 extern char sqsyntax[]; 83 extern char arisyntax[]; 84 extern char is_type[]; 85 #else 79 86 extern const char basesyntax[]; 80 87 extern const char dqsyntax[]; … … 82 89 extern const char arisyntax[]; 83 90 extern const char is_type[]; 91 #endif
Note:
See TracChangeset
for help on using the changeset viewer.