- 10
- 0
- 约3.93千字
- 约 5页
- 2017-02-12 发布于北京
- 举报
黄金组合-lex
从lexyacc说到编译器(3.范式文法)
作者:tangl_99
QQ:8664220
msn:tangl_99@
email:tangl_99@
从这一节开始,我们就算进入编译器构造的正题了.不得不说,前面的词法扫描器在整个编译器部分只是个很小很小的组成,而这两节讲述的语言构造器才能真正为我们的编译工作起到重要的作用.这些东西相信大家在大学的编译原理的课程已经学了不少,那么本文我也只是大致地带过,让大家回忆起大学的知识,重要的yacc使用技巧等等,我将在后面的内容讲出.
例3.1
exp - exp op exp | (exp) | number
op - + | - | *
这里就是一个定义的带有加法,减法,乘法的简单整数算术表达式的文法.其中粗体表示的是终结符号,也就是不能有产生式生成的符号.而exp,op就是非终结符,它们都是由一个”-”符号来产生的.
比如100 + 222 *123123 –(888+11)就是符合上述文法的具体的表达式.
注意,在文法定义中,是可以递归的.所以exp产生式右边的式子中可以再次出现exp.
这里的|和正则表达式一样,表示的选择的意思,也就是说,exp可以是exp op exp或者(exp)再或者number.
下面让我们看看编译原理及实践书中的一个关于BNF文法的介绍.
比如说我们有个数学表达式(34-3)*42,然后我
原创力文档

文档评论(0)