#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define MAX_IDENTIFIER_LENGTH 50
%}
%option noyywrap
%option yylineno
void addtosymboltable(const char*)
%%
[\t] /*ignore whitespace*/
\n /*ignore newline*/
\/\*([^*]|\*+[^*/])*\*+\/ /*ignore comments*/
[0-9]+ {printf("Constant:%s \n",yytext);}
= {printf("%s is an Assignment Operator\n",yytext);}
\* |
\+ |
\- {printf("%s is a Operator\n",yytext);}
[a-zA-Z][a-zA-Z0-9]* {printf("identifier:%s\n",yytext);addtosymboltable(yytext);}
. {printf("Invalid token:%s \n",yytext);}
%%
typedef struct
{
char name[MAX_IDENTIFIER_LENGTH];
} Symbol;
Symbol symbol_table[100];
int symbol_count=0;
void addtosymboltable(const char * identifier){
if(symbol_count < 100)
{
strncpy(symbol_table[symbol_count].name,identifier,MAX_IDENTIFIER_LENGTH-1);
symbol_table[symbol_count].name[MAX_IDENTIFIER_LENGTH-1]='\0';
symbol_count++;
printf("Identifier %s is entered in the symbol table\n",identifier);
}
else
{
printf
("Symbol table
is full
.Cannot add more identifier
.\n"
);exit(0);
}
}
int main()
{
yylex();
return 1;
}
I2luY2x1ZGU8c3RkaW8uaD4KI2luY2x1ZGU8c3RkbGliLmg+CiNpbmNsdWRlPHN0cmluZy5oPgojZGVmaW5lIE1BWF9JREVOVElGSUVSX0xFTkdUSCA1MAolfQolb3B0aW9uIG5veXl3cmFwCiVvcHRpb24geXlsaW5lbm8Kdm9pZCBhZGR0b3N5bWJvbHRhYmxlKGNvbnN0IGNoYXIqKQolJQpbXHRdIC8qaWdub3JlIHdoaXRlc3BhY2UqLwpcbiAvKmlnbm9yZSBuZXdsaW5lKi8KXC9cKihbXipdfFwqK1teKi9dKSpcKitcLyAvKmlnbm9yZSBjb21tZW50cyovClswLTldKyB7cHJpbnRmKCJDb25zdGFudDolcyBcbiIseXl0ZXh0KTt9Cj0ge3ByaW50ZigiJXMgaXMgYW4gQXNzaWdubWVudCBPcGVyYXRvclxuIix5eXRleHQpO30KXCogfApcKyB8ClwtIHtwcmludGYoIiVzIGlzIGEgT3BlcmF0b3JcbiIseXl0ZXh0KTt9ClthLXpBLVpdW2EtekEtWjAtOV0qIHtwcmludGYoImlkZW50aWZpZXI6JXNcbiIseXl0ZXh0KTthZGR0b3N5bWJvbHRhYmxlKHl5dGV4dCk7fQouIHtwcmludGYoIkludmFsaWQgdG9rZW46JXMgXG4iLHl5dGV4dCk7fQolJQp0eXBlZGVmIHN0cnVjdAp7CmNoYXIgbmFtZVtNQVhfSURFTlRJRklFUl9MRU5HVEhdOwp9IFN5bWJvbDsKU3ltYm9sIHN5bWJvbF90YWJsZVsxMDBdOwppbnQgc3ltYm9sX2NvdW50PTA7CnZvaWQgYWRkdG9zeW1ib2x0YWJsZShjb25zdCBjaGFyICogaWRlbnRpZmllcil7CmlmKHN5bWJvbF9jb3VudCA8IDEwMCkKewpzdHJuY3B5KHN5bWJvbF90YWJsZVtzeW1ib2xfY291bnRdLm5hbWUsaWRlbnRpZmllcixNQVhfSURFTlRJRklFUl9MRU5HVEgtMSk7CnN5bWJvbF90YWJsZVtzeW1ib2xfY291bnRdLm5hbWVbTUFYX0lERU5USUZJRVJfTEVOR1RILTFdPSdcMCc7CgpzeW1ib2xfY291bnQrKzsKcHJpbnRmKCJJZGVudGlmaWVyICVzIGlzIGVudGVyZWQgaW4gdGhlIHN5bWJvbCB0YWJsZVxuIixpZGVudGlmaWVyKTsKfQplbHNlCnsKcHJpbnRmKCJTeW1ib2wgdGFibGUgaXMgZnVsbC5DYW5ub3QgYWRkIG1vcmUgaWRlbnRpZmllci5cbiIpOwpleGl0KDApOwp9Cn0KaW50IG1haW4oKQp7Cnl5bGV4KCk7CnJldHVybiAxOwp9