编译原理:算符优先分析

算符优先分析过程是自上而下的归约过程,但未必是严格的最左归约。也就是说,算符优先分析法不是一种规范归约法。

所谓算符优先分析法就是定义算符之间的某种优先关系,借助于这种关系寻找“可归约串”进行归约的一种方法。

一,算符优先文法

编译原理:算符优先分析_第1张图片

编译原理:算符优先分析_第2张图片

FIRSTVT

推出的第一个终结符集合

编译原理:算符优先分析_第3张图片

LASTVT

编译原理:算符优先分析_第4张图片

编译原理:算符优先分析_第5张图片

二,优先表构造

编译原理:算符优先分析_第6张图片

 先行后列

编译原理:算符优先分析_第7张图片

三,算符优先文法

素短语:至少含有一个终结符的短语(且不能拆分成最小)

编译原理:算符优先分析_第8张图片

  1. 移进 当栈顶终结符 < 或 = 当前输入符号时
  2. 归约 当栈顶终结符 > 当前输入符号时,在栈中寻找最左素短语进行归约
  3. 接受 当栈顶终结符=当前输入符号=‘#’       时,分析成功结束
  4. 出错 当栈顶终结符与当前输入符号没有优先关系时
分析:i1+i2*i3
1 # i+i*i# # 移进i
2 #i +i*i# i>+ 归约F→i
3 #F +i*i# #<+ 移进+
4 #F+ i*i# + 移进i
5 #F+i *i# i>* 归约 F→i
6 #F+F *i# +<* 移进*
7 #F+F* i# * 移进i
8 #F+F*i # i># 归约 F→i
9 #F+F*F # *># 归约T→T*F
10 #F+T # +># 归约 E→E+T
11 #E # #=# 接受

你可能感兴趣的:(计算机网络/编译原理)