14 算符优先分析

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)两个步骤。

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.尝试编写自下而上的语法分析程序。

可以只写表达式部分

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

逆波兰表达式:abcd-*+ecd-n↑/+

三元式:(1)(-,c,d)

    (2)(↑,(1),n)

    (3)(/,e,(2))

    (3)(-,c,d)

    (4)(*,b,(3))

    (5)(+,a,(4))

    (6)(+,(5),(3))

四元式:(1)(-,c,d,t1)

    (2)(↑,t1,n,t2)

    (3)(/,e,t2,t3)

    (4)(*,b,t1,t4)

    (5)(+,a,t4,t5)

    (6)(+,(3),(5),t6)

原文地址:https://www.cnblogs.com/momo-er/p/12021575.html

时间: 2024-11-14 11:11:56

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

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

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

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

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

算符优先分析

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

12.11算符优先分析

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/

编译原理-算符优先

/* *功能:算符优先 *作者:王文堃 *创建时间:2016/5/15 */ #include <iostream> #include <malloc.h> #include <stack> using namespace std; /* *任务一:构造FIRSTVT,LASTVT *任务开始时间:2016/5/15 *任务结束时间:2016/5/16 */ /* *任务二:构造算符优先表 *任务开始时间:2016/5/17 *任务完成时间:2016/5/17 */ /

DIV+CSS常见问题的14条原因分析

当你在一个浏览器里面做好,在其他浏览器里面却完全不是那么回事情.  很多时候,我们就只是去修补下,或者利用各个浏览器对代码支持的不一致,进行针对各个浏览器进行不同的定义.  其实浏览器的不兼容,我们往往是各个浏览器对于一些标准的定义不一致导致的,因此,我们可以进行一些初始化,很多问题都很轻松解决.  下面是14条特殊情况仅供参考:  1. 文字本身的大小不兼容.同样是font-size:14px的宋体文字,在不同浏览器下占的空间是不一样的,ie下实际占高16px,下留白3px,ff 下实际占高1

14、流程分析法

什么是流程分析法? 流程分析法主要是针对测试场景类型属于流程测试场景的测试项下的测试子项进行设计,是从白盒测试设计方法中的路径覆盖分析法借鉴过来的一种方法. -在白盒测试中,路径就是指函数代码的某个分支组合,路径覆盖法需要构造足够的用例覆盖函数的所有代码路径. -在黑盒测试中,若将软件系统的某个流程看成路径的话,则可以针对该路径使用路径分析的方法设计测试用例.优点:>降低了测试用例设计难度,只要搞清楚各种流程,就可以设计出高质量的测试用例来,而不需要太多测试方面的经验:>在测试时间较紧迫的情况