Blame


1 ad9e6848 2005-08-12 devnull #define IF 1
2 ad9e6848 2005-08-12 devnull #define ELSE 2
3 ad9e6848 2005-08-12 devnull #define CASE 3
4 ad9e6848 2005-08-12 devnull #define TYPE 4
5 ad9e6848 2005-08-12 devnull #define DO 5
6 ad9e6848 2005-08-12 devnull #define STRUCT 6
7 ad9e6848 2005-08-12 devnull #define OTHER 7
8 ad9e6848 2005-08-12 devnull
9 ad9e6848 2005-08-12 devnull #define ALWAYS 01
10 ad9e6848 2005-08-12 devnull #define NEVER 02
11 ad9e6848 2005-08-12 devnull #define SOMETIMES 04
12 ad9e6848 2005-08-12 devnull
13 ad9e6848 2005-08-12 devnull #define YES 1
14 ad9e6848 2005-08-12 devnull #define NO 0
15 ad9e6848 2005-08-12 devnull
16 ad9e6848 2005-08-12 devnull #define KEYWORD 1
17 ad9e6848 2005-08-12 devnull #define DATADEF 2
18 ad9e6848 2005-08-12 devnull #define SINIT 3
19 ad9e6848 2005-08-12 devnull
20 ad9e6848 2005-08-12 devnull #define CLEVEL 200
21 ad9e6848 2005-08-12 devnull #define IFLEVEL 100
22 ad9e6848 2005-08-12 devnull #define DOLEVEL 100
23 ad9e6848 2005-08-12 devnull #define OPLENGTH 100
24 ad9e6848 2005-08-12 devnull #define LINE 2048
25 ad9e6848 2005-08-12 devnull #define LINELENG 2048
26 ad9e6848 2005-08-12 devnull #define MAXTABS 8
27 ad9e6848 2005-08-12 devnull #define TABLENG 8
28 ad9e6848 2005-08-12 devnull #define TEMP 20480
29 ad9e6848 2005-08-12 devnull
30 ad9e6848 2005-08-12 devnull #define OUT outs(clev->tabs); Bputc(output, '\n');opflag = lbegin = 1; count = 0
31 ad9e6848 2005-08-12 devnull #define OUTK OUT; keyflag = 0;
32 ad9e6848 2005-08-12 devnull #define BUMP clev->tabs++; clev->pdepth++
33 ad9e6848 2005-08-12 devnull #define UNBUMP clev->tabs -= clev->pdepth; clev->pdepth = 0
34 ad9e6848 2005-08-12 devnull #define eatspace() while((cc=getch()) == ' ' || cc == '\t'); unget(cc)
35 ad9e6848 2005-08-12 devnull #define eatallsp() while((cc=getch()) == ' ' || cc == '\t' || cc == '\n'); unget(cc)
36 ad9e6848 2005-08-12 devnull
37 ad9e6848 2005-08-12 devnull struct indent { /* one for each level of { } */
38 ad9e6848 2005-08-12 devnull int tabs;
39 ad9e6848 2005-08-12 devnull int pdepth;
40 ad9e6848 2005-08-12 devnull int iflev;
41 ad9e6848 2005-08-12 devnull int ifc[IFLEVEL];
42 ad9e6848 2005-08-12 devnull int spdepth[IFLEVEL];
43 ad9e6848 2005-08-12 devnull } ind[CLEVEL];
44 ad9e6848 2005-08-12 devnull struct indent *clev = ind;
45 ad9e6848 2005-08-12 devnull struct keyw {
46 ad9e6848 2005-08-12 devnull char *name;
47 ad9e6848 2005-08-12 devnull char punc;
48 ad9e6848 2005-08-12 devnull char type;
49 ad9e6848 2005-08-12 devnull } key[] = {
50 ad9e6848 2005-08-12 devnull "switch", ' ', OTHER,
51 ad9e6848 2005-08-12 devnull "do", ' ', DO,
52 ad9e6848 2005-08-12 devnull "while", ' ', OTHER,
53 ad9e6848 2005-08-12 devnull "if", ' ', IF,
54 ad9e6848 2005-08-12 devnull "for", ' ', OTHER,
55 ad9e6848 2005-08-12 devnull "else", ' ', ELSE,
56 ad9e6848 2005-08-12 devnull "case", ' ', CASE,
57 ad9e6848 2005-08-12 devnull "default", ' ', CASE,
58 ad9e6848 2005-08-12 devnull "char", '\t', TYPE,
59 ad9e6848 2005-08-12 devnull "int", '\t', TYPE,
60 ad9e6848 2005-08-12 devnull "short", '\t', TYPE,
61 ad9e6848 2005-08-12 devnull "long", '\t', TYPE,
62 ad9e6848 2005-08-12 devnull "unsigned", '\t', TYPE,
63 ad9e6848 2005-08-12 devnull "float", '\t', TYPE,
64 ad9e6848 2005-08-12 devnull "double", '\t', TYPE,
65 ad9e6848 2005-08-12 devnull "struct", ' ', STRUCT,
66 ad9e6848 2005-08-12 devnull "union", ' ', STRUCT,
67 ad9e6848 2005-08-12 devnull "enum", ' ', STRUCT,
68 ad9e6848 2005-08-12 devnull "extern", ' ', TYPE,
69 ad9e6848 2005-08-12 devnull "register", ' ', TYPE,
70 ad9e6848 2005-08-12 devnull "static", ' ', TYPE,
71 ad9e6848 2005-08-12 devnull "typedef", ' ', TYPE,
72 ad9e6848 2005-08-12 devnull 0, 0, 0
73 ad9e6848 2005-08-12 devnull };
74 ad9e6848 2005-08-12 devnull struct op {
75 ad9e6848 2005-08-12 devnull char *name;
76 ad9e6848 2005-08-12 devnull char blanks;
77 ad9e6848 2005-08-12 devnull char setop;
78 ad9e6848 2005-08-12 devnull } op[] = {
79 ad9e6848 2005-08-12 devnull "+=", ALWAYS, YES,
80 ad9e6848 2005-08-12 devnull "-=", ALWAYS, YES,
81 ad9e6848 2005-08-12 devnull "*=", ALWAYS, YES,
82 ad9e6848 2005-08-12 devnull "/=", ALWAYS, YES,
83 ad9e6848 2005-08-12 devnull "%=", ALWAYS, YES,
84 ad9e6848 2005-08-12 devnull ">>=", ALWAYS, YES,
85 ad9e6848 2005-08-12 devnull "<<=", ALWAYS, YES,
86 ad9e6848 2005-08-12 devnull "&=", ALWAYS, YES,
87 ad9e6848 2005-08-12 devnull "^=", ALWAYS, YES,
88 ad9e6848 2005-08-12 devnull "|=", ALWAYS, YES,
89 ad9e6848 2005-08-12 devnull ">>", ALWAYS, YES,
90 ad9e6848 2005-08-12 devnull "<<", ALWAYS, YES,
91 ad9e6848 2005-08-12 devnull "<=", ALWAYS, YES,
92 ad9e6848 2005-08-12 devnull ">=", ALWAYS, YES,
93 ad9e6848 2005-08-12 devnull "==", ALWAYS, YES,
94 ad9e6848 2005-08-12 devnull "!=", ALWAYS, YES,
95 ad9e6848 2005-08-12 devnull "=", ALWAYS, YES,
96 ad9e6848 2005-08-12 devnull "&&", ALWAYS, YES,
97 ad9e6848 2005-08-12 devnull "||", ALWAYS, YES,
98 ad9e6848 2005-08-12 devnull "++", NEVER, NO,
99 ad9e6848 2005-08-12 devnull "--", NEVER, NO,
100 ad9e6848 2005-08-12 devnull "->", NEVER, NO,
101 ad9e6848 2005-08-12 devnull "<", ALWAYS, YES,
102 ad9e6848 2005-08-12 devnull ">", ALWAYS, YES,
103 ad9e6848 2005-08-12 devnull "+", ALWAYS, YES,
104 ad9e6848 2005-08-12 devnull "/", ALWAYS, YES,
105 ad9e6848 2005-08-12 devnull "%", ALWAYS, YES,
106 ad9e6848 2005-08-12 devnull "^", ALWAYS, YES,
107 ad9e6848 2005-08-12 devnull "|", ALWAYS, YES,
108 ad9e6848 2005-08-12 devnull "!", NEVER, YES,
109 ad9e6848 2005-08-12 devnull "~", NEVER, YES,
110 ad9e6848 2005-08-12 devnull "*", SOMETIMES, YES,
111 ad9e6848 2005-08-12 devnull "&", SOMETIMES, YES,
112 ad9e6848 2005-08-12 devnull "-", SOMETIMES, YES,
113 ad9e6848 2005-08-12 devnull "?", ALWAYS,YES,
114 ad9e6848 2005-08-12 devnull ":", ALWAYS,YES,
115 ad9e6848 2005-08-12 devnull 0, 0,0
116 ad9e6848 2005-08-12 devnull };
117 ad9e6848 2005-08-12 devnull Biobuf *input;
118 ad9e6848 2005-08-12 devnull Biobuf *output;
119 ad9e6848 2005-08-12 devnull int strict = 0;
120 ad9e6848 2005-08-12 devnull int join = 0;
121 ad9e6848 2005-08-12 devnull int opflag = 1;
122 ad9e6848 2005-08-12 devnull int keyflag = 0;
123 ad9e6848 2005-08-12 devnull int paren = 0;
124 ad9e6848 2005-08-12 devnull int split = 0;
125 ad9e6848 2005-08-12 devnull int folded = 0;
126 ad9e6848 2005-08-12 devnull int dolevel =0;
127 ad9e6848 2005-08-12 devnull int dotabs[DOLEVEL];
128 ad9e6848 2005-08-12 devnull int docurly[DOLEVEL];
129 ad9e6848 2005-08-12 devnull int dopdepth[DOLEVEL];
130 ad9e6848 2005-08-12 devnull int structlev = 0;
131 ad9e6848 2005-08-12 devnull int question = 0;
132 ad9e6848 2005-08-12 devnull char string[LINE];
133 ad9e6848 2005-08-12 devnull char *lastlook;
134 ad9e6848 2005-08-12 devnull char *p = string;
135 ad9e6848 2005-08-12 devnull char temp[TEMP];
136 ad9e6848 2005-08-12 devnull char *tp;
137 ad9e6848 2005-08-12 devnull int err = 0;
138 ad9e6848 2005-08-12 devnull char *lastplace = temp;
139 ad9e6848 2005-08-12 devnull char *tptr = temp;
140 ad9e6848 2005-08-12 devnull int maxleng = LINELENG;
141 ad9e6848 2005-08-12 devnull int maxtabs = MAXTABS;
142 ad9e6848 2005-08-12 devnull int count = 0;
143 ad9e6848 2005-08-12 devnull char next = '\0';
144 ad9e6848 2005-08-12 devnull int inswitch =0;
145 ad9e6848 2005-08-12 devnull int lbegin = 1;
146 ad9e6848 2005-08-12 devnull int lineno = 0;
147 ad9e6848 2005-08-12 devnull
148 ad9e6848 2005-08-12 devnull void work(void);
149 ad9e6848 2005-08-12 devnull void gotif(void);
150 ad9e6848 2005-08-12 devnull void gotelse(void);
151 ad9e6848 2005-08-12 devnull int checkif(char *);
152 ad9e6848 2005-08-12 devnull void gotdo(void);
153 ad9e6848 2005-08-12 devnull void resetdo(void);
154 ad9e6848 2005-08-12 devnull void gottype(struct keyw *lptr);
155 ad9e6848 2005-08-12 devnull void gotstruct(void);
156 ad9e6848 2005-08-12 devnull void gotop(int);
157 ad9e6848 2005-08-12 devnull void keep(struct op *);
158 ad9e6848 2005-08-12 devnull int getnl(void);
159 ad9e6848 2005-08-12 devnull void ptabs(int);
160 ad9e6848 2005-08-12 devnull void outs(int);
161 ad9e6848 2005-08-12 devnull void putch(char, int);
162 ad9e6848 2005-08-12 devnull struct keyw *lookup(char *, char *);
163 ad9e6848 2005-08-12 devnull int comment(int);
164 ad9e6848 2005-08-12 devnull void putspace(char, int);
165 ad9e6848 2005-08-12 devnull int getch(void);
166 ad9e6848 2005-08-12 devnull void unget(char);
167 ad9e6848 2005-08-12 devnull char *getnext(int);
168 ad9e6848 2005-08-12 devnull void copy(char *);
169 ad9e6848 2005-08-12 devnull void clearif(struct indent *);
170 ad9e6848 2005-08-12 devnull char puttmp(char, int);
171 ad9e6848 2005-08-12 devnull void error(char *);
172 ad9e6848 2005-08-12 devnull int cpp_comment(int);