User Defined Function
Using lex-yacc check user defined function in a C program YACC FILE Source Code: %{ #includevoid yyerror(char *); int yylex(); %} %token INT CHAR FLOAT VOID ID NUM %% c_function : dtype ID '(' par ')' '{' '}' {printf("parsing successful");} ; par : tpar | fpar ; tpar : dtype ID | dtype ID ',' tpar ; fpar : ; dtype : INT | CHAR | FLOAT | VOID ; %% 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;} "char" {return CHAR;} "float" {return FLOAT;} "void" {return VOID;} [=,{}();] {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; } OUTPUT: [cmsa1@localhost function]$ yacc -d function.y [cmsa1@localhost function]$ lex function.l [cmsa1@localhost function]$ cc y.tab.c lex.yy.c -o a [cmsa1@localhost function]$ ./a
Tags:
Lex & Yacc
0 comments