对此可能有一个非常明显的答案,但我想知道编译器如何知道我的错误在哪一行代码上。在某些情况下,它甚至知道该列。
我能想到的唯一方法是将输入字符串标记为二维数组。这将存储 [行][ token ]。
C/C++ 可以标记为 1 个长的一维数组,这可能会更有效率。我想知道保留行信息的常用解析方法是什么。
最佳答案
其实大部分都包含在the dragon book中了. 编译器进行 Lexing/Parsing,即:将源代码转换为树表示。 这样做时,每个关键字变量等都与行号和列号相关联。
然而,在解析过程中,故障的确切来源可能会丢失,信息可能会丢失。
关于c++ - c/c++编译器如何知道错误在哪一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21555119/