yaa and lex

目录

lex就是语法扫描器,yacc就是语法分析器。
lex 源文件中的yywrap函数是必须的,因为给出了这个函数实现之后可以不需要依赖flex库了。
yywrap直接返回1,表示输入已经结束了。
基本的lex文件:

1
%{ int yywrap(void); %} %% %% int yywrap(void) { return 1; }

基本的yacc文件:

1
2
%{ void yyerror(const char *s); %} %% program: ; %% void yyerror(const char *s) { } int main() %% {
yyparse(); return 0; }

yacc文件中的代码被%%分成3个部分,第一部分表示要写入到c文件的c/c++代码,由%{和%}括起来;中间部分是yacc的语法规则;第三部分是可以直接写入c/c++代码,不需要任何的修饰。

本站总访问量