《编译原理》一道关于逆波兰式的作业题(学委推导出了逆波兰式的数学公式表示)

考 虑 下 面 的 上 下 文 无 关 文 法 : 考虑下面的上下文无关文法: S → S S ∗    ∣    S S +    ∣    a S → SS* \; | \; SS+ \; | \; a SSSSS+a
( 1 ) . 表 明 通 过 此 文 法 如 何 生 成 串 a a + a ∗ , 并 为 该 串 构 造 语 法 树 (1). 表明通过此文法如何生成串aa + a*,并为该串构造语法树 (1).aa+a
( 2 ) . 该 文 法 生 成 的 语 言 是 什 么 ? (2). 该文法生成的语言是什么? (2).

解 : 解:
( 1 ) .      S ⇒ S S ∗ ⇒ S a ∗ ⇒ S S + a ∗ ⇒ S a + a ∗ ⇒ a a + a ∗ \qquad(1). \;\; S ⇒ SS* ⇒ Sa* ⇒ SS+a* ⇒ Sa+a* ⇒ aa+a* (1).SSSSaSS+aSa+aaa+a
可 为 该 推 导 序 列 构 造 语 法 树 如 下 : \qquad\qquad 可为该推导序列构造语法树如下:

S
S
S
a
S
a
+
S
a
*

( 2 ) .      \qquad(2). \;\; (2). 由 规 则 { S → a S → S S ∗    ∣    S S + 可 知 , 一 个 串 可 以 由 两 个 串 及 一 个 紧 跟 其 后 的 运 算 符 { + ∗ } 组 成 由规则\begin{cases} S → a \\ S → SS* \; | \; SS+ \end{cases}可知,一个串可以由两个串及一个紧跟其后的运算符\{+ \quad *\}组成 {SaSSSSS+{+}
这 个 语 言 显 然 定 义 了 字 符 a 在 运 算 集 { + ∗ } 上 的 逆 波 兰 式 \qquad\qquad 这个语言显然定义了字符a在运算集\{+ \quad * \}上的逆波兰式 a{+}


下 面 附 上 咱班学委 ‾ 苦 思 一 天 所 想 到 逆 波 兰 式 的 数 学 表 达 式 , 以 及 老 师 的 理 解 思 路 \qquad\qquad 下面附上\underline{\textbf{咱班学委}}苦思一天所想到逆波兰式的数学表达式,以及老师的理解思路 咱班学委

数学表达式 \qquad\qquad \textbf{数学表达式} 数学表达式
{    a w 1 w 2 ⋯ w k    ∣    w i = a A i ( +    ∣    ∗ ) B i ,    A i , B i , k ∈ N , 其 中 ∑ i = 1 k A i = ∑ i = 1 k B i , 且    ∀    j ≤ k    有 ∑ i = 1 j A i ≥ ∑ i = 1 j B i    } \qquad\qquad\qquad\qquad \begin{aligned} \{ \; a w_1 w_2 \cdots w_k \; | \; & w_i = a^{A_i} (+ \; | \; *)^{B_i}, \; A_i, B_i, k ∈ N, \\ & 其中 \sum\limits_{i=1}^{k}A_i = \sum\limits_{i=1}^{k}B_i, \\ & 且 \; \forall \; j \le k \;有 \sum\limits_{i=1}^{j}A_i \ge \sum\limits_{i=1}^{j}B_i \; \} \end{aligned} {aw1w2wkwi=aAi(+)Bi,Ai,Bi,kN,i=1kAi=i=1kBi,jki=1jAii=1jBi}

理解思路 \qquad\qquad \textbf{理解思路} 理解思路
做 出 状 态 转 换 图 如 下 : \qquad\qquad\qquad\qquad 做出状态转换图如下:
\qquad\qquad\qquad\qquad
根 据 这 个 状 态 转 换 图 构 造 出 的 自 动 机 其 实 是 一 个 无 限 状 态 自 动 机 \qquad\qquad\qquad\qquad 根据这个状态转换图构造出的自动机其实是一个无限状态自动机

从 这 个 状 态 转 换 图 来 看 \qquad\qquad\qquad\qquad 从这个状态转换图来看
①    S 到 Z 的 第 一 个 状 态 转 换 , 需 要 1 次 a \qquad\qquad\qquad\qquad\qquad ① \; S到Z的第一个状态转换,需要1次a SZ1a
②    Z 到 A 、 B 、 C 等 状 态 , 可 以 经 过 若 干 组 【 连 续 的 a 和 连 续 的 ( +    ∣    ∗ ) 】 \qquad\qquad\qquad\qquad\qquad ② \; Z到A、B、C等状态,可以经过若干组【连续的a和连续的(+ \; | \; *)】 ZABCa(+)
③    Z 到 A 、 B 、 C 等 状 态 , 需 要 的 a 的 总 次 数 必 然 比 需 要 的 ( +    ∣    ∗ ) 的 总 次 数 多 \qquad\qquad\qquad\qquad\qquad ③ \; Z到A、B、C等状态,需要的a的总次数必然比需要的(+ \; | \; *)的总次数多 ZABCa(+)
④    Z 经 过 若 干 次 回 到 Z 终 态 , 需 要 的 a 的 次 数 必 然 等 于 需 要 的 ( +    ∣    ∗ ) \qquad\qquad\qquad\qquad\qquad ④ \; Z经过若干次回到Z终态,需要的a的次数必然等于需要的(+ \; | \; *) ZZa(+)

那 么 \qquad\qquad\qquad\qquad 那么
根 据 ① ② , 可 以 知 道 表 达 式 的 形 式 为 a w 1 w 2 ⋯ w k , w i = a A i ( +    ∣    ∗ ) B i , A i , B i , k ∈ N \qquad\qquad\qquad\qquad\qquad 根据①②,可以知道表达式的形式为a w_1 w_2 \cdots w_k,w_i = a^{A_i} (+ \; | \; *)^{B_i},A_i, B_i, k ∈ N aw1w2wkwi=aAi(+)BiAi,Bi,kN
根 据 ③ , 可 以 知 道 存 在 约 束 : ∀    j ≤ k    有 ∑ i = 1 j A i ≥ ∑ i = 1 j B i \qquad\qquad\qquad\qquad\qquad 根据③,可以知道存在约束:\forall \; j \le k \;有 \sum\limits_{i=1}^{j}A_i \ge \sum\limits_{i=1}^{j}B_i jki=1jAii=1jBi
根 据 ④ , 可 以 知 道 存 在 约 束 : ∑ i = 1 k A i = ∑ i = 1 k B i \qquad\qquad\qquad\qquad\qquad 根据④,可以知道存在约束:\sum\limits_{i=1}^{k}A_i = \sum\limits_{i=1}^{k}B_i i=1kAi=i=1kBi

于 是 就 总 结 出 了 逆 波 兰 式 的 数 学 表 达 式 如 下 : \qquad\qquad\qquad\qquad 于是就总结出了逆波兰式的数学表达式如下:

{    a w 1 w 2 ⋯ w k    ∣    w i = a A i ( +    ∣    ∗ ) B i ,    A i , B i , k ∈ N , 其 中 ∑ i = 1 k A i = ∑ i = 1 k B i , 且    ∀    j ≤ k    有 ∑ i = 1 j A i ≥ ∑ i = 1 j B i    } \qquad\qquad\qquad\qquad\qquad\qquad \begin{aligned} \{ \; a w_1 w_2 \cdots w_k \; | \; & w_i = a^{A_i} (+ \; | \; *)^{B_i}, \; A_i, B_i, k ∈ N, \\ & 其中 \sum\limits_{i=1}^{k}A_i = \sum\limits_{i=1}^{k}B_i, \\ & 且 \; \forall \; j \le k \;有 \sum\limits_{i=1}^{j}A_i \ge \sum\limits_{i=1}^{j}B_i \; \} \end{aligned} {aw1w2wkwi=aAi(+)Bi,Ai,Bi,kN,i=1kAi=i=1kBi,jki=1jAii=1jBi}

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

God-Excious

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值