解释 CFG 是否被非确定性下推自动机识别
上下文无关文法(CFG)被非确定性下推自动机(NPDA)明确识别,但编程语言通过确定性PDA转换为二进制(机器代码)。
这是因为它具有以下提到的影响-
如果编程语言应该通过NPDA翻译,那么对于一个给定的程序实例,我们将为binary(Machinecode)同一个程序生成多个版本,理想情况下不应该是这种情况。
对于给定的程序,只应生成1个版本的二进制代码,并且应在所有操作系统平台上保持一致。
输出将显着不同:如果我们有多个目标文件,那么在1种情况下,输出可能与预期一致,再次运行程序时,输出将有所不同,因为由于NPDA,编译过程发生了变化,因此目标代码生成也发生了变化.所以输出是变化的,在很多情况下会导致错误的输出。
语法的多种解释可能会导致无限循环:考虑一个场景,其中我们有一个带有终止条件的循环体。通过多种编译方式,许多关键字可能会被错误解释,如果没有评估正确的终止条件,这可能会导致无限循环。例如,for循环(i=0;i
难以调试-由于NPDA过程生成了多个版本的目标文件,我们会发现很难调试代码中的错误来修复它们。