Annotation of 43BSDReno/usr.bin/awk/proc.c, revision 1.1.1.1

1.1       root        1: #ifndef lint
                      2: static char sccsid[] = "@(#)proc.c     4.3 8/11/83";
                      3: #endif
                      4: 
                      5: #include "awk.h"
                      6: #define NULL 0
                      7: struct xx
                      8: {      int token;
                      9:        char *name;
                     10:        char *pname;
                     11: } proc[] = {
                     12:        { PROGRAM, "program", NULL},
                     13:        { BOR, "boolop", " || "},
                     14:        { AND, "boolop", " && "},
                     15:        { NOT, "boolop", " !"},
                     16:        { NE, "relop", " != "},
                     17:        { EQ, "relop", " == "},
                     18:        { LE, "relop", " <= "},
                     19:        { LT, "relop", " < "},
                     20:        { GE, "relop", " >= "},
                     21:        { GT, "relop", " > "},
                     22:        { ARRAY, "array", NULL},
                     23:        { INDIRECT, "indirect", "$("},
                     24:        { SUBSTR, "substr", "substr"},
                     25:        { INDEX, "sindex", "sindex"},
                     26:        { SPRINTF, "asprintf", "sprintf "},
                     27:        { ADD, "arith", " + "},
                     28:        { MINUS, "arith", " - "},
                     29:        { MULT, "arith", " * "},
                     30:        { DIVIDE, "arith", " / "},
                     31:        { MOD, "arith", " % "},
                     32:        { UMINUS, "arith", " -"},
                     33:        { PREINCR, "incrdecr", "++"},
                     34:        { POSTINCR, "incrdecr", "++"},
                     35:        { PREDECR, "incrdecr", "--"},
                     36:        { POSTDECR, "incrdecr", "--"},
                     37:        { CAT, "cat", " "},
                     38:        { PASTAT, "pastat", NULL},
                     39:        { PASTAT2, "dopa2", NULL},
                     40:        { MATCH, "matchop", " ~ "},
                     41:        { NOTMATCH, "matchop", " !~ "},
                     42:        { PRINTF, "aprintf", "printf"},
                     43:        { PRINT, "print", "print"},
                     44:        { SPLIT, "split", "split"},
                     45:        { ASSIGN, "assign", " = "},
                     46:        { ADDEQ, "assign", " += "},
                     47:        { SUBEQ, "assign", " -= "},
                     48:        { MULTEQ, "assign", " *= "},
                     49:        { DIVEQ, "assign", " /= "},
                     50:        { MODEQ, "assign", " %= "},
                     51:        { IF, "ifstat", "if("},
                     52:        { WHILE, "whilestat", "while("},
                     53:        { FOR, "forstat", "for("},
                     54:        { IN, "instat", "instat"},
                     55:        { NEXT, "jump", "next"},
                     56:        { EXIT, "jump", "exit"},
                     57:        { BREAK, "jump", "break"},
                     58:        { CONTINUE, "jump", "continue"},
                     59:        { FNCN, "fncn", "fncn"},
                     60:        { GETLINE, "getline", "getline"},
                     61:        { 0, ""},
                     62: };
                     63: #define SIZE   LASTTOKEN - FIRSTTOKEN
                     64: char *table[SIZE];
                     65: char *names[SIZE];
                     66: main()
                     67: {      struct xx *p;
                     68:        int i;
                     69:        printf("#include \"awk.def\"\n");
                     70:        printf("obj nullproc();\n");
                     71:        for(p=proc;p->token!=0;p++)
                     72:                if(p==proc || strcmp(p->name, (p-1)->name))
                     73:                        printf("extern obj %s();\n",p->name);
                     74:        for(p=proc;p->token!=0;p++)
                     75:                table[p->token-FIRSTTOKEN]=p->name;
                     76:        printf("obj (*proctab[%d])() = {\n", SIZE);
                     77:        for(i=0;i<SIZE;i++)
                     78:                if(table[i]==0) printf("/*%s*/\tnullproc,\n",tokname(i+FIRSTTOKEN));
                     79:                else printf("/*%s*/\t%s,\n",tokname(i+FIRSTTOKEN),table[i]);
                     80:        printf("};\n");
                     81:        printf("char *printname[%d] = {\n", SIZE);
                     82:        for(p=proc; p->token!=0; p++)
                     83:                names[p->token-FIRSTTOKEN] = p->pname;
                     84:        for(i=0; i<SIZE; i++)
                     85:                printf("/*%s*/\t\"%s\",\n",tokname(i+FIRSTTOKEN),
                     86:                                                names[i]?names[i]:"");
                     87:        printf("};\n");
                     88:        exit(0);
                     89: }

unix.superglobalmegacorp.com

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