[BACK]Return to proctab.c CVS log [TXT][DIR] Up to [local] / src / usr.bin / awk

Annotation of src/usr.bin/awk/proctab.c, Revision 1.1

1.1     ! tholo       1: #include <stdio.h>
        !             2: #include "awk.h"
        !             3: #include "ytab.h"
        !             4:
        !             5: static char *printname[93] = {
        !             6:        (char *) "FIRSTTOKEN",  /* 257 */
        !             7:        (char *) "PROGRAM",     /* 258 */
        !             8:        (char *) "PASTAT",      /* 259 */
        !             9:        (char *) "PASTAT2",     /* 260 */
        !            10:        (char *) "XBEGIN",      /* 261 */
        !            11:        (char *) "XEND",        /* 262 */
        !            12:        (char *) "NL",  /* 263 */
        !            13:        (char *) "ARRAY",       /* 264 */
        !            14:        (char *) "MATCH",       /* 265 */
        !            15:        (char *) "NOTMATCH",    /* 266 */
        !            16:        (char *) "MATCHOP",     /* 267 */
        !            17:        (char *) "FINAL",       /* 268 */
        !            18:        (char *) "DOT", /* 269 */
        !            19:        (char *) "ALL", /* 270 */
        !            20:        (char *) "CCL", /* 271 */
        !            21:        (char *) "NCCL",        /* 272 */
        !            22:        (char *) "CHAR",        /* 273 */
        !            23:        (char *) "OR",  /* 274 */
        !            24:        (char *) "STAR",        /* 275 */
        !            25:        (char *) "QUEST",       /* 276 */
        !            26:        (char *) "PLUS",        /* 277 */
        !            27:        (char *) "AND", /* 278 */
        !            28:        (char *) "BOR", /* 279 */
        !            29:        (char *) "APPEND",      /* 280 */
        !            30:        (char *) "EQ",  /* 281 */
        !            31:        (char *) "GE",  /* 282 */
        !            32:        (char *) "GT",  /* 283 */
        !            33:        (char *) "LE",  /* 284 */
        !            34:        (char *) "LT",  /* 285 */
        !            35:        (char *) "NE",  /* 286 */
        !            36:        (char *) "IN",  /* 287 */
        !            37:        (char *) "ARG", /* 288 */
        !            38:        (char *) "BLTIN",       /* 289 */
        !            39:        (char *) "BREAK",       /* 290 */
        !            40:        (char *) "CLOSE",       /* 291 */
        !            41:        (char *) "CONTINUE",    /* 292 */
        !            42:        (char *) "DELETE",      /* 293 */
        !            43:        (char *) "DO",  /* 294 */
        !            44:        (char *) "EXIT",        /* 295 */
        !            45:        (char *) "FOR", /* 296 */
        !            46:        (char *) "FUNC",        /* 297 */
        !            47:        (char *) "SUB", /* 298 */
        !            48:        (char *) "GSUB",        /* 299 */
        !            49:        (char *) "IF",  /* 300 */
        !            50:        (char *) "INDEX",       /* 301 */
        !            51:        (char *) "LSUBSTR",     /* 302 */
        !            52:        (char *) "MATCHFCN",    /* 303 */
        !            53:        (char *) "NEXT",        /* 304 */
        !            54:        (char *) "NEXTFILE",    /* 305 */
        !            55:        (char *) "ADD", /* 306 */
        !            56:        (char *) "MINUS",       /* 307 */
        !            57:        (char *) "MULT",        /* 308 */
        !            58:        (char *) "DIVIDE",      /* 309 */
        !            59:        (char *) "MOD", /* 310 */
        !            60:        (char *) "ASSIGN",      /* 311 */
        !            61:        (char *) "ASGNOP",      /* 312 */
        !            62:        (char *) "ADDEQ",       /* 313 */
        !            63:        (char *) "SUBEQ",       /* 314 */
        !            64:        (char *) "MULTEQ",      /* 315 */
        !            65:        (char *) "DIVEQ",       /* 316 */
        !            66:        (char *) "MODEQ",       /* 317 */
        !            67:        (char *) "POWEQ",       /* 318 */
        !            68:        (char *) "PRINT",       /* 319 */
        !            69:        (char *) "PRINTF",      /* 320 */
        !            70:        (char *) "SPRINTF",     /* 321 */
        !            71:        (char *) "ELSE",        /* 322 */
        !            72:        (char *) "INTEST",      /* 323 */
        !            73:        (char *) "CONDEXPR",    /* 324 */
        !            74:        (char *) "POSTINCR",    /* 325 */
        !            75:        (char *) "PREINCR",     /* 326 */
        !            76:        (char *) "POSTDECR",    /* 327 */
        !            77:        (char *) "PREDECR",     /* 328 */
        !            78:        (char *) "VAR", /* 329 */
        !            79:        (char *) "IVAR",        /* 330 */
        !            80:        (char *) "VARNF",       /* 331 */
        !            81:        (char *) "CALL",        /* 332 */
        !            82:        (char *) "NUMBER",      /* 333 */
        !            83:        (char *) "STRING",      /* 334 */
        !            84:        (char *) "FIELD",       /* 335 */
        !            85:        (char *) "REGEXPR",     /* 336 */
        !            86:        (char *) "GETLINE",     /* 337 */
        !            87:        (char *) "RETURN",      /* 338 */
        !            88:        (char *) "SPLIT",       /* 339 */
        !            89:        (char *) "SUBSTR",      /* 340 */
        !            90:        (char *) "WHILE",       /* 341 */
        !            91:        (char *) "CAT", /* 342 */
        !            92:        (char *) "NOT", /* 343 */
        !            93:        (char *) "UMINUS",      /* 344 */
        !            94:        (char *) "POWER",       /* 345 */
        !            95:        (char *) "DECR",        /* 346 */
        !            96:        (char *) "INCR",        /* 347 */
        !            97:        (char *) "INDIRECT",    /* 348 */
        !            98:        (char *) "LASTTOKEN",   /* 349 */
        !            99: };
        !           100:
        !           101:
        !           102: Cell *(*proctab[93])(Node **, int) = {
        !           103:        nullproc,       /* FIRSTTOKEN */
        !           104:        program,        /* PROGRAM */
        !           105:        pastat, /* PASTAT */
        !           106:        dopa2,  /* PASTAT2 */
        !           107:        nullproc,       /* XBEGIN */
        !           108:        nullproc,       /* XEND */
        !           109:        nullproc,       /* NL */
        !           110:        array,  /* ARRAY */
        !           111:        matchop,        /* MATCH */
        !           112:        matchop,        /* NOTMATCH */
        !           113:        nullproc,       /* MATCHOP */
        !           114:        nullproc,       /* FINAL */
        !           115:        nullproc,       /* DOT */
        !           116:        nullproc,       /* ALL */
        !           117:        nullproc,       /* CCL */
        !           118:        nullproc,       /* NCCL */
        !           119:        nullproc,       /* CHAR */
        !           120:        nullproc,       /* OR */
        !           121:        nullproc,       /* STAR */
        !           122:        nullproc,       /* QUEST */
        !           123:        nullproc,       /* PLUS */
        !           124:        boolop, /* AND */
        !           125:        boolop, /* BOR */
        !           126:        nullproc,       /* APPEND */
        !           127:        relop,  /* EQ */
        !           128:        relop,  /* GE */
        !           129:        relop,  /* GT */
        !           130:        relop,  /* LE */
        !           131:        relop,  /* LT */
        !           132:        relop,  /* NE */
        !           133:        instat, /* IN */
        !           134:        arg,    /* ARG */
        !           135:        bltin,  /* BLTIN */
        !           136:        jump,   /* BREAK */
        !           137:        closefile,      /* CLOSE */
        !           138:        jump,   /* CONTINUE */
        !           139:        adelete,        /* DELETE */
        !           140:        dostat, /* DO */
        !           141:        jump,   /* EXIT */
        !           142:        forstat,        /* FOR */
        !           143:        nullproc,       /* FUNC */
        !           144:        sub,    /* SUB */
        !           145:        gsub,   /* GSUB */
        !           146:        ifstat, /* IF */
        !           147:        sindex, /* INDEX */
        !           148:        nullproc,       /* LSUBSTR */
        !           149:        matchop,        /* MATCHFCN */
        !           150:        jump,   /* NEXT */
        !           151:        jump,   /* NEXTFILE */
        !           152:        arith,  /* ADD */
        !           153:        arith,  /* MINUS */
        !           154:        arith,  /* MULT */
        !           155:        arith,  /* DIVIDE */
        !           156:        arith,  /* MOD */
        !           157:        assign, /* ASSIGN */
        !           158:        nullproc,       /* ASGNOP */
        !           159:        assign, /* ADDEQ */
        !           160:        assign, /* SUBEQ */
        !           161:        assign, /* MULTEQ */
        !           162:        assign, /* DIVEQ */
        !           163:        assign, /* MODEQ */
        !           164:        assign, /* POWEQ */
        !           165:        printstat,      /* PRINT */
        !           166:        awkprintf,      /* PRINTF */
        !           167:        awksprintf,     /* SPRINTF */
        !           168:        nullproc,       /* ELSE */
        !           169:        intest, /* INTEST */
        !           170:        condexpr,       /* CONDEXPR */
        !           171:        incrdecr,       /* POSTINCR */
        !           172:        incrdecr,       /* PREINCR */
        !           173:        incrdecr,       /* POSTDECR */
        !           174:        incrdecr,       /* PREDECR */
        !           175:        nullproc,       /* VAR */
        !           176:        nullproc,       /* IVAR */
        !           177:        getnf,  /* VARNF */
        !           178:        call,   /* CALL */
        !           179:        nullproc,       /* NUMBER */
        !           180:        nullproc,       /* STRING */
        !           181:        nullproc,       /* FIELD */
        !           182:        nullproc,       /* REGEXPR */
        !           183:        getline,        /* GETLINE */
        !           184:        jump,   /* RETURN */
        !           185:        split,  /* SPLIT */
        !           186:        substr, /* SUBSTR */
        !           187:        whilestat,      /* WHILE */
        !           188:        cat,    /* CAT */
        !           189:        boolop, /* NOT */
        !           190:        arith,  /* UMINUS */
        !           191:        arith,  /* POWER */
        !           192:        nullproc,       /* DECR */
        !           193:        nullproc,       /* INCR */
        !           194:        indirect,       /* INDIRECT */
        !           195:        nullproc,       /* LASTTOKEN */
        !           196: };
        !           197:
        !           198: char *tokname(int n)
        !           199: {
        !           200:        static char buf[100];
        !           201:
        !           202:        if (n < FIRSTTOKEN || n > LASTTOKEN) {
        !           203:                sprintf(buf, "token %d", n);
        !           204:                return buf;
        !           205:        }
        !           206:        return printname[n-FIRSTTOKEN];
        !           207: }