string - 使用 PDA,证明 ( x * y ) + x 是一个有效的字符串
问题描述
如果你能帮助我并解释它是如何完成的,我在 C 部分遇到了麻烦。提前谢谢你!
解决方案
(a) 据我所知,他们只是要求重写语法:
<E> -> <E> + <T>
<E> -> <E> - <T>
<E> -> <T>
<T> -> <T> * <F>
<T> -> <T> / <F>
<T> -> <F>
<F> -> (<F>)
<F> -> x
<F> -> y
(b) 他们想要 (x * y) + x 的推导:
( <T> -- <F> -- x
/ /
/ /
/ /
<E> -- <T> -- <F> -- <E> -- <T> -- *
/ \ \
/ \ \
/ \ \
<E> -- + ) <F> -- y
\
\
\
<T> -- <F> -- x
(c) 我们可以定义一个 NPDA,它不确定地将所有有效的派生推入堆栈,然后弹出输入以接受。堆栈看起来像这样:
stack input remaining
Z (x * y) + x
<E>Z (x * y) + x
<E>+<T>Z (x * y) + x
<T>+<T>Z (x * y) + x
<F>+<T>Z (x * y) + x
(<E>)+<T>Z x * y) + x
<E>)+<T>Z x * y) + x
<T>)+<T>Z x * y) + x
<T>*<F>)+<T>Z x * y) + x
<F>*<F>)+<T>Z x * y) + x
x*<F>)+<T>Z x * y) + x
*<F>)+<T>Z * y) + x
<F>)+<T>Z y) + x
y)+<T>Z y) + x
)+<T>Z ) + x
+<T>Z + x
<T>Z x
<F>Z x
xZ x
Z (empty)
推荐阅读
- javascript - React:在 dict 中使用 react-icon,然后从另一个组件中获取图标
- python - Plotly:如何在 Plotly Express 中注释多行?
- typo3 - TYPO3 升级 9.5-10.4 'SchedulerCommand' 未找到
- python-3.x - 熊猫数据框排序日期
- java - 休眠 - WrongClassException
- terraform-provider-gcp - google_artifact_registry_repository 似乎忽略了“depends_on”属性?
- python - 如何修复我用 Python 编写的“猜电影”游戏的逻辑
- sql - 如果 PostgreSQL 中没有匹配的行,我如何选择 null?
- google-cloud-functions - 如何在 Firebase 函数上运行 Amazon polly?
- ffmpeg - 如何使用 ffmpeg 在特定语言的 mp3 中添加评论