SQL解析器与Flex程序详解
1. SQL解析器主函数与Makefile
首先来看SQL解析器的主函数代码:
main(int ac, char **av) { extern FILE *yyin; if(ac > 1 && !strcmp(av[1], "-d")) { yydebug = 1; ac--; av++; } if(ac > 1 && (yyin = fopen(av[1], "r")) == NULL) { perror(av[1]); exit(1); } if(!yyparse()) printf("SQL parse worked\n"); else printf("SQL parse failed\n"); } /* main */此主函数的工作流程如下:
1. 检查命令行参数,若第二个参数为-d,则开启调试模式,同时调整参数指针和参数数量。
2. 若还有其他参数,尝试打开指定文件作为输入。若文件打开失败,输出错误信息并退出程序。
3. 调用yyparse()函数进行SQL解析,根据解析结果输出相应信息。
下面是SQL解析器的Makefile:
# Makefile for pmysql CC = cc -g LEX = flex YACC = bison CFLAGS