Annotation of coherent/a/usr/bob/korn/lex.h, revision 1.1.1.1

1.1       root        1: /*
                      2:  * Source input, lexer and parser
                      3:  */
                      4: 
                      5: /* $Header: lex.h,v 3.1 88/11/03 09:13:40 egisin Exp $ */
                      6: 
                      7: #define        IDENT   64
                      8: 
                      9: typedef struct source Source;
                     10: struct source {
                     11:        char   *str;            /* input pointer */
                     12:        int     type;           /* input type */
                     13:        union {
                     14:                char  **strv;   /* string [] */
                     15:                FILE   *file;   /* file */
                     16:                struct tbl *tblp; /* alias */
                     17:        } u;
                     18:        int     line;           /* line number */
                     19:        char   *file;           /* input file name */
                     20:        int     echo;           /* echo input to shlout */
                     21:        Source *next;           /* stacked source */
                     22: };
                     23: 
                     24: /* Source.type values */
                     25: #define        SEOF    0               /* input EOF */
                     26: #define        STTY    1               /* terminal input */
                     27: #define        SFILE   2               /* file input */
                     28: #define        SSTRING 4               /* string */
                     29: #define        SWSTR   3               /* string without \n */
                     30: #define        SWORDS  5               /* string[] */
                     31: #define        SWORDSEP 8              /* string[] seperator */
                     32: #define        SALIAS  6               /* alias expansion */
                     33: #define        SHIST   7               /* history expansion */
                     34: 
                     35: Source *pushs ARGS((int stype));       /* push Source */
                     36: struct op *compile ARGS((Source *s));  /* compile tree */
                     37: 
                     38: /*
                     39:  * states while lexing word
                     40:  */
                     41: #define        SBASE   0               /* outside any lexical constructs */
                     42: #define        SWORD   6               /* implicit quoting for substitute() */
                     43: #define        SSQUOTE 1               /* inside '' */
                     44: #define        SDQUOTE 2               /* inside "" */
                     45: #define        SBRACE  3               /* inside ${} */
                     46: #define        SPAREN  4               /* inside $() */
                     47: #define        SBQUOTE 5               /* inside `` */
                     48: 
                     49: Extern int     multiline;      /* \n changed to ; */
                     50: 
                     51: typedef union {
                     52:        char    *cp;
                     53:        char    **wp;
                     54:        int     i;
                     55:        struct  op *o;
                     56: } YYSTYPE;
                     57: 
                     58: #define        IODEFAULT (-1)          /* token for default IO unit */
                     59: 
                     60: #define        LWORD   256
                     61: #define        LOGAND  257
                     62: #define        LOGOR   258
                     63: #define        BREAK   259
                     64: #define        IF      260
                     65: #define        THEN    261
                     66: #define        ELSE    262
                     67: #define        ELIF    263
                     68: #define        FI      264
                     69: #define        CASE    265
                     70: #define        ESAC    266
                     71: #define        FOR     267
                     72: #define        WHILE   268
                     73: #define        UNTIL   269
                     74: #define        DO      270
                     75: #define        DONE    271
                     76: #define        IN      272
                     77: #define        FUNCTION 273
                     78: #define        TIME    274
                     79: #define        REDIR   275
                     80: #define        MPAREN  276             /* () */
                     81: #define        YYERRCODE 300
                     82: 
                     83: /* flags to yylex */
                     84: #define        CONTIN  BIT(0)          /* skip new lines to complete command */
                     85: #define        ONEWORD BIT(1)          /* single word for substitute() */
                     86: #define        ALIAS   BIT(2)          /* recognize alias */
                     87: #define        KEYWORD BIT(3)          /* recognize keywords */
                     88: 
                     89: #define        SYNTAXERR       zzerr()
                     90: #define        HERES   10              /* max << in line */
                     91: 
                     92: Extern char    line [LINE+1];  /* input line */
                     93: Extern Source *source;         /* yyparse/yylex source */
                     94: Extern YYSTYPE yylval;         /* result from yylex */
                     95: Extern int     yynerrs;
                     96: Extern struct ioword *heres [HERES], **herep;
                     97: Extern int     iounit;
                     98: Extern char    ident [IDENT+1];
                     99: 
                    100: extern int     yylex ARGS((int flags));
                    101: extern void    yyerror ARGS((Const char *msg));
                    102: 
                    103: #define        HISTORY 100             /* size of saved history */
                    104: 
                    105: extern char   *history [HISTORY];      /* saved commands */
                    106: extern char  **histptr;        /* last history item */
                    107: extern int     histpush;       /* number of pushed fc commands */
                    108: 

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.