%{
#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
}
JXsKI2luY2x1ZGUgPHN0ZGlvLmg+CiV9CgovLyBEZWZpbmUgcmVndWxhciBleHByZXNzaW9ucyBmb3IgZGlmZmVyZW50IHR5cGVzIG9mIHRva2VucwpkYXRhdHlwZSAgICAgIGludHxmbG9hdHxkb3VibGV8c3RyaW5nfGNoYXIKaWRlbnRpZmllciAgICBbYS16QS1aX11bYS16QS1aMC05X10qCm51bWJlciAgICAgICAgWzAtOV0rCnN0cmluZyAgICAgICAgXCIoW15cXFwiXXxcXC4pKlwiCmNoYXJhY3RlciAgICAgJ1teJ10nCm9wZXJhdG9yICAgICAgXCt8XC18XCp8XC98XCV8XD1cPSAgLy8gT3BlcmF0b3JzICgrLCAtLCAqLCAvLCAlLCA9PSkKCiUlCgovLyBBY3Rpb24gcnVsZXMgZm9yIGhhbmRsaW5nIHRva2VucwoKLy8gTWF0Y2ggZGF0YXR5cGVzCntkYXRhdHlwZX0gICAgICAgIHsgcHJpbnRmKCJUaGlzIGlzIGEgZGF0YXR5cGU6ICVzXG4iLCB5eXRleHQoKSk7IH0KCi8vIE1hdGNoIGlkZW50aWZpZXJzCntpZGVudGlmaWVyfSAgICAgIHsgcHJpbnRmKCJUaGlzIGlzIGFuIGlkZW50aWZpZXI6ICVzXG4iLCB5eXRleHQoKSk7IH0KCi8vIE1hdGNoIG51bWJlcnMKe251bWJlcn0gICAgICAgICAgeyBwcmludGYoIlRoaXMgaXMgYSBudW1iZXI6ICVzXG4iLCB5eXRleHQoKSk7IH0KCi8vIE1hdGNoIHN0cmluZ3MKe3N0cmluZ30gICAgICAgICAgeyBwcmludGYoIlRoaXMgaXMgYSBzdHJpbmc6ICVzXG4iLCB5eXRleHQoKSk7IH0KCi8vIE1hdGNoIGNoYXJhY3RlcnMKe2NoYXJhY3Rlcn0gICAgICAgeyBwcmludGYoIlRoaXMgaXMgYSBjaGFyYWN0ZXI6ICVzXG4iLCB5eXRleHQoKSk7IH0KCi8vIE1hdGNoIG9wZXJhdG9ycwp7b3BlcmF0b3J9ICAgICAgICB7IHByaW50ZigiVGhpcyBpcyBhbiBvcGVyYXRvcjogJXNcbiIsIHl5dGV4dCgpKTsgfQoKLy8gSWdub3JlIHNwYWNlcywgdGFicywgYW5kIG5ld2xpbmVzClsgXHRcblxyXSsgICAgICAgIHsgLyogSWdub3JlIHdoaXRlc3BhY2VzICovIH0KCi8vIENhdGNoIGFsbCB1bm1hdGNoZWQgY2hhcmFjdGVycwouICAgICAgICAgICAgICAgICB7IHByaW50ZigiVW5rbm93biB0b2tlbjogJXNcbiIsIHl5dGV4dCgpKTsgfQolJQoKaW50IG1haW4oKSB7CiAgICAvLyBTdGFydCB0aGUgTGV4IHNjYW5uZXIKICAgIHl5bGV4KCk7CiAgICByZXR1cm4gMDsKfQoKaW50IHl5d3JhcCgpIHsKICAgIHJldHVybiAxOyAgLy8gRW5kIG9mIGlucHV0Cn0K