%{
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define MAX_IDENTIFIER_LENGTH50
%}
%option noyywrap
%option yylineo
void addto symboltable(const char*)
%%
[\t]
/n/
\n*([^*]|\*+[^*/])*
[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);addsymboltable(yytext);}
{printf("Invalid token:%s\n",yytext);}
%%
typedef struct
{
charname[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",idnetifier);
}
else
{
printf
("symbol table
is full
.cannot add more identifier
.\n"
); exit(0);
}
}
int main()
{
yylex();
return 1;
}
JXsKICAjaW5jbHVkZTxzdGRpby5oPgogICNpbmNsdWRlPHN0ZGxpYi5oPgogICNpbmNsdWRlPHN0cmluZy5oPgogICNkZWZpbmUgTUFYX0lERU5USUZJRVJfTEVOR1RINTAKJX0KJW9wdGlvbiBub3l5d3JhcAolb3B0aW9uIHl5bGluZW8Kdm9pZCBhZGR0byBzeW1ib2x0YWJsZShjb25zdCBjaGFyKikKJSUKW1x0XQovbi8KXG4qKFteKl18XCorW14qL10pKgpbMC05XSt7cHJpbnRmKCJjb25zdGFudDolc1xuKix5eXRleHQiKTt9Cj17cHJpbnRmKCIlcyBpcyBhbiBhc3NpZ25tZW50IG9wZXJhdG9yXG4iLHl5dGV4dCk7fQpcKi8KXCsvClwte3ByaW50ZigiJXMgaXMgYSBvcGVyYXRvclxuIix5eXRleHQpO30KW2EtWkEtWl1bYS1aQS1aMC05XSp7cHJpbnRmKCJpZGVudGlmaWVyOiVzXG4iLHl5dGV4dCk7YWRkc3ltYm9sdGFibGUoeXl0ZXh0KTt9CiAgIHtwcmludGYoIkludmFsaWQgdG9rZW46JXNcbiIseXl0ZXh0KTt9CiAgICUlCiAgIHR5cGVkZWYgc3RydWN0CiAgIHsKICAgICBjaGFybmFtZVtNQVhfSURFTlRJRklFUl9MRU5HVEhdOwogICB9c3ltYm9sOwogICAgc3ltYm9sIHN5bWJvbF90YWJsZVsxMDBdOwogICAgaW50IHN5bWJvbF9jb3VudD0wOwogIHZvaWQgYWRkdG9zeW1ib2x0YWJsZShjb25zdCBjaGFyKmlkZW50aWZpZXIpewogICAgaWYoc3ltYm9sX2NvdW50PDEwMCkKICAgIHsKICAgIHN0cm5jcHkoc3ltYm9sX3RhYmxlKHN5bWJvbF9jb3VudF0ubmFtZSxpZGVudGlmaWVyLE1BWF9JREVOVElGSUVSX0xFTkdUSC0xKTsKICAgIHN5bWJvbF90YWJsZVtzeW1ib2xfY291bnRdLm5hbWVbTUFYX0lERU5USUZJRVJfTEVOR1RILTFdPSdcMCc7CiAgICBzeW1ib2xfY291bnQrKzsKICAgIHByaW50ZigiSWRlbnRpZmllciAlcyBpcyBlbnRlcmVkIGluIHRoZSBzeW1ib2wgdGFibGUiLGlkbmV0aWZpZXIpOwogICAgfQogICAgZWxzZQogICAgewogICAgICBwcmludGYoInN5bWJvbCB0YWJsZSBpcyBmdWxsLmNhbm5vdCBhZGQgbW9yZSBpZGVudGlmaWVyLlxuIik7CiAgICAgIGV4aXQoMCk7CiAgICB9CiAgfQogIGludCBtYWluKCkKICB7CiAgICB5eWxleCgpOwogICAgcmV0dXJuIDE7CiAgfQo=