繁体   English   中英

C编译器语法错误检测

[英]C Compiler syntax error detection

来自初学者级程序员-C编译器是否构建用于检测错误(例如缺少分号)的具体语法树?

或更笼统地说,C编译器如何检测语法错误?

C编译器构建具体的语法树吗

是的,或者至少在概念上是“抽象语法树”。

用于检测错误,例如缺少分号?

用于检测语法错误; 检测并删除语法错误之后。

解析过程中 ,如果遇到不是当前状态有效延续的令牌,就会检测到语法错误。 这是一个很大的主题。 唐·克努斯(Don Knuth)在上面写了一个怪兽书,已经20年了;-),但是已经有很多东西了。

简短的答案是肯定的,每个编译器都尝试从输入文件中构建一个解析树,并在失败时生成语法错误。

无论如何,为了使编译器准确地找出问题所在,需要更多的智能。 例如,编译器可能会尝试在分析中断处插入分号,然后查看是否可以解决语法错误。 如果是这样,则可能表明错误消息中缺少分号。

需要注意的是,标准已经很好地定义了C语法,而诸如“缺少分号”之类的错误消息则是对编译器的友好补充。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM