12.11算符优先分析

1. 已知算符优先关系矩阵如下表:


+


*


i


(


)


#


+


>


<


<


<


>


>


*


>


>


<


<


>


>


i


>


>


>


>


(


<


<


<


<


=


)


>


>


>


>


#


<


<


<


<


=

写出符号串(i+i)*i#的算符优先分析过程。

答:



关系


输入串


操作


#


<


( i + i ) * I #


移进


#(


<


i + i ) * I #


移进


#( i


>


+ i ) * I #


归约


#( N


<


+ i ) * I #


移进


#( N +


<


i ) * i #


移进


#( N + i


>


) * i #


归约


#( N + N


>


) * i #


归约


#( N


=


) * i #


移进


#( N )


>


* i #


归约


#N


<


* i #


移进


#N *


<


i #


移进


#N * i


>


#


归约


#N * N


>


#


归约


#N


#


接受

2.接上个作业(P121练习1),完成4),5)两个步骤。

1)计算FIRSTVT和 LASTVT。

2)找三种关系对。

3)构造算符优先关系表。

4)是否算符优先文法?

5)给出输入串(a,(a,a))#的算符优先分析过程。

(4)符合优先文法。

(5)(a,(a,a))



关系


输入串


操作


#


<


( a , ( a , a ) )#


移进


#(


<


a , ( a , a ) )#


移进


#( a


>


, ( a , a ) )#


归约


#( N


<


, ( a , a ) )#


移进


#( N ,


<


( a , a ) )#


移进


#( N , (


<


a , a ) )#


移进


#( N , ( a


>


, a ) )#


归约


#( N , ( N


<


, a ) )#


移进


#( N , ( N ,


<


a ) )#


移进


#( N , ( N , a


>


) )#


归约


#( N , ( N , N


>


) )#


归约


#( N , ( N


=


) )#


移进


#( N , ( N )


>


)#


归约


#( N , N


>


)#


归约


#( N


=


)#


移进


#( N )


>


#


归约


#N


#


接受

3.写出a+b*(c-d)+e/(c-d)↑n 的逆波兰表达式,三元式,四元式。

答:

逆波兰表达式:

abcd-*ecd-↑n/++

三元式:

(1)(- , c ,d)

(2)(* , b ,(1))

(3)(,(1), n)

(4)(/ , e ,(3))

(5)(+ , a ,(2))

(6)(+ ,(5),(4))

四元式:

(1)(- , c , d , t1)

(2)(* , b , t1 , t2)

(3)(↑ , t1 , n , t3)

(4)(/ , e , t3 , t4)

(5)(+ , a , t2 , t5)

(6)(+ , t5 , t4)

原文地址:https://www.cnblogs.com/Azan1999/p/12021583.html

时间: 2024-08-30 04:16:55

12.11算符优先分析的相关文章

编译原理——算符优先分析文法(附源代码)

算符优先分析文法 一.写在前面 算符优先分析文法是一种工具,在编译的过程中,隶属于语法分析环节,却又与中间代码的生成息息相关,编译可以分为五个阶段:词法分析.语法分析.语义分析(中间代码的生成).代码优化.目标代码生成.语法分析是指:在词法分析基础上,将单词符号串转化为语法单位(语法范畴)(短语.子句.句子.程序段.程序),并确定整个输入串是否构成语法上正确的程序.也就是说语法分析是检验输入串的语法是否正确,注意这里的语法正确,只是简单地符合自己定义的规范,而不能检测出运行时错误,比如"X/0&

软件构造——实验五 算符优先分析法

[实验目的] 掌握算符优先分析法的原理,利用算符优先分析法将赋值语句进行语法分析. [实验内容] (1)输入一个文法根据算符优先分析法,将表达式进行语法分析,判断一个表达式是否为算符优先文法 (2)输入一个句子进行分析 [实验要求] 1.根据文法求FIRSTVT集和LASTVT集 给定一个上下文无关文法,根据算法设计一个程序,求文法中每个非终结符的FirstVT 集和LastVT 集. 可参考算法描述如下: /*求 FirstVT 集的算法*/ PROCEDURE insert(P,a); IF

算符优先分析

已知算符优先关系矩阵如下表:   + * i ( ) # + > < < < > > * > > < < > > i > >     > > ( < < < < =   ) > >     > > # < < < <   = 写出符号串#(i+i)*i#的算符优先分析过程. 栈 关系 输入串 动作 # < (i+i)*i# 移进 #(

14 算符优先分析

1. 已知算符优先关系矩阵如下表:   + * i ( ) # + > < < < > > * > > < < > > i > >     > > ( < < < < =   ) > >     > > # < < < <   = 写出符号串(i+i)*i#的算符优先分析过程. 栈 关系 输入串 动作 # < (i+i)*i# 移进

编译原理之算符优先分析

1. 已知算符优先关系矩阵如下表:   + * i ( ) # + > < < < > > * > > < < > > i > >     > > ( < < < < =   ) > >     > > # < < < <   =  写出符号串(i+i)*i#的算符优先分析过程. 2.接上个文章两个步骤. 1)计算FIRSTVT和 LAST

关于中缀表达式的计算 和算符优先算法

中缀表达式计算:http://blog.sina.com.cn/s/blog_3fe961ae0100niq3.html 算符优先算法:http://blog.csdn.net/zhibudefeng/article/details/6937375 前中后缀表达式:http://blog.csdn.net/antineutrino/article/details/6763722/

2014年11月12~11月14日,杨学明老师《软件测试管理》内训在北京某银行软件中心成功举办!

2014年11月12~11月14日,北京天气呈现少有的APEC蓝,著名研发管理专家杨学明老师为某银行提供了三天的内训服务,此次培训由两部分组成,第一部分是<软件测试管理高级实务>.第二部分是<软件测试需求分析和测试设计>,三天的培训非常紧张,包括老师讲解,案例演练,专题研讨,过程衔接非常紧密,课堂气氛也比较轻松,来自该银行核心系统和网银两个事业部的同事参加了此次培训,包括开发,需求,测试和维护人员等,课程结束后,举行了考试,大家对三天的学习进行回顾和总结,并准备把这两天学习到知识结

ubuntu 12.04 安装 codeblock 12.11

一: Ubuntu  14.04版已经发布了,但本人还是12.04版的,主要是笔记本是双系统,担心升级之后造成不必要的麻烦.所以还在用12.04.在Linux环境下的 C/C++ 开发IDE中,Codeblocks是一个很不错的工具.  现在最新版的是Codeblocks 13.12了.  但我在安装Codeblocks 14.12出错了.(两种安装方法:1. 下载Codeblocks 13.12 包,然后 在命令行安装   2.直接在Ubuntu软件中心安装.都失败了.参考http://qtl

Linux-0.12内核sleep_on函数分析

sleep_on用于进程休眠,原型如下: void sleep_on(struct task_struct **p) 当进程访问某个互斥资源时,如果资源被另外进程占用,当前进程就需要休眠. 假设资源的结构如下: struct res { .... struct task_struct *wait; } 其实我们参考下文件系统的i节点就会发现,i节点也是一种资源,它的结构体中就有一个变量i_wait.那么我们就用i节点举例.如果进程访问某个i节点,发现i节点被锁住,当前进程就需要睡眠:sleep_