【推荐】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