Saturday, April 4, 2009

source code

#include
#include
#include
int state,si,s;
void main()
{
int i=0,j=0;
char a[100],b[90],ch='\0';
state=0;
si=0;
s=0;
clrscr();
printf("Enter the statement:");
scanf("%c",&ch);
while(ch!='\n')
{
if(ch!=' ')
{
a[i]=ch;
i=i+1;
}
scanf("%c",&ch);
}
a[i]='\0';
getch();
for(j=0;j{
switch(state)
{
case 0:
if(a[si]=='i')
{
state=1;
si++;
}
else
{
state=6;
}
break;
case 1:
if(a[si]=='f')
{
state=2;
si++;
printf("\n Keyword Found IF");
}
else
{
state=20;
}
break;
case 2:
if(a[si]=='(')
{
printf("\n %c",a[si]);
state=3;
si++;
printf("Open paranthesis \n");
}
else
{
state=20;
}
break;
case 3:
if(a[si]>='a'&&a[si]<='z')
{
b[s]=a[si];
s++;
si++;
continue;
}
b[s]='\0';
printf("%s is a label \n",b);
s=0;
state=4;
break;
case 4:
if((a[si]=='!')||(a[si]=='<')||(a[si]=='>')||(a[si]=='='))
{
si++;
if(a[si]=='=')
{
printf("%c",a[si]);
printf("%c conditional statement \n",a[si]);
si++;
state=5;
}
else if(a[si]=='+')
{
state=10;
}
else
{
si=si-1;
printf("%c is a assignment operator \n",a[si]);
si++;
if(a[si]>='0'&&a[si]<='9')
{
printf("\n %c",a[si]);
si++;
}
printf("is a number \n\n");
if(a[si]==';')
printf("%c is a semicolon \n",a[si]);
si++;
state=3;
}
}
else
{
state=10;
si++;
}
break;
case 5:
if(a[si]>='0'&&a[si]<='9')
{
printf("\n %c",a[si]);
b[s]=a[si];
s++;
si++;
continue;
}
printf("is a number \n");
printf("\n");
if(a[si]==')')
{
printf("\n %c is a close paranthesis \n",a[si]);
state=20;
}
else if(a[si]==';')
{
printf("\n %c is a semicolon",a[si]);
si++;
s=0;
state=3;
}
break;
case 6:
if(a[si]=='f')
{
state=7;
si++;
}
else
{
state=20;
}
break;
case 7:
if(a[si]=='o')
{
state=8;
si++;
}
else
{
state=20;
}
break;
case 8:
if(a[si]=='r')
{
si++;
state=2;
printf("keyword Found: FOR");
}
case 9:
if(a[si]==';')
{
printf("\n %c is a semicolon \n",a[si]);
state=20;
}
break;
case 10:
si--;
if(a[si]=='+')
{
si++;
printf("%c",a[si]);
if(a[si]=='+')
{
printf("%c is Increment operator \n",a[si]);
si++;
}
if(a[si]==')')
{
printf("\n %c is a close parenthesis n",a[si]);
state=20;
}
else
{
state=20;
}
break;
case 13:
if(a[si]=='-')
{
si++;
state=14;
}
else
{
state=20;
}
case 14:
if(a[si]=='-')
{
si++;
printf("%c is a Decrement operator \n",a[si]);
state=6;
}
else
{
state=20;
}
break;
case 20:
state=0;
si++;
break;
}
}
getch();
}

Output:

Enter the statement:if(a==0)

Keyword found IF
(Open parenthesis
a is a label
== Conditional statement
0is a number
) is a close parenthesis

Enter the statement:for(i=0;i<6;i++)

Keyword found:FOR
(Open parenthesis
i is a label
=is a assignment operator
0is a number
; is a semicolon
i is a label
6is a number
; is a semicolon
i is a label
++ is Increment operator
) is close parenthesis