diff options
author | rsc <devnull@localhost> | 2005-08-12 20:14:32 +0000 |
---|---|---|
committer | rsc <devnull@localhost> | 2005-08-12 20:14:32 +0000 |
commit | ad9e684811638b69d3800b011ee5fafb448992a3 (patch) | |
tree | db499ba44bb9abacd2349c757183d5db5119c450 /src/cmd/cb/cb.h | |
parent | 8307dc614ae985f3dc7f4d2feb4235ee805c6e66 (diff) | |
download | plan9port-ad9e684811638b69d3800b011ee5fafb448992a3.tar.gz plan9port-ad9e684811638b69d3800b011ee5fafb448992a3.tar.bz2 plan9port-ad9e684811638b69d3800b011ee5fafb448992a3.zip |
Add.
Diffstat (limited to 'src/cmd/cb/cb.h')
-rw-r--r-- | src/cmd/cb/cb.h | 172 |
1 files changed, 172 insertions, 0 deletions
diff --git a/src/cmd/cb/cb.h b/src/cmd/cb/cb.h new file mode 100644 index 00000000..d7ceee08 --- /dev/null +++ b/src/cmd/cb/cb.h @@ -0,0 +1,172 @@ +#define IF 1 +#define ELSE 2 +#define CASE 3 +#define TYPE 4 +#define DO 5 +#define STRUCT 6 +#define OTHER 7 + +#define ALWAYS 01 +#define NEVER 02 +#define SOMETIMES 04 + +#define YES 1 +#define NO 0 + +#define KEYWORD 1 +#define DATADEF 2 +#define SINIT 3 + +#define CLEVEL 200 +#define IFLEVEL 100 +#define DOLEVEL 100 +#define OPLENGTH 100 +#define LINE 2048 +#define LINELENG 2048 +#define MAXTABS 8 +#define TABLENG 8 +#define TEMP 20480 + +#define OUT outs(clev->tabs); Bputc(output, '\n');opflag = lbegin = 1; count = 0 +#define OUTK OUT; keyflag = 0; +#define BUMP clev->tabs++; clev->pdepth++ +#define UNBUMP clev->tabs -= clev->pdepth; clev->pdepth = 0 +#define eatspace() while((cc=getch()) == ' ' || cc == '\t'); unget(cc) +#define eatallsp() while((cc=getch()) == ' ' || cc == '\t' || cc == '\n'); unget(cc) + +struct indent { /* one for each level of { } */ + int tabs; + int pdepth; + int iflev; + int ifc[IFLEVEL]; + int spdepth[IFLEVEL]; +} ind[CLEVEL]; +struct indent *clev = ind; +struct keyw { + char *name; + char punc; + char type; +} key[] = { + "switch", ' ', OTHER, + "do", ' ', DO, + "while", ' ', OTHER, + "if", ' ', IF, + "for", ' ', OTHER, + "else", ' ', ELSE, + "case", ' ', CASE, + "default", ' ', CASE, + "char", '\t', TYPE, + "int", '\t', TYPE, + "short", '\t', TYPE, + "long", '\t', TYPE, + "unsigned", '\t', TYPE, + "float", '\t', TYPE, + "double", '\t', TYPE, + "struct", ' ', STRUCT, + "union", ' ', STRUCT, + "enum", ' ', STRUCT, + "extern", ' ', TYPE, + "register", ' ', TYPE, + "static", ' ', TYPE, + "typedef", ' ', TYPE, + 0, 0, 0 +}; +struct op { + char *name; + char blanks; + char setop; +} op[] = { + "+=", ALWAYS, YES, + "-=", ALWAYS, YES, + "*=", ALWAYS, YES, + "/=", ALWAYS, YES, + "%=", ALWAYS, YES, + ">>=", ALWAYS, YES, + "<<=", ALWAYS, YES, + "&=", ALWAYS, YES, + "^=", ALWAYS, YES, + "|=", ALWAYS, YES, + ">>", ALWAYS, YES, + "<<", ALWAYS, YES, + "<=", ALWAYS, YES, + ">=", ALWAYS, YES, + "==", ALWAYS, YES, + "!=", ALWAYS, YES, + "=", ALWAYS, YES, + "&&", ALWAYS, YES, + "||", ALWAYS, YES, + "++", NEVER, NO, + "--", NEVER, NO, + "->", NEVER, NO, + "<", ALWAYS, YES, + ">", ALWAYS, YES, + "+", ALWAYS, YES, + "/", ALWAYS, YES, + "%", ALWAYS, YES, + "^", ALWAYS, YES, + "|", ALWAYS, YES, + "!", NEVER, YES, + "~", NEVER, YES, + "*", SOMETIMES, YES, + "&", SOMETIMES, YES, + "-", SOMETIMES, YES, + "?", ALWAYS,YES, + ":", ALWAYS,YES, + 0, 0,0 +}; +Biobuf *input; +Biobuf *output; +int strict = 0; +int join = 0; +int opflag = 1; +int keyflag = 0; +int paren = 0; +int split = 0; +int folded = 0; +int dolevel =0; +int dotabs[DOLEVEL]; +int docurly[DOLEVEL]; +int dopdepth[DOLEVEL]; +int structlev = 0; +int question = 0; +char string[LINE]; +char *lastlook; +char *p = string; +char temp[TEMP]; +char *tp; +int err = 0; +char *lastplace = temp; +char *tptr = temp; +int maxleng = LINELENG; +int maxtabs = MAXTABS; +int count = 0; +char next = '\0'; +int inswitch =0; +int lbegin = 1; +int lineno = 0; + +void work(void); +void gotif(void); +void gotelse(void); +int checkif(char *); +void gotdo(void); +void resetdo(void); +void gottype(struct keyw *lptr); +void gotstruct(void); +void gotop(int); +void keep(struct op *); +int getnl(void); +void ptabs(int); +void outs(int); +void putch(char, int); +struct keyw *lookup(char *, char *); +int comment(int); +void putspace(char, int); +int getch(void); +void unget(char); +char *getnext(int); +void copy(char *); +void clearif(struct indent *); +char puttmp(char, int); +void error(char *); +int cpp_comment(int); |