parsing - 使用 Epsilon 或 Lambda 的语法
问题描述
所以我有一套语法
S -> X Y
X -> a X
X ->
Y -> b
Z -> a Z
Z -> a
我唯一对这个语法感到困惑的是 X 的第二个生产
那里什么都没有。这是否相当于使用 Epsilon ε 或 Lamda λ
我假设这只是语法符号的不同,但我想确定,因为我正在尝试构建第一个和后续集合
解决方案
ε 和 λ(有时是 Λ)都被不同的作者用来表示空字符串。在现代写作中,ε 更为常见,但您经常会在较旧的教科书中找到 λ,在更旧的教科书中找到 Λ。
使用这些符号的目的是使空序列可见。不管它是怎么写的,它是一个空序列,应该像在你的生产中一样阅读它,就像它什么都没有一样X ⇒
。
如果您很难理解符号没有任何意义的想法,那么您可能会喜欢阅读 Charles Seife 的《零:一个危险想法的传记》或罗伯特·卡普兰的《虚无:零的自然历史》,均发表在象征性的 2K 年,两者都探索了理解虚无概念的漫长而艰难的斗争。(“没有人出去买零鱼”——阿尔弗雷德·诺斯·怀特黑德)。
有人认为 Λ/λ 来自德语单词“leer”,意思是空的,而 ε 来自英语“empty”。曾经有一段时间德语在数理逻辑的学术讨论中比较普遍,所以这个理论似乎是合理的。
推荐阅读
- c# - 如何编写多个 RouteValues?
- mysql - 如何从 MySQL 中的 JSON 对象将键和值存储在表中
- google-apps-script - 在提交时将 Google 表单回复发送到指定的电子邮件地址
- javascript - 如何等到数据被获取并使用 redux 更新状态
- android - 无法使用标准 firebase 在管理员 firebase 用户下创建用户,因为它已启动当前用户
- php - 在 centos 上从 src 代码编译 PHP5.5 失败
- javascript - 从包含特定字符的字符串中获取单词。(像 # 或 @ 例如一个帖子规划师)
- canvas - 是否可以在画布上为每个操作设置一个过滤器?
- android - Android Studio 更新重复 Java 和 res 文件夹
- typescript - 具有联合类型的类型不存在属性