%pointer type "int"|"float"|"char"|"bool" lletter [a-z] uletter [A-Z] digit [0-9] boolval "true"|"false" letter {lletter}|{uletter} validchar {letter}|{digit}|"_"|"-" string "\""({validchar}|" ")*"\"" number ("-")?({digit})+("."({digit})+)? equalsymbol "="|"+="|"-="|"*="|"/=" multoperator "*"|"/"|"%" addoperator "+"|"-" relop "<"|">"|"<="|">="|"=="|"!=" logicop "!"|"&&"|"||" returnableitem {id}|{string}|{number}|"'"{validchar}"'" id {lletter}{uletter}({validchar})* idlistitem {id}(" = "{returnableitem})? idlist {idlistitem}(", "{idlistitem})* vardef {type}" "{idlist}";" constdef "const "{type}" "({uletter})+" = "{returnableitem}";" defblock ^(({vardef}|{constdef})$)+ funccall ({string}".")?{string}"("({returnableitem}(", "{returnableitem})*)?")" factor {id}|{number}|"("{expression}")"|{funccall} expression {factor}(" "({multoperator}|{addoperator})" "{factor})? expressionassignment {id}" "{equalsymbol}" "{expression} assignment {id}"++"|"++"{id}|{id}"--"|"--"{id}|{expressionassignment} condition {expression}" "{relop}" "{expression}(" "{logicop}" "{condition})? int num_lines = 0, num_chars = 0; %% {funccall} fputs("functcall found: ", yyout); fputs(yytext, yyout); fputs("\n", yyout);REJECT; {assignment} fputs("Assignmen found: ", yyout); fputs(yytext, yyout); fputs("\n", yyout);REJECT; {condition} fputs("Condition found: ", yyout); fputs(yytext, yyout); fputs("\n", yyout);REJECT; {expressionassignment} fputs("ExprAssig found: ", yyout); fputs(yytext, yyout); fputs("\n", yyout);REJECT; {expression} fputs("Expressio found: ", yyout); fputs(yytext, yyout); fputs("\n", yyout);REJECT; {factor} fputs("Factor found: ", yyout); fputs(yytext, yyout); fputs("\n", yyout);REJECT; {defblock} fputs("Def Block found: ", yyout); fputs(yytext, yyout); fputs("\n", yyout); {constdef} fputs("Const def found: ", yyout); fputs(yytext, yyout); fputs("\n", yyout); {vardef} fputs("Varbl def found: ", yyout); fputs(yytext, yyout); fputs("\n", yyout); {type} fputs("Ty found: ", yyout); fputs(yytext, yyout); fputs("\n", yyout); {idlist} fputs("ID List found: ", yyout); fputs(yytext, yyout); fputs("\n", yyout); {idlistitem} fputs("ID List Item found: ", yyout); fputs(yytext, yyout); fputs("\n", yyout); {returnableitem} fputs("RI found: ", yyout); fputs(yytext, yyout); fputs("\n", yyout); {id} fputs("ID found: ", yyout); fputs(yytext, yyout); fputs("\n", yyout); \n ++num_lines; ++num_chars; ++num_chars; %% #include int main(int argc, char **argv) { int counter; char str[80]; ++argv, --argc; /* skip over program name */ puts("The arguments to the program are:"); if(argc < 2) return 2; for (counter=0; counter