/* symexpr.l */
%{
#include<string.h>
extern char* temp;
extern int lexerror;
int yyerror(char* errmsg);
extern char* errmsg;
%}
%%
[xyz,()] { strcat(temp,yytext); return *yytext; }
\n { return *yytext; }
[ \t] { strcat(temp,yytext); } /* ignore whitespace */
. { strcat(temp,yytext);
sprintf(errmsg, "Invalid lexeme: '%c'.", *yytext);
yyerror(errmsg);
lexerror = 1; return *yytext; }
%%
int yywrap (void) {
return 1;
}
Lyogc3ltZXhwci5sICovCiV7CiNpbmNsdWRlPHN0cmluZy5oPgpleHRlcm4gY2hhciogdGVtcDsKZXh0ZXJuIGludCBsZXhlcnJvcjsKaW50IHl5ZXJyb3IoY2hhciogZXJybXNnKTsKZXh0ZXJuIGNoYXIqIGVycm1zZzsKJX0KJSUKW3h5eiwoKV0gICB7IHN0cmNhdCh0ZW1wLHl5dGV4dCk7IHJldHVybiAqeXl0ZXh0OyB9ClxuICAgICAgICAgeyByZXR1cm4gKnl5dGV4dDsgfQpbIFx0XSAgICAgIHsgc3RyY2F0KHRlbXAseXl0ZXh0KTsgfSAvKiBpZ25vcmUgd2hpdGVzcGFjZSAqLwouICAgICAgICAgIHsgc3RyY2F0KHRlbXAseXl0ZXh0KTsKICAgICAgICAgICAgIHNwcmludGYoZXJybXNnLCAiSW52YWxpZCBsZXhlbWU6ICclYycuIiwgKnl5dGV4dCk7CiAgICAgICAgICAgICB5eWVycm9yKGVycm1zZyk7CiAgICAgICAgICAgICBsZXhlcnJvciA9IDE7IHJldHVybiAqeXl0ZXh0OyB9CiUlCmludCB5eXdyYXAgKHZvaWQpIHsKICAgcmV0dXJuIDE7Cn0K