Annotation of researchv8dc/libc/gen/regprog.h, revision 1.1.1.1

1.1       root        1: /* useful constants */
                      2: #define NULL 0
                      3: #define        TRUE    1
                      4: #define        FALSE   0
                      5: #define        HAT     '\177'          /* character to mark real beg. of line */
                      6: 
                      7: /*
                      8:  *     character class
                      9:  */
                     10: typedef struct CClass {
                     11:        char    map[16];        /* 16 bytes == 128 bits, one bit per char */
                     12: }Class;
                     13: 
                     14: /*
                     15:  *     sub-expression matches
                     16:  */
                     17: #define NSUBEXP  10
                     18: typedef struct Subexp{
                     19:        char *startp[NSUBEXP];
                     20:        char *endp[NSUBEXP];
                     21: }Subexp;
                     22: 
                     23: /*
                     24:  *     Machine instructions
                     25:  */
                     26: typedef struct Inst{
                     27:        int     type;                   /* < 0200 ==> literal, otherwise action */
                     28:        union   {
                     29:                int sid;                /* sub-expression id for RBRA and LBRA */
                     30:                struct Inst *other;     /* instructions pointer */
                     31:        } u;
                     32:        struct Inst *left;
                     33: }Inst;
                     34: #define        next    left    /* Left branch is usually just next ptr */
                     35: #define        subid   u.sid
                     36: #define right  u.other
                     37: 
                     38: /*
                     39:  *     Program definition
                     40:  */
                     41: #define        NCLASS  16
                     42: typedef struct Program{
                     43:        Subexp  se;             /* .bss */
                     44:        Inst    *startinst;     /* pc */
                     45:        Class   class[NCLASS];  /* .data */
                     46:        Inst    firstinst[5];   /* .text */
                     47: }Prog;
                     48: 
                     49: /*
                     50:  * Actions and Tokens
                     51:  *
                     52:  *     02xx are operators, value == precedence
                     53:  *     03xx are tokens, i.e. operands for operators
                     54:  */
                     55: #define        OPERATOR        0200    /* Bitmask of all operators */
                     56: #define        START           0200    /* Start, used for marker on stack */
                     57: #define        RBRA            0201    /* Right bracket, ) */
                     58: #define        LBRA            0202    /* Left bracket, ( */
                     59: #define        OR              0203    /* Alternation, | */
                     60: #define        CAT             0204    /* Concatentation, implicit operator */
                     61: #define        STAR            0205    /* Closure, * */
                     62: #define        PLUS            0206    /* a+ == aa* */
                     63: #define        QUEST           0207    /* a? == a|nothing, i.e. 0 or 1 a's */
                     64: #define        ANY             0300    /* Any character, . */
                     65: #define        NOP             0301    /* No operation, internal use only */
                     66: #define        BOL             0302    /* Beginning of line, ^ */
                     67: #define        EOL             0303    /* End of line, $ */
                     68: #define        CCLASS          0304    /* Character class, [] */
                     69: #define        END             0377    /* Terminate: match found */

unix.superglobalmegacorp.com

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