lex、yacc

lex和yacc 入门-- 计算器

一个人想着一个人 提交于 2019-12-20 00:32:48
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> lex 是自动生成词法分析器的工具,通过输入扩展名为.l的文件,输出词法分析器的C 语言代码。 flex是增强版的lex。 yacc是自动生成语法分析器的工具,通过输入扩展名为.y的文件,输出语法分析器的C语言代码。 bison是GNU项目所发布的yacc的功能扩充版。 myclac.l myclac.y 以上代码来之《自制编程语言》 注意:默认在MAC上编译会出现warning。需要在 #define YYDEBUG=1 下面添加 int yyerror(char const *str); int yylex(void); 这2行。 同时该计算器不支持:-1+2 或者 2+-1 这种表达式 所以在 primary_expression : DOUBLE_LITERAL 后面添加: | SUB DOUBLE_LITERAL { $$ = -1 * $2; } ; 来源: oschina 链接: https://my.oschina.net/u/919901/blog/370414