rules
^\%"class "{name} {
printf("\n\n\n%%{\n#define CLASS %s\n%%}\n",yytext+7);
printf("\n\n\n%%{\n#define NAME %s\n%%}\n",yytext+7);
//printf("\n\n\n%%{\n#define lex_scanner %s_scanner\n%%}\n",yytext+7);
}
^"%lex "{name} {
printf("\n\n\n%%{\n#define CLASS %s\n%%}\n",yytext+7);
printf("\n\n\n%%{\n#define NAME %s\n%%}\n",yytext+5);
//printf("\n\n\n%%{\n#define lex_scanner %s_lex__scanner\n%%}\n",yytext+5);
}
^"%yacc "{name} {
printf("\n\n\n%%{\n#define NAME %s\n%%}\n",yytext+6);
}
^"%nodef".* { _op = 1; _prec = 1; _expr = 1; }
^"%defau".* { _defaults; _op = 1; printop(); }
^"%op".* { _op = 1; printop(); }
^"%noop".* { _op = 1; }
^"%prec".* { _prec = 1; printprec(); }
^"%noprec".* { _prec = 1; }
^"%expr".* { _expr = 1; printexpr(); }
^"%noexpr".* { _expr = 1; }
^\%\%.* {
if (!gg) {
if (_op && !_prec) printprec();
printf("\n %");
if (_op && !_expr) printexpr();
gg++;
}
else if (gg==1) {
if (yyleng==2) // || (yyleng > 2 && yytext[3]=='<'))
printf("\n %");
}
}
slide: rules