%{
#include <stdio.h>
#include <stdlib.h>
enum TokenType {
OPERATOR,
PARENTHESIS,
EQUAL,
UNKNOWN
};
const char *TokenTypeStrings[] = {
"INTEGER",
"OPERATOR",
"PARENTHESIS",
"EQUAL",
"UNKNOWN"
};
struct Token {
enum TokenType type;
char *value;
};
%}
digit [0-9]
%%
}
[\+\-\*\/] {
printf("OPERATOR: %s\n", yytext);
}
[\(\)] {
printf("PARENTHESIS: %s\n", yytext);
}
\= {
printf("EQUAL: %s\n", yytext);
}
. {
printf("UNKNOWN: %s\n", yytext);
exit(1);
}
%%
int main(int argc, char *argv[]) {
yylex();
return 0;
}
JXsKI2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KCmVudW0gVG9rZW5UeXBlIHsKICBJTlRFR0VSLAogIE9QRVJBVE9SLAogIFBBUkVOVEhFU0lTLAogIEVRVUFMLAogIFVOS05PV04KfTsKCmNvbnN0IGNoYXIgKlRva2VuVHlwZVN0cmluZ3NbXSA9IHsKICAiSU5URUdFUiIsCiAgIk9QRVJBVE9SIiwKICAiUEFSRU5USEVTSVMiLAogICJFUVVBTCIsCiAgIlVOS05PV04iCn07CgpzdHJ1Y3QgVG9rZW4gewogIGVudW0gVG9rZW5UeXBlIHR5cGU7CiAgY2hhciAqdmFsdWU7Cn07CiV9CgpkaWdpdCBbMC05XQppbnRlZ2VyIHtkaWdpdH0rCgolJQoKe2ludGVnZXJ9IHsKICBwcmludGYoIklOVEVHRVI6ICVzXG4iLCB5eXRleHQpOwp9CgpbXCtcLVwqXC9dIHsKICBwcmludGYoIk9QRVJBVE9SOiAlc1xuIiwgeXl0ZXh0KTsKfQoKW1woXCldIHsKICBwcmludGYoIlBBUkVOVEhFU0lTOiAlc1xuIiwgeXl0ZXh0KTsKfQoKXD0gewogIHByaW50ZigiRVFVQUw6ICVzXG4iLCB5eXRleHQpOwp9CgouIHsKICBwcmludGYoIlVOS05PV046ICVzXG4iLCB5eXRleHQpOwogIGV4aXQoMSk7Cn0KCiUlCgppbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKSB7CiAgeXlsZXgoKTsKICByZXR1cm4gMDsKfQo=