[原理] Lex Yacc规则格式

2018-04-02  本文已影响0人  CrazyTiger

历史

编译顺序

规则格式

Lex匹配规则
Yacc匹配规则
Lex文件格式
Lex预定义变量

Lex代码示例

ECHO
LineNo
变量名
字符统计

Yacc文法

Yacc的语法是BNF范式的变种。BNF文法可以用来表示上下文无关文法,大多数的编程语言都可以用BNF来表示。


文法
文法可以扩展的表达式
自底向上分析。默认放一个“.”在栈里面。shift操作:一个新的标识符入栈。reduce操作:使用文法进行规约。

Shift -Reduce冲突

例子中的第6步,E+E可以进行Reduce,但是也可以进行Shift。使用符号结合方向和优先级解决。

Reduce-Reduce冲突

id有两种Reduce结果:E或者T。

Yacc语法格式

语法格式

Yacc代码示例

示例使用

几次输入输出
第1次输入

下载地址

https://github.com/lexxmark/winflexbison

参考文章

上一篇 下一篇

猜你喜欢

热点阅读