%{
#include <stdio.h>
#define LT 256
#define LE 257
#define EQ 258
#define NE 259
#define GT 260
#define GE 261
#define RELOP 262
#define ID 263
#define NUM 264
#define IF 265
#define THEN 266
#define ELSE 267
int attribute;
%}
%delim [
\t\n]
%ws {delim}+
%letter [A-Za-z]
%digit [0-9]
%id {letter}({letter}|{digit})*
%num {digit}+(\.{digit}+)?(E[+\-]?{digit}+)?
%%
{ws} {}
if { return(IF); }
then { return(THEN); }
else { return(ELSE); }
{id} { return(ID); }
{num} { return(NUM); }
"<" { attribute=LT;return(RELOP); }
"<=" { attribute=LE;return(RELOP); }
"<>" { attribute=NE;return(RELOP); }
"=" { attribute=EQ;return(RELOP); }
">" { attribute=GT;return(RELOP); }
">=" { attribute=GE;return(RELOP); }
%%
int yywrap() {
return 1;
}
int main() {
int token;
while((token = yylex())) {
printf("<%d,", token);
switch(token) {
case ID:
case NUM:
printf("%s>\n", yytext);
break;
case RELOP:
printf("%d>\n", attribute);
break;
default:
printf(")\n");
break;
}
}
return 0;
}
JXsKI2luY2x1ZGUgPHN0ZGlvLmg+CiNkZWZpbmUgTFQgMjU2CiNkZWZpbmUgTEUgMjU3CiNkZWZpbmUgRVEgMjU4CiNkZWZpbmUgTkUgMjU5CiNkZWZpbmUgR1QgMjYwCiNkZWZpbmUgR0UgMjYxCiNkZWZpbmUgUkVMT1AgMjYyCiNkZWZpbmUgSUQgMjYzCiNkZWZpbmUgTlVNIDI2NAojZGVmaW5lIElGIDI2NQojZGVmaW5lIFRIRU4gMjY2CiNkZWZpbmUgRUxTRSAyNjcKaW50IGF0dHJpYnV0ZTsKJX0KCiVkZWxpbSBbClx0XG5dCiV3cyB7ZGVsaW19KwolbGV0dGVyIFtBLVphLXpdCiVkaWdpdCBbMC05XQolaWQge2xldHRlcn0oe2xldHRlcn18e2RpZ2l0fSkqCiVudW0ge2RpZ2l0fSsoXC57ZGlnaXR9Kyk/KEVbK1wtXT97ZGlnaXR9Kyk/CgolJQp7d3N9IHt9CmlmIHsgcmV0dXJuKElGKTsgfQp0aGVuIHsgcmV0dXJuKFRIRU4pOyB9CmVsc2UgeyByZXR1cm4oRUxTRSk7IH0Ke2lkfSB7IHJldHVybihJRCk7IH0Ke251bX0geyByZXR1cm4oTlVNKTsgfQoiPCIgeyBhdHRyaWJ1dGU9TFQ7cmV0dXJuKFJFTE9QKTsgfQoiPD0iIHsgYXR0cmlidXRlPUxFO3JldHVybihSRUxPUCk7IH0KIjw+IiB7IGF0dHJpYnV0ZT1ORTtyZXR1cm4oUkVMT1ApOyB9CiI9IiB7IGF0dHJpYnV0ZT1FUTtyZXR1cm4oUkVMT1ApOyB9CiI+IiB7IGF0dHJpYnV0ZT1HVDtyZXR1cm4oUkVMT1ApOyB9CiI+PSIgeyBhdHRyaWJ1dGU9R0U7cmV0dXJuKFJFTE9QKTsgfQolJQoKaW50IHl5d3JhcCgpIHsKICAgIHJldHVybiAxOwp9IAoKaW50IG1haW4oKSB7IAogICAgaW50IHRva2VuOyAKICAgIHdoaWxlKCh0b2tlbiA9IHl5bGV4KCkpKSB7IAogICAgICAgIHByaW50ZigiPCVkLCIsIHRva2VuKTsgCiAgICAgICAgc3dpdGNoKHRva2VuKSB7IAogICAgICAgICAgICBjYXNlIElEOgogICAgICAgICAgICBjYXNlIE5VTToKICAgICAgICAgICAgICAgIHByaW50ZigiJXM+XG4iLCB5eXRleHQpOyAKICAgICAgICAgICAgICAgIGJyZWFrOyAKICAgICAgICAgICAgY2FzZSBSRUxPUDoKICAgICAgICAgICAgICAgIHByaW50ZigiJWQ+XG4iLCBhdHRyaWJ1dGUpOyAKICAgICAgICAgICAgICAgIGJyZWFrOyAKICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgIHByaW50ZigiKVxuIik7IAogICAgICAgICAgICAgICAgYnJlYWs7IAogICAgICAgIH0KICAgIH0gCiAgICByZXR1cm4gMDsgCn0K