Changeset 638 for trunk/src


Ignore:
Timestamp:
Nov 26, 2006, 6:47:03 PM (19 years ago)
Author:
bird
Message:

syntax tables for MSC.

Location:
trunk/src/ash
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/ash/main.c

    r626 r638  
    174174        rootpid = getpid();
    175175        rootshell = 1;
     176#ifdef _MSC_VER
     177    {
     178        extern void init_syntax(void);
     179        init_syntax();
     180    }
     181#endif
    176182        init();
    177183        setstackmark(&smark);
  • trunk/src/ash/syntax.c

    r635 r638  
    55#include "parser.h"
    66
    7 #ifdef _MSC_VER
    8 
    9 #else
     7#ifdef _MSC_VER /* doesn't implement the fancy initializers I think... */
     8
     9char basesyntax[257] = {CEOF};
     10char dqsyntax[257] = {CEOF};
     11char sqsyntax[257] = {CEOF};
     12char arisyntax[257] = {CEOF};
     13char is_type[257] = {0};
     14
     15void 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
    10106#if CWORD != 0
    11107#error initialisation assumes 'CWORD' is zero
  • trunk/src/ash/syntax.h

    r626 r638  
    7777#define digit_val(c)    ((c) - '0')
    7878
     79#ifdef _MSC_VER
     80extern char basesyntax[];
     81extern char dqsyntax[];
     82extern char sqsyntax[];
     83extern char arisyntax[];
     84extern char is_type[];
     85#else
    7986extern const char basesyntax[];
    8087extern const char dqsyntax[];
     
    8289extern const char arisyntax[];
    8390extern const char is_type[];
     91#endif
Note: See TracChangeset for help on using the changeset viewer.