正式语言和编译器 30 问题

问题描述

让 G 是字母表 {a,b} 上的正则表达式的以下语法,带有替代运算符(+ 运算符)、连接(通过正则表达式并列呈现)、克林星(* 运算符)和括号:

R -> R + R | RR | R* | (R) | |

  1. 为 L(G) 的产生提供 LALR(1) 文法 G',它按照操作符的优先级和二元操作符的结合性的通常约定来解决 G 的歧义:替代和串联是左-联想; Kleene 星具有最高优先级(意味着它优先于串联和替代);串联优先于替代。

  2. 显示使用 G' 获得的 a+ba* 的推导树。

  3. 设计一个基于 G' 的 S 属性 SSD,以便在正则表达式 r 分析阶段生成用于识别 L(G) 的有限状态自动机。

我通过创建以下明确的语法解决了 1.:

R -> R + S | S
S -> ST | T 
T -> T* | U
U -> (R) | a | b

然后用这个语法我画了 a+b*a 的派生树。

问题在于第 3 题。

如果有人能帮助我,我将不胜感激!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)