栏目:炒股赚钱 作者:网上配资股票 更新:2026-06-21 阅读:1
<{网上配资股票}>证券投资如何用自下而上分析法选股?{网上配资股票}>
第五章 语法分析—自下而上分析
主 要 内 容
本章学习自下而上的分析技术,就是从输入串开始,逐步进行“归约”,直到规约到文法的开始符号证券 自下而上分析法,或者说,从语法树的末端开始,逐步向上归约,直到根结。
基本概念
算符优先分析法
LR分析法
5.1 自下而上分析的基本问题
归约
规范归约
分析栈的使用与语法树的表示
归约
自下而上的分析比自顶向下方法强大,但构造分析算法不易手工完成。
自下而上分析使用显式符号栈完成分析。
分析栈可存放终结符,非终结符。
分析开始栈为空,分析成功栈中只剩开始符号。
移进、归约
自底向上的分析程序有两种可能的动作:1)移进:将终结符从输入串的开头移进到栈的顶部。2)归约:假设文法有产生式A->,将栈顶部的串归约为非终结符A。
自底向上分析程序由此也称作移进—归约分析程序。
移进-归约分析程序将终结符从输入移进到栈直到栈顶能执行一个归约。
例子:P83
文法G为 :(1) S →aAcBe (2) A →b
(3) A →Ab(4) B →d
步骤:
动作:
操作 :把栈顶的一串符号用某个产生式的左部符号来代替。
要识别的输入串:
可规约串的定义不同产生了不同的自下而上的语法分析方法:
可归约串
各种不同的自下而上的分析的共同点:
边输入单词符号,边规约
自上而下的语法树
在第3步中,把栈顶b规约为A
在第8步中,把栈顶d规约为 B
在第5步中,把栈顶Ab规约为A
在第10步中,把栈顶aAcBe规约为 S
这样判断栈顶的符号串的可规约性证券 自下而上分析法,如何规约?
几个概念:P85 短语、直接短语和句柄
规范规约:P86
规范规约的实质:在移进过程中,当发现栈顶呈现句柄时就用相应的产生式的左部符号进行替换。
规范句型:P86
规范规约
句柄
非形式地说,一个串的“句柄”是和一个产生式右部匹配的子串。
把句柄归约成该产生式左部的非终结符代表了最右推导逆过程的一步。
在很多情况下,匹配某产生式A→β右部的最左子串β不是句柄。这个产生式归约产生的串不能归约成开始符号。
短语、直接短语和句柄的求法
短语:子树的末端结点构成的符号串
直接短语:简单子树(只有父子两代)的末端结点构成的符号串
句柄:最左简单子树的末端结点构成的符号串
(1) S →aAcBe (2) A →b
(3) A →Ab(4) B →d

现在该明白了为什么在第5步中,把栈顶Ab规约为A,而不是把栈顶b规约为A(因为这时Ab是句柄,而b不是句柄)
求短语、直接短语和句柄
文法5.2的句型E+T*F+i
句型E+T*F+i的短语有:T*F、E+T*F、i 、E+T*F+i
直接短语有: T*F、i
句柄是: T*F
练习:求文法5.2的句子i1*i2+i3的短语、直接短语和句柄
文法5.2:E →T|E+T
T →F|T*F
F →i|(E)
求短语、直接短语和句柄
已知文法G:S →AB,A →Aa |bB,B →a|Sb
求该文法的句型baSb的句柄
ba、a和Sb是短语;a和Sb是直接短语,a是句柄
对于文法G:
E → E+T | E-T | T
T → T*F | T/F | F
F → i | (E)
(1)证明 E +T/F *( i+i) 是G的一个规范句型;
(2)指出该句型所有的短语、直接短语、句柄。
课后练习:
文法:E → E+T | E-T | TT → T*F | T/F | F
F → i | (E)的句型: E+T/F *( i +i)
E+T/F *( i +i)的最右推导过程:
E → E+T → E+T *F → E+T *(E) → E+T *( E+T )→ E+T *(E+F) → E+T *(E+i) → E+T *(T+i) → E+T *(F+i) → E+T *(i+i) → E+T/F *( i +i)
能由最右推导得出就证明该句型是个规范句型。
短语: T/F, i1 , i2 , i1+ i2 ,(i1+ i2 ) , T/F*(i1+ i2 ), E+T/F*(i1+ i2 )直接短语: T/F , i1 , i2 句柄: T/F
符号栈的使用与语法树的表示
栈是语法分析的一种基本数据结构。
符号栈的四类操作
移进:把输入串的一个符号移进栈。
规约:发现栈顶呈现可规约串,并用适当的符号替换该符号串。
接受:宣布最终分析成功。
出错:发现栈顶的内容与输入串相悖,分析工作无法正常进行。
移进-归约分析程序描绘出输入串的最右推导的逆序。
为了判断要完成的动作,自底向上的分析程序需要在栈内看得更深,不仅仅在顶部。且需和输入中的记号一起考虑。
移进归约分析程序:
1)将终结符从输入移进到栈;
2)在分析栈顶形成一个能执行归约的产生式的右边。
3)位于栈顶部的符号串匹配归约,用该产生式的左部符号代替这个子串。
4)每步选则恰当的子串,产生最右推导的逆过程。
算符优先分析
三种优先关系 P89
ab
注意:a a
算符文法
定义:一个文法的任一产生式的右部都不含两个相继的非终结符,即不存在…QR…
例子:文法G1:E →EAE|(E)|-E| i A →+|-|*|/(不是)
文法G2:E →T|E+T T →F|T*FF →i|(E) (是)
算符优先文法P90
注意:是文法中的任何终结符对(a证券投资如何用自下而上分析法选股?,b)

至多满足三个关系之一。(优先表)
例子:文法G1:E →E+E| E*E |(E)| i不是算符优先文法,因为+ *
算符优先分析中的可归约串
可归约串——最左素短语 1)素短语:至少含一个终结符,并且初自身外不再含任何更小的素短语的短语; 2)最左素短语:位于句型最左边的那个素短语。
求法:类似与句柄的求法 例子:文法5.2的句子i 1* i 2+i3
素短语:i 1, i 2,i3
最左素短语:i 1
算符优先分析P93
(1)将输入串R1R2…RK依次逐个进符号栈,直到符号栈顶元素Sj与下一个待输入的符号RK的优先关系满足Sj>RK为止;
(2)最左素短语的尾部Sj出现在符号栈顶,由此向前在栈中找到最左素短语的头部Si(就是找到第一个Sib
构造算符优先表的例子
构造文法G(E):
E →T|E+T
T →P|T*P
P →i
的优先表
(1)的构造P → a…或P → Q a …,则a (P);
文法中E → E+…,得(E)={+};
T → T*…,得(T)={*};
P →i ,得(P)={i};
(2)若a(Q)且P→Q… 则a (P)
文法中T →P,得(P) (T)={*, i};
E →T ,得(T) (E)={*,i ,+};
最终结果 (T)={*, i};(E)={*,i ,+};
(P)={i}
构造算符优先表的例子
构造文法G(E):
E →T|E+T
T →P|T*P
P →i
的优先表
(1)的构造P → … a或P → … aQ ,
则a (P);
文法中E → … +T ,得(E)={+};
T → … *P,得(T)={*};
P →i ,得(P)={i};
(2)若a(Q)且P→… Q则a (P)
文法中T →P,得(P) (T)={*证券投资如何用自下而上分析法选股?, i};
E →T ,得(T) (E)={*,i ,+};
最终结果: (T)={*, i}; (E)={*,i ,+};
(P)={i}
构造文法G(E):
E →T|E+T T →P|T*P P →i的优先表
(1)对P →…ab…或P →…aQb…,有a=b
(2)对于后选式P → … aP…,任何b (P),则a
(3)对于后选式P → … Pb…,任何a (P),则a>b
1)本例中没有满足条件(1)的终结符号对
2)E→ … +T ,得+ < (T)={*, i};有+ < *, + < i
T → … *P,得* < (P)={i};有* < i
3) E → E+…,得(E)>+;有+ > +, *> + ,i > +
T → T*…,得 (T) > *;有*> *, i > *

