%{
#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;
}
CgolewojaW5jbHVkZSA8c3RkaW8uaD4KI2RlZmluZSBMVCAyNTYKI2RlZmluZSBMRSAyNTcKI2RlZmluZSBFUSAyNTgKI2RlZmluZSBORSAyNTkKI2RlZmluZSBHVCAyNjAKI2RlZmluZSBHRSAyNjEKI2RlZmluZSBSRUxPUCAyNjIKI2RlZmluZSBJRCAyNjMKI2RlZmluZSBOVU0gMjY0CiNkZWZpbmUgSUYgMjY1CiNkZWZpbmUgVEhFTiAyNjYKI2RlZmluZSBFTFNFIDI2NwppbnQgYXR0cmlidXRlOwolfQoKJWRlbGltIFsKXHRcbl0KJXdzIHtkZWxpbX0rCiVsZXR0ZXIgW0EtWmEtel0KJWRpZ2l0IFswLTldCiVpZCB7bGV0dGVyfSh7bGV0dGVyfXx7ZGlnaXR9KSoKJW51bSB7ZGlnaXR9KyhcLntkaWdpdH0rKT8oRVsrXC1dP3tkaWdpdH0rKT8KCiUlCnt3c30ge30KaWYgeyByZXR1cm4oSUYpOyB9CnRoZW4geyByZXR1cm4oVEhFTik7IH0KZWxzZSB7IHJldHVybihFTFNFKTsgfQp7aWR9IHsgcmV0dXJuKElEKTsgfQp7bnVtfSB7IHJldHVybihOVU0pOyB9CiI8IiB7IGF0dHJpYnV0ZT1MVDtyZXR1cm4oUkVMT1ApOyB9CiI8PSIgeyBhdHRyaWJ1dGU9TEU7cmV0dXJuKFJFTE9QKTsgfQoiPD4iIHsgYXR0cmlidXRlPU5FO3JldHVybihSRUxPUCk7IH0KIj0iIHsgYXR0cmlidXRlPUVRO3JldHVybihSRUxPUCk7IH0KIj4iIHsgYXR0cmlidXRlPUdUO3JldHVybihSRUxPUCk7IH0KIj49IiB7IGF0dHJpYnV0ZT1HRTtyZXR1cm4oUkVMT1ApOyB9CiUlCgppbnQgeXl3cmFwKCkgewogICAgcmV0dXJuIDE7Cn0gCgppbnQgbWFpbigpIHsgCiAgICBpbnQgdG9rZW47IAogICAgd2hpbGUoKHRva2VuID0geXlsZXgoKSkpIHsgCiAgICAgICAgcHJpbnRmKCI8JWQsIiwgdG9rZW4pOyAKICAgICAgICBzd2l0Y2godG9rZW4pIHsgCiAgICAgICAgICAgIGNhc2UgSUQ6CiAgICAgICAgICAgIGNhc2UgTlVNOgogICAgICAgICAgICAgICAgcHJpbnRmKCIlcz5cbiIsIHl5dGV4dCk7IAogICAgICAgICAgICAgICAgYnJlYWs7IAogICAgICAgICAgICBjYXNlIFJFTE9QOgogICAgICAgICAgICAgICAgcHJpbnRmKCIlZD5cbiIsIGF0dHJpYnV0ZSk7IAogICAgICAgICAgICAgICAgYnJlYWs7IAogICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgcHJpbnRmKCIpXG4iKTsgCiAgICAgICAgICAgICAgICBicmVhazsgCiAgICAgICAgfQogICAgfSAKICAgIHJldHVybiAwOyAKfQo=