%{
#include <stdio.h>
%}
// Define regular expressions for different types of tokens
datatype int
|float|double
|string
|char
identifier [a-zA-Z_][a-zA-Z0-9_]*
string \"([^\\\"]|\\.)*\"
character '[^']'
operator \+|\-|\*|\/|\%|\=\= // Operators (+, -, *, /, %, ==)
%%
// Action rules for handling tokens
// Match datatypes
{datatype} { printf("This is a datatype: %s\n", yytext()); }
// Match identifiers
{identifier} { printf("This is an identifier: %s\n", yytext()); }
// Match numbers
{number} { printf("This is a number: %s\n", yytext()); }
// Match strings
{string} { printf("This is a string: %s\n", yytext()); }
// Match characters
{character} { printf("This is a character: %s\n", yytext()); }
// Match operators
{operator} { printf("This is an operator: %s\n", yytext()); }
// Ignore spaces, tabs, and newlines
[ \t\n\r]+ { /* Ignore whitespaces */ }
// Catch all unmatched characters
. { printf("Unknown token: %s\n", yytext()); }
%%
int main() {
// Start the Lex scanner
yylex();
return 0;
}
int yywrap() {
return 1; // End of input
}
CiV7CiNpbmNsdWRlIDxzdGRpby5oPgolfQoKLy8gRGVmaW5lIHJlZ3VsYXIgZXhwcmVzc2lvbnMgZm9yIGRpZmZlcmVudCB0eXBlcyBvZiB0b2tlbnMKZGF0YXR5cGUgICAgICBpbnR8ZmxvYXR8ZG91YmxlfHN0cmluZ3xjaGFyCmlkZW50aWZpZXIgICAgW2EtekEtWl9dW2EtekEtWjAtOV9dKgpudW1iZXIgICAgICAgIFswLTldKwpzdHJpbmcgICAgICAgIFwiKFteXFxcIl18XFwuKSpcIgpjaGFyYWN0ZXIgICAgICdbXiddJwpvcGVyYXRvciAgICAgIFwrfFwtfFwqfFwvfFwlfFw9XD0gIC8vIE9wZXJhdG9ycyAoKywgLSwgKiwgLywgJSwgPT0pCgolJQoKLy8gQWN0aW9uIHJ1bGVzIGZvciBoYW5kbGluZyB0b2tlbnMKCi8vIE1hdGNoIGRhdGF0eXBlcwp7ZGF0YXR5cGV9ICAgICAgICB7IHByaW50ZigiVGhpcyBpcyBhIGRhdGF0eXBlOiAlc1xuIiwgeXl0ZXh0KCkpOyB9CgovLyBNYXRjaCBpZGVudGlmaWVycwp7aWRlbnRpZmllcn0gICAgICB7IHByaW50ZigiVGhpcyBpcyBhbiBpZGVudGlmaWVyOiAlc1xuIiwgeXl0ZXh0KCkpOyB9CgovLyBNYXRjaCBudW1iZXJzCntudW1iZXJ9ICAgICAgICAgIHsgcHJpbnRmKCJUaGlzIGlzIGEgbnVtYmVyOiAlc1xuIiwgeXl0ZXh0KCkpOyB9CgovLyBNYXRjaCBzdHJpbmdzCntzdHJpbmd9ICAgICAgICAgIHsgcHJpbnRmKCJUaGlzIGlzIGEgc3RyaW5nOiAlc1xuIiwgeXl0ZXh0KCkpOyB9CgovLyBNYXRjaCBjaGFyYWN0ZXJzCntjaGFyYWN0ZXJ9ICAgICAgIHsgcHJpbnRmKCJUaGlzIGlzIGEgY2hhcmFjdGVyOiAlc1xuIiwgeXl0ZXh0KCkpOyB9CgovLyBNYXRjaCBvcGVyYXRvcnMKe29wZXJhdG9yfSAgICAgICAgeyBwcmludGYoIlRoaXMgaXMgYW4gb3BlcmF0b3I6ICVzXG4iLCB5eXRleHQoKSk7IH0KCi8vIElnbm9yZSBzcGFjZXMsIHRhYnMsIGFuZCBuZXdsaW5lcwpbIFx0XG5ccl0rICAgICAgICB7IC8qIElnbm9yZSB3aGl0ZXNwYWNlcyAqLyB9CgovLyBDYXRjaCBhbGwgdW5tYXRjaGVkIGNoYXJhY3RlcnMKLiAgICAgICAgICAgICAgICAgeyBwcmludGYoIlVua25vd24gdG9rZW46ICVzXG4iLCB5eXRleHQoKSk7IH0KJSUKCmludCBtYWluKCkgewogICAgLy8gU3RhcnQgdGhlIExleCBzY2FubmVyCiAgICB5eWxleCgpOwogICAgcmV0dXJuIDA7Cn0KCmludCB5eXdyYXAoKSB7CiAgICByZXR1cm4gMTsgIC8vIEVuZCBvZiBpbnB1dAp9Cg==