摘要: SLR(1)方法的出现,解决了大部分的移进和规约冲突、规约和规约的冲突。并且SLR(1)其优点是状态数目少,造表算法简单,大多数程序设计语言基本上都可用SLR(1)文法来描述。 但是仍然有一些文法,不能用SLR(1)解决。 例如: S->BB; B->aB; B->b; 该文法我们可以看到,在S-> 阅读全文
posted @ 2019-07-02 12:11 ISGuXing 阅读(9919) 评论(0) 推荐(0) 编辑
摘要: 由于LR(0)的能力实在是太弱了。例如: I = { X=>α·bβ, A=>α·, B=>α· } 这时候就存在两个冲突。 1、移进和规约的冲突; 2、规约和规约的冲突。 SLR(1)就是为了解决冲突而设计的,解决冲突的方法就是向后多看一个字符,这就是SLR(1)。 简而言之就是为每个非终结符,计 阅读全文
posted @ 2019-07-02 11:53 ISGuXing 阅读(9441) 评论(0) 推荐(0) 编辑
摘要: LR(0)是一种自底向上的语法分析方法。两个基本动作是移进和规约。 具体例子如下 已知文法G[E] (1) E→aА (2) E→bB (3) A→cА (4) A→d (5) B→cB (6) B→d 编写LR(0)分析算法,用于识别符号串是否为合法的句子。 设计方法 a.将文法 G[E]拓广为文 阅读全文
posted @ 2019-07-02 11:42 ISGuXing 阅读(11029) 评论(2) 推荐(0) 编辑
摘要: 算符优先分析不是一种规范规约法,但是该方法特别有利于表达式分析,宜于手工实现。 算符优先分析法和计算的过程相同,由此判断一个符号的左右符号优先级,从而确定是否可以规约。 对于任何两个可能相继出现的终结符 a 和 b ,它们之间的优先关系无非 >、=、<三种关系。 需要注意的是a<b,并不意味着 b 阅读全文
posted @ 2019-07-02 11:27 ISGuXing 阅读(4919) 评论(0) 推荐(0) 编辑