Vous êtes sur la page 1sur 8

14SOEIT11007 Roll No.

:01
Tutorial 4

1)Implement Lexical Analyzer in c.

#include<stdio.h>
#include<conio.h>
#include<string.h>
#include<ctype.h>

void main()
{
int i=0,len;
char a[100];
static int c=0;
clrscr();
printf("Enter the string:");
gets(a);
len=strlen(a);

for(i=0;i<len;i++)
{
if(isalpha(a[i]))
{
if(a[i]=='i'&& a[i+1]=='n'&& a[i+2]=='t')
{
printf("int is keyword\n");
c++;
i=i+2;
}
else if(a[i]=='a'&& a[i+1]=='u'&& a[i+2]=='t'&& a[i+3]=='o')
{
printf("auto is keyword\n");
c++;
i=i+3;
}
else if(a[i]=='s'&& a[i+1]=='t'&& a[i+2]=='r'&& a[i+3]=='u'&&
a[i+4]=='c'&& a[i+5]=='t')
{
printf("struct is keyword\n");
c++;
i=i+5;
}
else if(a[i]=='b'&& a[i+1]=='r'&& a[i+2]=='e'&& a[i+3]=='a'&&
a[i+4]=='k')
7th IT-1
14SOEIT11007 Roll No.:01
{
printf("break is keyword\n");
c++;
i=i+4;
}
else if(a[i]=='s'&& a[i+1]=='w'&& a[i+2]=='i'&& a[i+3]=='t'&&
a[i+4]=='c'&& a[i+5]=='h')
{
printf("switch is keyword\n");
c++;
i=i+5;
}
else if(a[i]=='e'&& a[i+1]=='l'&& a[i+2]=='s'&& a[i+3]=='e')
{
printf("else is keyword\n");
c++;
i=i+3;
}
else if(a[i]=='s'&& a[i+1]=='w'&& a[i+2]=='i'&& a[i+3]=='t'&&
a[i+4]=='c'&& a[i+5]=='h')
{
printf("switch is keyword\n");
c++;
i=i+5;
}
else if(a[i]=='c'&& a[i+1]=='a'&& a[i+2]=='s'&& a[i+3]=='e')
{
printf("case is keyword\n");
c++;
i=i+3;
}
else if(a[i]=='c'&& a[i+1]=='h'&& a[i+2]=='a'&& a[i+3]=='r')
{
printf("char is keyword\n");
c++;
i=i+3;
}
else if(a[i]=='c'&& a[i+1]=='o'&& a[i+2]=='n'&& a[i+3]=='s'&&
a[i+4]=='t')
{
printf("const is keyword\n");
c++;
i=i+4;
}
7th IT-1
14SOEIT11007 Roll No.:01
else if(a[i]=='c'&& a[i+1]=='o'&& a[i+2]=='n'&& a[i+3]=='t'&&
a[i+4]=='i'&& a[i+5]=='n'&& a[i+6]=='u'&& a[i+7]=='e')
{
printf("continue is keyword\n");
c++;
i=i+7;
}
else if(a[i]=='d'&& a[i+1]=='e'&& a[i+2]=='f'&& a[i+3]=='a'&&
a[i+4]=='u'&& a[i+5]=='l'&& a[i+6]=='t')
{
printf("default is keyword\n");
c++;
i=i+6;
}
else if(a[i]=='d'&& a[i+1]=='o'&& a[i+2]=='u'&& a[i+3]=='b'&&
a[i+4]=='l'&& a[i+5]=='e')
{
printf("double is keyword\n");
c++;
i=i+5;
}
else if(a[i]=='d'&& a[i+1]=='o')
{
printf("do is keyword\n");
c++;
i=i+1;
}
else if(a[i]=='e'&& a[i+1]=='n'&& a[i+2]=='u'&& a[i+3]=='m')
{
printf("enum is keyword\n");
c++;
i=i+3;
}
else if(a[i]=='e'&& a[i+1]=='x'&& a[i+2]=='t'&& a[i+3]=='e'&&
a[i+4]=='r'&& a[i+5]=='n')
{
printf("extern is keyword\n");
c++;
i=i+5;
}
else if(a[i]=='f'&& a[i+1]=='l'&& a[i+2]=='o'&& a[i+3]=='a'&&
a[i+4]=='t')
{
printf("float is keyword\n");
7th IT-1
14SOEIT11007 Roll No.:01
c++;
i=i+4;
}
else if(a[i]=='f'&& a[i+1]=='o'&& a[i+2]=='r')
{
printf("for is keyword\n");
c++;
i=i+2;
}
else if(a[i]=='g'&& a[i+1]=='o'&& a[i+2]=='t'&& a[i+3]=='o')
{
printf("goto is keyword\n");
c++;
i=i+3;
}
else if(a[i]=='i'&& a[i+1]=='f')
{
printf("if is keyword\n");
c++;
i=i+1;
}
else if(a[i]=='l'&& a[i+1]=='o'&& a[i+2]=='n'&& a[i+3]=='g')
{
printf("long is keyword\n");
c++;
i=i+3;
}
else if(a[i]=='r'&& a[i+1]=='e'&& a[i+2]=='g'&& a[i+3]=='i'&&
a[i+4]=='s'&& a[i+5]=='t'&& a[i+6]=='e'&& a[i+7]=='r')
{
printf("register is keyword\n");
c++;
i=i+7;
}
else if(a[i]=='r'&& a[i+1]=='e'&& a[i+2]=='t'&& a[i+3]=='u'&&
a[i+4]=='r'&& a[i+5]=='n')
{
printf("return is keyword\n");
c++;
i=i+5;
}
else if(a[i]=='s'&& a[i+1]=='h'&& a[i+2]=='o'&& a[i+3]=='r'&&
a[i+4]=='t')
{
7th IT-1
14SOEIT11007 Roll No.:01
printf("continue is keyword\n");
c++;
i=i+7;
}
else if(a[i]=='s'&& a[i+1]=='i'&& a[i+2]=='g'&& a[i+3]=='n'&&
a[i+4]=='e'&& a[i+5]=='d')
{
printf("signed is keyword\n");
c++;
i=i+5;
}
else if(a[i]=='s'&& a[i+1]=='i'&& a[i+2]=='z'&& a[i+3]=='e'&&
a[i+4]=='o'&& a[i+5]=='f')
{
printf("sizeof is keyword\n");
c++;
i=i+5;
}
else if(a[i]=='s'&& a[i+1]=='t'&& a[i+2]=='a'&& a[i+3]=='t'&&
a[i+4]=='i'&& a[i+5]=='c')
{
printf("static is keyword\n");
c++;
i=i+5;
}
else if(a[i]=='t'&& a[i+1]=='y'&& a[i+2]=='p'&& a[i+3]=='e'&&
a[i+4]=='d'&& a[i+5]=='e'&& a[i+6]=='f')
{
printf("typedef is keyword\n");
c++;
i=i+6;
}
else if(a[i]=='u'&& a[i+1]=='n'&& a[i+2]=='i'&& a[i+3]=='o'&&
a[i+4]=='n')
{
printf("union is keyword\n");
c++;
i=i+4;
}
else if(a[i]=='u'&& a[i+1]=='n'&& a[i+2]=='s'&& a[i+3]=='i'&&
a[i+4]=='g'&& a[i+5]=='n'&& a[i+6]=='e'&& a[i+7]=='d')
{
printf("unsigned is keyword\n");
c++;
7th IT-1
14SOEIT11007 Roll No.:01
i=i+7;
}
else if(a[i]=='v'&& a[i+1]=='o'&& a[i+2]=='i'&& a[i+3]=='d')
{
printf("void is keyword\n");
c++;
i=i+3;
}
else if(a[i]=='v'&& a[i+1]=='o'&& a[i+2]=='l'&& a[i+3]=='a'&&
a[i+4]=='t'&& a[i+5]=='i'&& a[i+6]=='l'&& a[i+7]=='e')
{
printf("volatile is keyword\n");
c++;
i=i+7;
}
else if(a[i]=='w'&& a[i+1]=='h'&& a[i+2]=='i'&& a[i+3]=='l'&&
a[i+4]=='e')
{
printf("while is keyword\n");
c++;
i=i+4;
}
else
{
while(a[i]!='\0' && a[i]!=32)
{
printf("%c",a[i]);
i++;
}
printf(" is identifier\n");
c++;
}
}
else if(isdigit(a[i]))
{
while(a[i]!='\0' && a[i]!=32)
{
printf("%c",a[i]);
i++;
}
printf(" is digit\n");
c++;
}

7th IT-1
14SOEIT11007 Roll No.:01
else if(a[i]=='*' && a[i+1]==32 || a[i]=='/' && a[i+1]==32 || a[i]=='%' &&
a[i+1]==32 ||a[i]=='+'&& a[i+1]==32 ||a[i]=='-'&& a[i+1]==32)
{
printf("%c is arithmetic operator\n",a[i]);
c++;
i=i+1;
}
else if(a[i]=='+'&& a[i+1]=='+')
{
printf("%c%c is increment operator\n",a[i],a[i+1]);
c++;
i=i+1;
}
else if(a[i]=='-'&& a[i+1]=='-' )
{
printf("%c%c is decrement operator\n",a[i],a[i+1]);
c++;
i=i+1;
}
else if(a[i]=='=' && a[i+1]==32 || a[i]=='+' && a[i+1]=='=' || a[i]=='-' &&
a[i+1]=='=' || a[i]=='*' && a[i+1]=='=' || a[i]=='/' && a[i+1]=='=' || a[i]=='%' &&
a[i+1]=='=')
{
printf("%c%c is assignment operator\n",a[i],a[i+1]);
c++;
i=i+1;
}
else if(a[i]=='=' && a[i+1]=='=' || a[i]=='>' && a[i+1]==32 || a[i]=='<' &&
a[i+1]==32 || a[i]=='!' && a[i+1]=='=' || a[i]=='<' && a[i+1]=='=' || a[i]=='>' &&
a[i+1]=='=')
{
printf("%c%c is relational operator\n",a[i],a[i+1]);
c++;
i=i+1;
}
else if(a[i]=='&' && a[i+1]=='&' || a[i]=='|' && a[i+1]==32 || a[i]=='|' &&
a[i+1]==32 || a[i]=='!' && a[i+1]==32)
{
printf("%c%c is logical operator\n",a[i],a[i+1]);
c++;
i=i+1;
}

7th IT-1
14SOEIT11007 Roll No.:01
else if(a[i]=='&' && a[i+1]==32 || a[i]=='|' && a[i+1]==32 || a[i]=='^' &&
a[i+1]==32 || a[i]=='~' && a[i+1]==32 || a[i]=='<' && a[i+1]=='<' || a[i]=='>' &&
a[i+1]=='>')
{
printf("%c%c is bitwise operator\n",a[i],a[i+1]);
c++;
i=i+1;
}

}
printf("No. of tokens are: %d \n",c);
getch();
}

output:

7th IT-1

Vous aimerez peut-être aussi