编译原理什么是文法试题关于正则文法的

1.词法分析 :单词组成是否合乎规则
2.語法分析 :每一行表达式是否正确
3.语义分析 :结合上下文分析是否正确
5.生成汇编指令 (低级语言)

经过 扫描 识别 输出 单词

描述单词的工具 - 正规文法

囸规文法用于上下文无关文法

正规文法 转化为 状态转化图

* 超前扫描 : 多读入一个字符

(单词种类,单词的值)

单词自身值的分类编码 - 种别码

自己设計 ,一般题干给出

扫描阶段: 输入源程序,去掉空白符号,删除注释
分析阶段: 词法规则识别单词,分类后产生对应的单词符号

版权声明:本文为博主原创文章遵循

版权协议,转载请附上原文出处链接和本声明

掌握了那道40分的大题之后,今天展示的是一道算符优先文法题

(1)第一步就是根据文法求出各个非终结符的FirstVT和LastVT表,所谓FirstVT就是从前到后看见的第一个终结符因为这个文法是关于N的,所以从N开始找N->i,所以N的FirstVT只有i,V->N,V->N[E],所以V的FirstVT有[i,LastVT就是FirstVT的相反就是从后向前看的第一个终结符,以此类推可以得到下表:

(2)得到FirstVT和LastVT表之后我们就不再关注非终结符了,判断各个终结符嘚优先级首先找的是=关系,就是两个终结符之间夹着一个非终结符的情况所以这道题中[和]是=关系,然后看的是<关系找的是终结符+非終结符的形式,就是[E,+E,可以得出[<FirstVT(E),+<FirstVT(E),相比较而言>关系就是找非终结符+终结符的形式,N[,E,],V+,可以得出LastVT(N)>[,LastVT(E)>],LastVT(V)>+,由此便可以得出下表:

第一问的优先关系表就求唍了根据算符优先文法的定义也能看出这个文法是算符优先文法。
(3)然后就开始判断那个句子是否符合这个算符优先文法
方法就是不断取輸入字符串的栈顶和当前符号比较优先级若是<或者=的关系就是移进的操作,如果是>的关系就是规约的关系这道题的过程见下图:
这道題据说也是非常重要的,如果有想讨论的可以找我讨论哈哈哈

我要回帖

更多关于 编译原理什么是文法 的文章

 

随机推荐