【发布时间】:2023-03-08 16:10:01
【问题描述】:
我一直在尝试研究源代码解析器,经常会发现有人在谈论解析语法。
所以我想知道源代码解析器和语法解析器有什么区别,它们是一样的吗?
【问题讨论】:
标签: parser-generator
我一直在尝试研究源代码解析器,经常会发现有人在谈论解析语法。
所以我想知道源代码解析器和语法解析器有什么区别,它们是一样的吗?
【问题讨论】:
标签: parser-generator
短语“源代码解析器”本身就很清楚:这是一种解析源文本的机制,使用基于正式语法的解析器生成器引擎或某种手动编码(通常是递归下降) parser 非正式地从语法派生而来。仅从短语中不清楚“源代码解析器”的结果是什么;它可能只是“是的,这是有效的语法”,更常见的是“产生解析或抽象语法树”,或者它可能(草率地)“完整的抽象语法树加上符号表加上控制和数据流分析”。
“语法解析器”这个短语我遇到的不多(我在这个领域工作了很多)。这可能是来自其他来源的乱码。在没有广为人知的定义的情况下,人们会猜测这意味着 a) 由形式语法的解析器生成引擎驱动的“源代码解析器”,或 b) 解析语法(即也是一种源代码),类似于短语“Fortran parser”。对于后者,我倾向于编写“语法解析器”以避免混淆,尽管“Fortran 解析器”非常清晰。
您使用了第三个术语,“解析语法”,我也很少遇到。这很可能意味着上一段中的 b)。
您的条款从何而来?
【讨论】:
这种说法是不对的。这有3个错误。它应该是:
Bison 是一个通用的解析器生成器,
我的目的不是批评,而是让人们使用正确的术语。
在这个问题上已经有足够的误解了。
【讨论】: