parsing - 解析表中非终结符 A 的可为空性

标签 parsing compiler-construction nullable

鉴于以下语法,为什么说 Z 不可为空

X -> Y | a
Y -> c | epsilon
Z -> X Y Z | d

最佳答案

因为它不包含epsilon(空)。例如,Y 可以为 null,因为 Y 可以定义为 epsilon。与X 一样,因为X 被定义为Ya。如果我们将Y设置为epsilon,那么X也是epsilon

有趣的是,如果 Z 被定义为 X Y,那么 Z 也有可能可以为空,因为 XY 都可以设置为 epsilon (如上所述),从而使 Z epsilon,但因为 Z 必须以 Z 结尾,最终必须以终结符 d 结尾(为什么?),< strong>Z 不可为空。

关于parsing - 解析表中非终结符 A 的可为空性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22689245/

相关文章:

PHP:从本地化格式解析日期

java - 使用 GSON 将 JSON 解析为 Java 对象

mysql - 如何修复MySQL错误#1064?

php - 如何从 PHP 命令行捕获 stderr

java - Hibernate 忽略 ManyToMany 连接列的可空性

c# - 将可空数组复制到相同基类型的非可空数组的有效方法?

c++ - 了解 PNG 文件格式 IDAT 段

c++ - 如何在 OpenCL 内核中使用 C++ 模板?

c++ - 为什么我可以在 C 而不是 C++ 中设置一个匿名枚举等于另一个?

c# - 不同类中的相同变量名,但一个可以为空