Declaration Statement

Using lex-yacc check declaration statement in a C program. YACC FILE Source Code: %{ #include void yyerror(char *); int yylex(); %} %token INT FLOAT CHAR ID VOID MAIN %% stmt : VOID MAIN '(' ')' '{' dec_stmt '}' {printf("Parsing Successful");} ; dec_stmt :sdec |sdec dec_stmt ; sdec :datatype varlist ';' ; datatype :INT |FLOAT |CHAR ; varlist :ID |ID ',' varlist ; %% void yyerror(char *s) { printf("\nparsing err "); } int main() { yyparse(); return 0; } Lex FILE Source Code: %{ #include "y.tab.h" void yyerror(char *); %} %% "int" {return INT;} "float" {return FLOAT;} "char" {return CHAR;} "void" {return VOID;} "main" {return MAIN;} [,{}();] {return *yytext;} [ \t\n]+ ; [a-zA-Z_][a-zA-Z0-9_]* {return ID;} . {printf("\n\nlex err");} %% int yywrap() { return 1; } OUTPUT: [cmsa1@localhost cdeclaration]$ yacc -d cdec.y [cmsa1@localhost cdeclaration]$ lex cdec.l [cmsa1@localhost cdeclaration]$ cc y.tab.c lex.yy.c -o a [cmsa1@localhost cdeclaration]$ ./a

Share:

0 comments