How to run lex yacc programs on win 10
In short:
For Lex steps to run:
For YACC steps to run:
A.Lex
1. download flex for windows
http://flex-windows-lex-and-yacc.software.informer.com/2.5/
2.install it
locatin: C:\Flex Windows\
3.open cmd
4.You need to change location as follows:
cd C:\Flex Windows\EditPlusPortable
5. Steps to run:
lex lex7.l
gcc lex.yy.c
a
Output:
Word Count : 13
Char Count : 80
Line Count : 7
codes:
lex7.l
%{
/*
*Program to count no of characters, words and lines
*/
#include<stdio.h>
#include<string.h>
int c=0,w=0,l=0;
%}
%%
[\t ]+ /* ignore whitespace */
[a-zA-z]+ {w=w+1; c=c+ yyleng;}
[\n ] {l=l+1;}
['{','}''(',')',.,",;] {c=c+1;}
%%
int main()
{
yyin= fopen("file1.txt","r");
yylex();
printf("\nWord Count : %d",w);
printf("\nChar Count : %d",c);
printf("\nLine Count : %d\n",l);
}
int yywrap()
{
}
file1.txt
public class Lex
{
public static void main(String[] args)
{
System.out.println("Hello");
}
}
B.Yacc
steps to run:
%{
#include"y.tab.h"
extern yylval;
%}
%%
[\t ]+
is|am|are|were|was|be|being|been|do|does|did|will|would|should|can|could|has|have|had|go|rides|paints return VERB;
he|she return SUB;
poster|bike return OBJ;
while return CONJ;
[a-zA-z]+ printf("\n%s: Not Defined",yytext);
%%
simple_compound.y
%{
#include<stdio.h>
%}
%token SUB VERB OBJ CONJ
%%
sentence:simple|compound
simple:SUB VERB OBJ {printf("\nValid Simple Sentence");};
compound:simple CONJ simple {printf("\nValid Compound Sentence");};
%%
yywrap()
{
return 0;
}
yyerror()
{
printf("\nInvalid Sentence !!!\n");
}
main()
{
printf("\nEnter Sentence : ");
yyparse();
yywrap();
}
Thank you so much.............................
In short:
For Lex steps to run:
- lex lex7.l
- gcc lex.yy.c
- a
For YACC steps to run:
- lex simple_compound.l
- yacc -d simple_compound.y
- gcc lex.yy.c y.tab.c
- a
A.Lex
1. download flex for windows
http://flex-windows-lex-and-yacc.software.informer.com/2.5/
2.install it
locatin: C:\Flex Windows\
3.open cmd
4.You need to change location as follows:
cd C:\Flex Windows\EditPlusPortable
5. Steps to run:
lex lex7.l
gcc lex.yy.c
a
Output:
Word Count : 13
Char Count : 80
Line Count : 7
codes:
lex7.l
%{
/*
*Program to count no of characters, words and lines
*/
#include<stdio.h>
#include<string.h>
int c=0,w=0,l=0;
%}
%%
[\t ]+ /* ignore whitespace */
[a-zA-z]+ {w=w+1; c=c+ yyleng;}
[\n ] {l=l+1;}
['{','}''(',')',.,",;] {c=c+1;}
%%
int main()
{
yyin= fopen("file1.txt","r");
yylex();
printf("\nWord Count : %d",w);
printf("\nChar Count : %d",c);
printf("\nLine Count : %d\n",l);
}
int yywrap()
{
}
file1.txt
public class Lex
{
public static void main(String[] args)
{
System.out.println("Hello");
}
}
B.Yacc
steps to run:
- lex simple_compound.l
- yacc -d simple_compound.y
- gcc lex.yy.c y.tab.c
- a (type just a if ur using linux then use ./a.out)
%{
#include"y.tab.h"
extern yylval;
%}
%%
[\t ]+
is|am|are|were|was|be|being|been|do|does|did|will|would|should|can|could|has|have|had|go|rides|paints return VERB;
he|she return SUB;
poster|bike return OBJ;
while return CONJ;
[a-zA-z]+ printf("\n%s: Not Defined",yytext);
%%
simple_compound.y
%{
#include<stdio.h>
%}
%token SUB VERB OBJ CONJ
%%
sentence:simple|compound
simple:SUB VERB OBJ {printf("\nValid Simple Sentence");};
compound:simple CONJ simple {printf("\nValid Compound Sentence");};
%%
yywrap()
{
return 0;
}
yyerror()
{
printf("\nInvalid Sentence !!!\n");
}
main()
{
printf("\nEnter Sentence : ");
yyparse();
yywrap();
}
Thank you so much.............................
Great job make it more useful and practical oriented for compiler students
ReplyDelete