您的位置:首页 > 其它

lex和yacc 入门-- 计算器

2016-03-05 12:23 232 查看
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;

}

;
from : http://my.oschina.net/jackin/blog/370414
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: