%{
#include <stdio.h>
#include <string.h>
void print_token(char* token, char* type) {
printf("%s: %s\n", type, token);
}
%}
%%
Noun [A-Z][a-zA-Z]* { print_token(yytext, "Noun"); }
Verb
(run
|jump
|eat
|play
|write) { print_token
(yytext
, "Verb"
); }Adverb (quickly|slowly|gracefully) { print_token(yytext, "Adverb"); }
Adjective (big|small|beautiful|happy) { print_token(yytext, "Adjective"); }
[ \t\n] { /* Ignore spaces, tabs, and newlines */ }
. { /* Ignore other characters */ }
%%
int main() {
yylex(); // Start lexical analysis
return 0;
}
JXsKI2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdHJpbmcuaD4KCnZvaWQgcHJpbnRfdG9rZW4oY2hhciogdG9rZW4sIGNoYXIqIHR5cGUpIHsKICAgIHByaW50ZigiJXM6ICVzXG4iLCB0eXBlLCB0b2tlbik7Cn0KJX0KCiUlCgpOb3VuICAgIFtBLVpdW2EtekEtWl0qICAgICAgICAgICAgICAgICAgeyBwcmludF90b2tlbih5eXRleHQsICJOb3VuIik7IH0KVmVyYiAgICAocnVufGp1bXB8ZWF0fHBsYXl8d3JpdGUpICAgICAgIHsgcHJpbnRfdG9rZW4oeXl0ZXh0LCAiVmVyYiIpOyB9CkFkdmVyYiAgKHF1aWNrbHl8c2xvd2x5fGdyYWNlZnVsbHkpICAgICB7IHByaW50X3Rva2VuKHl5dGV4dCwgIkFkdmVyYiIpOyB9CkFkamVjdGl2ZSAoYmlnfHNtYWxsfGJlYXV0aWZ1bHxoYXBweSkgIHsgcHJpbnRfdG9rZW4oeXl0ZXh0LCAiQWRqZWN0aXZlIik7IH0KClsgXHRcbl0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IC8qIElnbm9yZSBzcGFjZXMsIHRhYnMsIGFuZCBuZXdsaW5lcyAqLyB9Ci4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgLyogSWdub3JlIG90aGVyIGNoYXJhY3RlcnMgKi8gfQoKJSUKCmludCBtYWluKCkgewogICAgeXlsZXgoKTsgIC8vIFN0YXJ0IGxleGljYWwgYW5hbHlzaXMKICAgIHJldHVybiAwOwp9Cg==