c++ - c/c++编译器如何知道错误在哪一行

标签 c++ c parsing

对此可能有一个非常明显的答案,但我想知道编译器如何知道我的错误在哪一行代码上。在某些情况下,它甚至知道该列。

我能想到的唯一方法是将输入字符串标记为二维数组。这将存储 [行][ token ]。

C/C++ 可以标记为 1 个长的一维数组,这可能会更有效率。我想知道保留行信息的常用解析方法是什么。

最佳答案

其实大部分都包含在the dragon book中了. 编译器进行 Lexing/Parsing,即:将源代码转换为树表示。 这样做时,每个关键字变量等都与行号和列号相关联。

然而,在解析过程中,故障的确切来源可能会丢失,信息可能会丢失。

关于c++ - c/c++编译器如何知道错误在哪一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21555119/

相关文章:

c++ - 所以我给自己弄了一个线程池任务管理器系统。我应该从现在开始只使用它来创建所有线程吗?

c++ - 递归缺陷——这段代码哪里出错了?

C++ 使用带任务列表的命令提示符扫描进程 ID

c - 无法从txt文件读取数据,并保持返回值3221225477

c - 将 CSV 文件中的数据添加到结构中

c++ - 指针非类型模板参数

c - 在 Scala 中映射 C 结构

c# - 如何评估 c#/.net 中的数学表达式

sharepoint - 使用日志解析器解析不同文件夹中的大量日志

java - Java中将String格式的日志记录划分为列