Research V5 development
authorDennis Ritchie <dmr@research.uucp>
Tue, 26 Nov 1974 23:13:21 +0000 (18:13 -0500)
committerDennis Ritchie <dmr@research.uucp>
Tue, 26 Nov 1974 23:13:21 +0000 (18:13 -0500)
Work on file usr/c/c0h.c

Synthesized-from: v5

usr/c/c0h.c [new file with mode: 0644]

diff --git a/usr/c/c0h.c b/usr/c/c0h.c
new file mode 100644 (file)
index 0000000..9f68ed7
--- /dev/null
@@ -0,0 +1,273 @@
+#
+/*
+
+       C compiler-- pass 1 header
+
+       Copyright 1973 Bell Telephone Laboratories, Inc.
+
+*/
+
+/*
+  parameters
+*/
+
+#define        ncps    8
+#define        hshsiz  200
+#define        cmsiz   40
+#define        swsiz   200
+#define        ncpw    2
+#define        ossiz   500
+#define        dimsiz  100
+
+#define        regtab  0
+#define        efftab  1
+#define        cctab   2
+#define        sptab   3
+
+struct tnode {
+       int     op;
+       int     type;
+       int     dimp;
+       struct tnode *tr1, *tr2;
+};
+
+struct {
+       int     op;
+       int     type;
+       char    ssp;            /* subscript list */
+       char    lenp;           /* structure length */
+};
+
+struct tname {
+       int     op;
+       int     type;
+       int     dimp;
+       int     class;
+       int     offset;
+       int     nloc;
+};
+
+
+struct tconst {
+       int     op;
+       int     type;
+       int     dimp;
+       int     value;
+};
+
+struct hshtab {
+       char    hclass;
+       char    hflag;
+       int     htype;
+       int     hdimp;
+       int     hoffset;
+       char    name[ncps];
+};
+
+struct swtab {
+       int     swlab;
+       int     swval;
+};
+
+char   cvtab[];
+int    opdope[];
+char   ctab[];
+char   symbuf[ncps];
+int    hshused;
+struct hshtab  hshtab[hshsiz];
+int    *space;
+int    *cp;
+int    cmst[cmsiz];
+int    isn;
+struct swtab   swtab[swsiz];
+struct swtab   *swp;
+int    contlab;
+int    brklab;
+int    retlab;
+int    deflab;
+int    nauto;
+int    autolen;
+int    peeksym;
+int    peekc;
+int    eof;
+int    line;
+int    *treebase;
+int    debug;
+struct hshtab  *defsym;
+struct hshtab  *funcsym;
+int    xdflg;
+int    proflg;
+struct hshtab  *csym;
+int    cval;
+double fcval;
+int    nchstr;
+int    nerror;
+struct hshtab  *paraml;
+struct hshtab  *parame;
+int    strflg;
+int    osleft;
+int    mosflg;
+int    initflg;
+int    inhdr;
+int    dimtab[dimsiz];
+char   binbuf[518];
+int    dimp;
+int    regvar;
+
+/*
+  operators
+*/
+#define        EOF     0
+#define        SEMI    1
+#define        LBRACE  2
+#define        RBRACE  3
+#define        LBRACK  4
+#define        RBRACK  5
+#define        LPARN   6
+#define        RPARN   7
+#define        COLON   8
+#define        COMMA   9
+
+#define        KEYW    19
+#define        NAME    20
+#define        CON     21
+#define        STRING  22
+#define        FCON    23
+#define        SFCON   24
+
+#define        SIZEOF  29
+#define        INCBEF  30
+#define        DECBEF  31
+#define        INCAFT  32
+#define        DECAFT  33
+#define        EXCLA   34
+#define        AMPER   35
+#define        STAR    36
+#define        NEG     37
+#define        COMPL   38
+
+#define        DOT     39
+#define        PLUS    40
+#define        MINUS   41
+#define        TIMES   42
+#define        DIVIDE  43
+#define        MOD     44
+#define        RSHIFT  45
+#define        LSHIFT  46
+#define        AND     47
+#define        OR      48
+#define        EXOR    49
+#define        ARROW   50
+#define        ITOF    51
+#define        FTOI    52
+#define        LOGAND  53
+#define        LOGOR   54
+
+#define        EQUAL   60
+#define        NEQUAL  61
+#define        LESSEQ  62
+#define        LESS    63
+#define        GREATEQ 64
+#define        GREAT   65
+#define        LESSP   66
+#define        LESSEQP 67
+#define        GREATP  68
+#define        GREATQP 69
+
+#define        ASPLUS  70
+#define        ASMINUS 71
+#define        ASTIMES 72
+#define        ASDIV   73
+#define        ASMOD   74
+#define        ASRSH   75
+#define        ASLSH   76
+#define        ASSAND  77
+#define        ASOR    78
+#define        ASXOR   79
+#define        ASSIGN  80
+
+#define        QUEST   90
+#define        CALL    100
+#define        MCALL   101
+#define        JUMP    102
+#define        CBRANCH 103
+#define        INIT    104
+#define        SETREG  105
+#define        RFORCE  110
+#define        BRANCH  111
+#define        LABEL   112
+
+/*
+  types
+*/
+#define        INT     0
+#define        CHAR    1
+#define        FLOAT   2
+#define        DOUBLE  3
+#define        STRUCT  4
+#define        RSTRUCT 5
+#define        PTR     010
+#define        FUNC    020
+#define        ARRAY   030
+
+/*
+  storage classes
+*/
+#define        KEYWC   1
+#define        MOS     4
+#define        AUTO    5
+#define        EXTERN  6
+#define        STATIC  7
+#define        REG     8
+#define        STRTAG  9
+#define ARG    10
+#define        ARG1    11
+
+/*
+  keywords
+*/
+#define        GOTO    10
+#define        RETURN  11
+#define        IF      12
+#define        WHILE   13
+#define        ELSE    14
+#define        SWITCH  15
+#define        CASE    16
+#define        BREAK   17
+#define        CONTIN  18
+#define        DO      19
+#define        DEFAULT 20
+#define        FOR     21
+
+/*
+  characters
+*/
+#define        INSERT  119
+#define        PERIOD  120
+#define        SQUOTE  121
+#define        DQUOTE  122
+#define        LETTER  123
+#define        DIGIT   124
+#define        NEWLN   125
+#define        SPACE   126
+#define        UNKN    127
+
+/*
+  Flag bits
+*/
+
+#define        BINARY  01
+#define        LVALUE  02
+#define        RELAT   04
+#define        ASSGOP  010
+#define        LWORD   020
+#define        RWORD   040
+#define        COMMUTE 0100
+#define        RASSOC  0200
+#define        LEAF    0400
+
+/*
+ * symbol table flags
+ */
+
+#define        FNDEL   1