#include <stdio.h> char *PgmName=0; int ShowLit=0; int ShowProd=1; int ShowBNF=0; int ProdNbr=0; int LParent=1; int FirstProd=0; int ErrorCnt=0; int DocStyle=0; int Body=0; char pc='x'; char cc; int lp=0; void main(argc, argv) int argc; char **argv; { PgmName = *argv; --argc, ++argv; while (argc && ((**argv == '-') || (**argv == '+'))) { char *cp=&argv[0][1]; while (*cp) { switch (*cp) { case 'd': case 'D': Body = DocStyle = (**argv == '-') ? 0 : 1; break; default: fprintf(stderr, "Usage: %s [(-|+)dplb] [filename]\n", PgmName); exit(-1); } ++cp; } --argc, ++argv; } if (argc && (freopen(*argv, "r", stdin) == NULL)) { perror(PgmName); exit(-1); } yylex(); exit(ErrorCnt); } %% ^"%%" ECHO; printf("\n"); Body=1; .|"\n" check(yytext[0]); %% int check(char cc) { if (Body) { if( pc!='\'' ) { switch(cc) { case '{': lp++; break; case '}': lp--; break; default: if (lp==0) ECHO; break; } } else { if (lp==0) ECHO; }; pc = cc; } else { ECHO; } }