/*CSEMATTER.BLOGSPOT.IN
PROGRAM-LEXICAL ANALYSIS PROGRAM IN C*/
/*4 FILES ARE NEEDED FOR THIS PROGRAM
1.LEX.C
2.INTER.C-automatically generated on running
3.OPER.C-contains opeartors
4.KEY.C-contains keyword
and one file to perform lexical analysis
NOTE-PUT ALL THREE C FILES IN A SAME FOLDER AND ON RUNNING THE PROGRAM ENTER ANY FILE NAME,THAT SHOULD BE PRESENT IN SAME FOLDER*/
*/
1 LEX.C
#include"stdio.h"
#include"conio.h"
#include<string.h>
#include<ctype.h>
void main()
{
FILE *fi,*fo,*fop,*fk;
int flag=0,i=1;
char c,t,a[15],ch[15],file[20];
clrscr();
printf("Enter the file name : ");
scanf("%s",file);
fi=fopen(file,"r");
fo=fopen("inter.c","w");
fop=fopen("oper.c","r");
fk=fopen("key.c","r");
c=getc(fi);
while(!feof(fi))
{
if(isalpha(c)||isdigit(c)||(c=='['||c==']'||c=='.'==1))
fputc(c,fo);
else
{
if(c=='\n')
fprintf(fo,"\t$\t");
else
fprintf(fo,"\t%c\t",c);
}
c=getc(fi);
}
fclose(fi);
fclose(fo);
fi=fopen("inter.c","r");
printf("\t\tLEXICAL ANALYSIS \n");
fscanf(fi,"%s",a);
printf("\nline : %d\n",i++);
while(!feof(fi))
{
if((strcmp(a,"$")==0))
{
printf("\nline : %d\n",i++);
fscanf(fi,"%s",a);
}
fscanf(fop,"%s",ch);
while(!feof(fop))
{
if(strcmp(ch,a)==0)
{
fscanf(fop,"%s",ch);
printf("\t\t%s\t:\t%s\n",a,ch);
flag=1;
}
fscanf(fop,"%s",ch);
}
rewind(fop);
fscanf(fk,"%s",ch);
while(!feof(fk))
{
if(strcmp(ch,a)==0)
{
fscanf(fk,"%s",ch);
printf("\t\t%s\t:\tkeyword\n",a);
flag=1;
}
fscanf(fk,"%s",ch);
}
rewind(fk);
if(flag==0)
{
if(isdigit(a[0]))
printf("\t\t%s\t:\tconstant\n",a);
else
printf("\t\t%s\t:\tidentifier\n",a);
}
flag=0;
fscanf(fi,"%s",a);
}
getch();
}
------------------------------------------------------------------------------------------------------------
2.key.c
int
void
main
char
if
for
while
else
printf
scanf
FILE
include
stdio.h
conio.h
iostream.h
------------------------------------------------------------------------------------------------------------
3.oper.c
( openpara
) closepara
{ openbrace
} closebrace
< lesser
> greater
" doublequote
' singlequote
: colon
; semicolon
# preprocessor
= equal
== assign
% percentage
^ bitwise
& reference
* star
+ add
- sub
\ backslash
/ slash
------------------------------------------------------------------------------------------------------------
/*sample file is cd4.c
#include<stdio.h>
#include<conio.h>
int main()
{
int a;
printf("hello");
if(a==1)
{
printf("ok");
}
else
{
printf("notok");
}
}
*/
/*output-
Enter the file name : cd4.c
LEXICAL ANALYSIS
line : 1
# : preprocessor
include : keyword
< : lesser
stdio.h : keyword
> : greater
line : 2
# : preprocessor
include : keyword
< : lesser
conio.h : keyword
> : greater
line : 3
$ : identifier
int : keyword
main : keyword
( : openpara
) : closepara
line : 4
{ : openbrace
line : 5
int : keyword
a : identifier
; : semicolon
line : 6
printf : keyword
( : openpara
" : doublequote
hello : identifier
" : doublequote
) : closepara
; : semicolon
line : 7
if : keyword
( : openpara
a : identifier
= : equal
= : equal
1 : constant
) : closepara
line : 8
{ : openbrace
line : 9
printf : keyword
( : openpara
" : doublequote
ok : identifier
" : doublequote
) : closepara
; : semicolon
line : 10
} : closebrace
line : 11
else : keyword
line : 12
{ : openbrace
line : 13
printf : keyword
( : openpara
" : doublequote
notok : identifier
" : doublequote
) : closepara
; : semicolon
line : 14
} : closebrace
line : 15
} : closebrace
line : 16
$ : identifier
*/
PROGRAM-LEXICAL ANALYSIS PROGRAM IN C*/
/*4 FILES ARE NEEDED FOR THIS PROGRAM
1.LEX.C
2.INTER.C-automatically generated on running
3.OPER.C-contains opeartors
4.KEY.C-contains keyword
and one file to perform lexical analysis
NOTE-PUT ALL THREE C FILES IN A SAME FOLDER AND ON RUNNING THE PROGRAM ENTER ANY FILE NAME,THAT SHOULD BE PRESENT IN SAME FOLDER*/
*/
1 LEX.C
#include"stdio.h"
#include"conio.h"
#include<string.h>
#include<ctype.h>
void main()
{
FILE *fi,*fo,*fop,*fk;
int flag=0,i=1;
char c,t,a[15],ch[15],file[20];
clrscr();
printf("Enter the file name : ");
scanf("%s",file);
fi=fopen(file,"r");
fo=fopen("inter.c","w");
fop=fopen("oper.c","r");
fk=fopen("key.c","r");
c=getc(fi);
while(!feof(fi))
{
if(isalpha(c)||isdigit(c)||(c=='['||c==']'||c=='.'==1))
fputc(c,fo);
else
{
if(c=='\n')
fprintf(fo,"\t$\t");
else
fprintf(fo,"\t%c\t",c);
}
c=getc(fi);
}
fclose(fi);
fclose(fo);
fi=fopen("inter.c","r");
printf("\t\tLEXICAL ANALYSIS \n");
fscanf(fi,"%s",a);
printf("\nline : %d\n",i++);
while(!feof(fi))
{
if((strcmp(a,"$")==0))
{
printf("\nline : %d\n",i++);
fscanf(fi,"%s",a);
}
fscanf(fop,"%s",ch);
while(!feof(fop))
{
if(strcmp(ch,a)==0)
{
fscanf(fop,"%s",ch);
printf("\t\t%s\t:\t%s\n",a,ch);
flag=1;
}
fscanf(fop,"%s",ch);
}
rewind(fop);
fscanf(fk,"%s",ch);
while(!feof(fk))
{
if(strcmp(ch,a)==0)
{
fscanf(fk,"%s",ch);
printf("\t\t%s\t:\tkeyword\n",a);
flag=1;
}
fscanf(fk,"%s",ch);
}
rewind(fk);
if(flag==0)
{
if(isdigit(a[0]))
printf("\t\t%s\t:\tconstant\n",a);
else
printf("\t\t%s\t:\tidentifier\n",a);
}
flag=0;
fscanf(fi,"%s",a);
}
getch();
}
------------------------------------------------------------------------------------------------------------
2.key.c
int
void
main
char
if
for
while
else
printf
scanf
FILE
include
stdio.h
conio.h
iostream.h
------------------------------------------------------------------------------------------------------------
3.oper.c
( openpara
) closepara
{ openbrace
} closebrace
< lesser
> greater
" doublequote
' singlequote
: colon
; semicolon
# preprocessor
= equal
== assign
% percentage
^ bitwise
& reference
* star
+ add
- sub
\ backslash
/ slash
------------------------------------------------------------------------------------------------------------
/*sample file is cd4.c
#include<stdio.h>
#include<conio.h>
int main()
{
int a;
printf("hello");
if(a==1)
{
printf("ok");
}
else
{
printf("notok");
}
}
*/
/*output-
Enter the file name : cd4.c
LEXICAL ANALYSIS
line : 1
# : preprocessor
include : keyword
< : lesser
stdio.h : keyword
> : greater
line : 2
# : preprocessor
include : keyword
< : lesser
conio.h : keyword
> : greater
line : 3
$ : identifier
int : keyword
main : keyword
( : openpara
) : closepara
line : 4
{ : openbrace
line : 5
int : keyword
a : identifier
; : semicolon
line : 6
printf : keyword
( : openpara
" : doublequote
hello : identifier
" : doublequote
) : closepara
; : semicolon
line : 7
if : keyword
( : openpara
a : identifier
= : equal
= : equal
1 : constant
) : closepara
line : 8
{ : openbrace
line : 9
printf : keyword
( : openpara
" : doublequote
ok : identifier
" : doublequote
) : closepara
; : semicolon
line : 10
} : closebrace
line : 11
else : keyword
line : 12
{ : openbrace
line : 13
printf : keyword
( : openpara
" : doublequote
notok : identifier
" : doublequote
) : closepara
; : semicolon
line : 14
} : closebrace
line : 15
} : closebrace
line : 16
$ : identifier
*/
No comments:
Post a Comment