Flex File
%{
#include “if.tab.h”
#include<stdlib.h>
%}
%%
if {return IF;}
“else if” {return ELSEIF;}
else {return ELSE;}
“=” {return EQUAL;}
“(” {return BRO; }
“)” {return BRC; }
“{” {return CBO; }
“}” {return CBC; }
“;” {return SEMI; }
“>=”|”<=”|”==”|”!=”|”<“|”>”|”++”|”–” {
yylval = *yytext;
return multiop;
}
[0-9]+ {yylval=*yytext;return NUM;}
[a-zA-Z]+ {yylval=*yytext;return ID;}
[ \t] ; /* skip whitespace */
%%
int yywrap(void)
{
return 1;
}
Bison File
%{
#include <stdio.h>
void yyerror(char *s);
%}
%token IF BRO ELSE BRC CBO CBC SEMI EQUAL NUM ID ELSEIF multiop
%%
program: program State ‘\n’
|
;
State: IF BRO ID EQUAL ID BRC CBO E1 CBC ELSE CBO ID SEMI CBC {printf(“Accept \n”);}
;
E1:A
| A E1
;
A:IF BRO ID EQUAL ID BRC CBO ID SEMI CBC
| A B
;
B: ELSE CBO ID SEMI CBC
;
%%
void yyerror(char *s)
{
{printf(“\n Syntax is Wrong”);}
}
int main(void)
{
yyparse();
return 0;
}