|
|
1.1 ! root 1: #include <stdio.h> ! 2: int slevel[10]; ! 3: int clevel = 0; ! 4: int spflg[20][10]; ! 5: int sind[20][10]; ! 6: int siflev[10]; ! 7: int sifflg[10]; ! 8: int iflev = 0; ! 9: int ifflg = -1; ! 10: int level = 0; ! 11: int ind[10] = { ! 12: 0,0,0,0,0,0,0,0,0,0 }; ! 13: int eflg = 0; ! 14: int paren = 0; ! 15: int pflg[10] = { ! 16: 0,0,0,0,0,0,0,0,0,0 }; ! 17: char lchar; ! 18: char pchar; ! 19: int aflg = 0; ! 20: int ct; ! 21: int stabs[20][10]; ! 22: int qflg = 0; ! 23: char *wif[] = { ! 24: "if",0}; ! 25: char *welse[] = { ! 26: "else",0}; ! 27: char *wfor[] = { ! 28: "for",0}; ! 29: char *wds[] = { ! 30: "case","default",0}; ! 31: int j = 0; ! 32: char string[200]; ! 33: char cc; ! 34: int sflg = 1; ! 35: int peek = -1; ! 36: int tabs = 0; ! 37: int lastchar; ! 38: int c; ! 39: main(argc,argv) int argc; ! 40: char argv[]; ! 41: { ! 42: while((c = getch()) != EOF){ ! 43: switch(c){ ! 44: case ' ': ! 45: case '\t': ! 46: if(lookup(welse) == 1){ ! 47: gotelse(); ! 48: if(sflg == 0 || j > 0)string[j++] = c; ! 49: puts(); ! 50: sflg = 0; ! 51: continue; ! 52: } ! 53: if(sflg == 0 || j > 0)string[j++] = c; ! 54: continue; ! 55: case '\n': ! 56: if((eflg = lookup(welse)) == 1)gotelse(); ! 57: puts(); ! 58: printf("\n"); ! 59: sflg = 1; ! 60: if(eflg == 1){ ! 61: pflg[level]++; ! 62: tabs++; ! 63: } ! 64: else ! 65: if(pchar == lchar) ! 66: aflg = 1; ! 67: continue; ! 68: case '{': ! 69: if(lookup(welse) == 1)gotelse(); ! 70: siflev[clevel] = iflev; ! 71: sifflg[clevel] = ifflg; ! 72: iflev = ifflg = 0; ! 73: clevel++; ! 74: if(sflg == 1 && pflg[level] != 0){ ! 75: pflg[level]--; ! 76: tabs--; ! 77: } ! 78: string[j++] = c; ! 79: puts(); ! 80: getnl(); ! 81: puts(); ! 82: printf("\n"); ! 83: tabs++; ! 84: sflg = 1; ! 85: if(pflg[level] > 0){ ! 86: ind[level] = 1; ! 87: level++; ! 88: slevel[level] = clevel; ! 89: } ! 90: continue; ! 91: case '}': ! 92: clevel--; ! 93: if((iflev = siflev[clevel]-1) < 0)iflev = 0; ! 94: ifflg = sifflg[clevel]; ! 95: if(pflg[level] >0 && ind[level] == 0){ ! 96: tabs -= pflg[level]; ! 97: pflg[level] = 0; ! 98: } ! 99: puts(); ! 100: tabs--; ! 101: ptabs(); ! 102: if((peek = getch()) == ';'){ ! 103: printf("%c;",c); ! 104: peek = -1; ! 105: } ! 106: else printf("%c",c); ! 107: getnl(); ! 108: puts(); ! 109: printf("\n"); ! 110: sflg = 1; ! 111: if(clevel < slevel[level])if(level > 0)level--; ! 112: if(ind[level] != 0){ ! 113: tabs -= pflg[level]; ! 114: pflg[level] = 0; ! 115: ind[level] = 0; ! 116: } ! 117: continue; ! 118: case '"': ! 119: case '\'': ! 120: string[j++] = c; ! 121: while((cc = getch()) != c){ ! 122: string[j++] = cc; ! 123: if(cc == '\\'){ ! 124: string[j++] = getch(); ! 125: } ! 126: if(cc == '\n'){ ! 127: puts(); ! 128: sflg = 1; ! 129: } ! 130: } ! 131: string[j++] = cc; ! 132: if(getnl() == 1){ ! 133: lchar = cc; ! 134: peek = '\n'; ! 135: } ! 136: continue; ! 137: case ';': ! 138: string[j++] = c; ! 139: puts(); ! 140: if(pflg[level] > 0 && ind[level] == 0){ ! 141: tabs -= pflg[level]; ! 142: pflg[level] = 0; ! 143: } ! 144: getnl(); ! 145: puts(); ! 146: printf("\n"); ! 147: sflg = 1; ! 148: if(iflev > 0) ! 149: if(ifflg == 1){iflev--; ! 150: ifflg = 0; ! 151: } ! 152: else iflev = 0; ! 153: continue; ! 154: case '\\': ! 155: string[j++] = c; ! 156: string[j++] = getch(); ! 157: continue; ! 158: case '?': ! 159: qflg = 1; ! 160: string[j++] = c; ! 161: continue; ! 162: case ':': ! 163: string[j++] = c; ! 164: if(qflg == 1){ ! 165: qflg = 0; ! 166: continue; ! 167: } ! 168: if(lookup(wds) == 0){ ! 169: sflg = 0; ! 170: puts(); ! 171: } ! 172: else{ ! 173: tabs--; ! 174: puts(); ! 175: tabs++; ! 176: } ! 177: if((peek = getch()) == ';'){ ! 178: printf(";"); ! 179: peek = -1; ! 180: } ! 181: getnl(); ! 182: puts(); ! 183: printf("\n"); ! 184: sflg = 1; ! 185: continue; ! 186: case '/': ! 187: string[j++] = c; ! 188: if((peek = getch()) != '*')continue; ! 189: string[j++] = peek; ! 190: peek = -1; ! 191: comment(); ! 192: continue; ! 193: case ')': ! 194: paren--; ! 195: string[j++] = c; ! 196: puts(); ! 197: if(getnl() == 1){ ! 198: peek = '\n'; ! 199: if(paren != 0)aflg = 1; ! 200: else if(tabs > 0){ ! 201: pflg[level]++; ! 202: tabs++; ! 203: ind[level] = 0; ! 204: } ! 205: } ! 206: continue; ! 207: case '#': ! 208: string[j++] = c; ! 209: while((cc = getch()) != '\n')string[j++] = cc; ! 210: string[j++] = cc; ! 211: sflg = 0; ! 212: puts(); ! 213: sflg = 1; ! 214: continue; ! 215: case '(': ! 216: string[j++] = c; ! 217: paren++; ! 218: if(lookup(wfor) == 1){ ! 219: while((c = gets()) != ';'); ! 220: ct=0; ! 221: cont: ! 222: while((c = gets()) != ')'){ ! 223: if(c == '(') ct++; ! 224: } ! 225: if(ct != 0){ ! 226: ct--; ! 227: goto cont; ! 228: } ! 229: paren--; ! 230: puts(); ! 231: if(getnl() == 1){ ! 232: peek = '\n'; ! 233: pflg[level]++; ! 234: tabs++; ! 235: ind[level] = 0; ! 236: } ! 237: continue; ! 238: } ! 239: if(lookup(wif) == 1){ ! 240: puts(); ! 241: stabs[clevel][iflev] = tabs; ! 242: spflg[clevel][iflev] = pflg[level]; ! 243: sind[clevel][iflev] = ind[level]; ! 244: iflev++; ! 245: ifflg = 1; ! 246: } ! 247: continue; ! 248: default: ! 249: string[j++] = c; ! 250: if(c != ',')lchar = c; ! 251: } ! 252: } ! 253: } ! 254: ptabs(){ ! 255: int i; ! 256: for(i=0; i < tabs; i++)printf("\t"); ! 257: } ! 258: getch(){ ! 259: if(peek < 0 && lastchar != ' ' && lastchar != '\t')pchar = lastchar; ! 260: lastchar = (peek<0) ? getc(stdin):peek; ! 261: peek = -1; ! 262: return(lastchar); ! 263: } ! 264: puts(){ ! 265: if(j > 0){ ! 266: if(sflg != 0){ ! 267: ptabs(); ! 268: sflg = 0; ! 269: if(aflg == 1){ ! 270: aflg = 0; ! 271: if(tabs > 0)printf(" "); ! 272: } ! 273: } ! 274: string[j] = '\0'; ! 275: printf("%s",string); ! 276: j = 0; ! 277: } ! 278: else{ ! 279: if(sflg != 0){ ! 280: sflg = 0; ! 281: aflg = 0; ! 282: } ! 283: } ! 284: } ! 285: lookup(tab) ! 286: char *tab[]; ! 287: { ! 288: char r; ! 289: int l,kk,k,i; ! 290: if(j < 1)return(0); ! 291: kk=0; ! 292: while(string[kk] == ' ')kk++; ! 293: for(i=0; tab[i] != 0; i++){ ! 294: l=0; ! 295: for(k=kk;(r = tab[i][l++]) == string[k] && r != '\0';k++); ! 296: if(r == '\0' && (string[k] < 'a' || string[k] > 'z' || k >= j))return(1); ! 297: } ! 298: return(0); ! 299: } ! 300: gets(){ ! 301: char ch; ! 302: beg: ! 303: if((ch = string[j++] = getch()) == '\\'){ ! 304: string[j++] = getch(); ! 305: goto beg; ! 306: } ! 307: if(ch == '\'' || ch == '"'){ ! 308: while((cc = string[j++] = getch()) != ch)if(cc == '\\')string[j++] = getch(); ! 309: goto beg; ! 310: } ! 311: if(ch == '\n'){ ! 312: puts(); ! 313: aflg = 1; ! 314: goto beg; ! 315: } ! 316: else return(ch); ! 317: } ! 318: gotelse(){ ! 319: tabs = stabs[clevel][iflev]; ! 320: pflg[level] = spflg[clevel][iflev]; ! 321: ind[level] = sind[clevel][iflev]; ! 322: ifflg = 1; ! 323: } ! 324: getnl(){ ! 325: while((peek = getch()) == '\t' || peek == ' '){ ! 326: string[j++] = peek; ! 327: peek = -1; ! 328: } ! 329: if((peek = getch()) == '/'){ ! 330: peek = -1; ! 331: if((peek = getch()) == '*'){ ! 332: string[j++] = '/'; ! 333: string[j++] = '*'; ! 334: peek = -1; ! 335: comment(); ! 336: } ! 337: else string[j++] = '/'; ! 338: } ! 339: if((peek = getch()) == '\n'){ ! 340: peek = -1; ! 341: return(1); ! 342: } ! 343: return(0); ! 344: } ! 345: comment(){ ! 346: rep: ! 347: while((c = string[j++] = getch()) != '*') ! 348: if(c == '\n'){ ! 349: puts(); ! 350: sflg = 1; ! 351: } ! 352: gotstar: ! 353: if((c = string[j++] = getch()) != '/'){ ! 354: if(c == '*')goto gotstar; ! 355: goto rep; ! 356: } ! 357: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.