首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >语法分析中检测到语法错误的语义分析

语法分析中检测到语法错误的语义分析
EN

Stack Overflow用户
提问于 2019-07-13 22:28:53
回答 1查看 204关注 0票数 0

我知道,需要进行语法分析才能确定给定的一系列标记在语言中是否合适(通过解析这些标记来生成语法树),并检测在解析输入代码期间发生的错误,这些错误是由语法错误的语句引起的。

我还知道,然后在语法树上执行语义分析以生成带注释的树,检查与语法形式无关的方面(比如表达式的类型正确性和使用前的声明),在代码被解析为语法正确之后,检测代码执行过程中发生的错误。

但是,我不清楚以下问题:

在语法分析器检测到语法错误的情况下,是否意味着不应该进行语义分析?或者,从错误中恢复(在语法分析中)应该使语义分析成为可能?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-07-14 05:52:32

当您编译一个不正确的程序时,您通常希望编译器通知您尽可能多的问题,以便您可以在再次编译程序之前修复它们。但是,您不希望编译器多次报告相同的错误,或者报告那些不是真正的错误,而是编译器被以前的错误弄糊涂的结果。

还是我把我的期望投射到你身上了?也许我应该用第一人称来写整个段落,因为它实际上是关于我对编译器的期望。也许你有不同的期望。或者你的期望和我的相似。不管它们是什么,您都应该编写编译器来满足它们。这基本上就是编写自己的编译器的意义所在。

所以,如果你和我一样期望,你可能想做尽可能多的语义分析,因为你有足够的信心。例如,您可能能够在某些函数中进行类型检查,因为这些函数中没有语法错误。另一方面,这是一项很大的工作,而且产生的错误信息总是没有帮助的。

这不是很精确,因为真的没有明确的答案。但你至少应该能够代表你自己回答你自己的问题。如果您的编译器在错误报告方面做得很糟糕,当您尝试使用编译器时,您会发现这令人沮丧,那么您应该努力使报告变得更好。(当然,时间是有限的,您很可能会觉得,如果编译器优化得更好,即使错误报告不是很好,编译器也会更好。)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57023271

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档