Using lex-yacc check assignment statement in a C program
YACC FILE
Source Code:
%{
#include
void yyerror(char *);
int yylex();
%}
%token INC DEC ID NUM
%%
ass : ID opt ';' {printf("parsing successful");}
;
opt : '=' e
| INC
| DEC
;
e : e '+' t
| t
;
t : t '*' f
| f
;
f : '(' e ')'
| nid
;
nid : ID
| NUM
;
%%
void yyerror(char *s)
{
printf("\nparsing err ");
}
int main()
{
yyparse();
return 0;
}
Lex FILE
Source Code:
%{
#include "y.tab.h"
void yyerror(char *);
%}
%%
"++" {return INC;}
"--" {return DEC;}
[=,{}();] {return *yytext;}
[ \t\n]+ ;
[a-zA-Z_][a-zA-Z0-9_]* {return ID;}
[0-9]+ {return NUM;}
. {printf("\n\nlex err");}
%%
int yywrap()
{
return 1;
}
0 comments