Compiler construction 词法分析器在符号表中填充标记的哪些属性的值

Compiler construction 词法分析器在符号表中填充标记的哪些属性的值,compiler-construction,lexical-analysis,symbol-table,Compiler Construction,Lexical Analysis,Symbol Table,由于令牌可能具有不同的属性,例如名称、类型、大小等。我不清楚哪些是由词法分析器填写的,哪些是由编译器的其他阶段填写的。由于不同的编译器可能表现不同,我们可以将gcc c编译器作为参考 有些主观,因为它取决于您正在构建的内容(编译器、解释器等)。另外,相当一般的描述: 词法分析(或扫描)会将源代码分解为“标记”或“词素”,但它们可能尚未放入符号表中 如果您实现了计算,则可以开始映射标识符(例如,标记为关键字等)。并且通常是令牌有资格进入符号表的第一个点。根据符号的不同,该点的符号属性可能是完整的

由于令牌可能具有不同的属性,例如名称、类型、大小等。我不清楚哪些是由词法分析器填写的,哪些是由编译器的其他阶段填写的。由于不同的编译器可能表现不同,我们可以将gcc c编译器作为参考

有些主观,因为它取决于您正在构建的内容(编译器、解释器等)。另外,相当一般的描述:

词法分析(或扫描)会将源代码分解为“标记”或“词素”,但它们可能尚未放入符号表中

如果您实现了计算,则可以开始映射标识符(例如,标记为关键字等)。并且通常是令牌有资格进入符号表的第一个点。根据符号的不同,该点的符号属性可能是完整的

后面的阶段,例如解析,可能引用符号并嵌入附加信息,例如范围、内部或外部引用、可见性、类型和大小等


代码生成将最终确定符号的任何属性,此时您正在编写二进制文件。

有些主观,因为它取决于您正在构建的内容(编译器、解释器等)。另外,相当一般的描述:

词法分析(或扫描)会将源代码分解为“标记”或“词素”,但它们可能尚未放入符号表中

如果您实现了计算,则可以开始映射标识符(例如,标记为关键字等)。并且通常是令牌有资格进入符号表的第一个点。根据符号的不同,该点的符号属性可能是完整的

后面的阶段,例如解析,可能引用符号并嵌入附加信息,例如范围、内部或外部引用、可见性、类型和大小等


代码生成将完成符号的任何属性,此时您正在编写二进制文件。

词法分析器只知道名称。它不知道类型,因此也不知道大小。它不知道范围。它除了名字什么都不知道。在语义分析过程中,所有其他内容都会被填写。词法分析器只知道名称。它不知道类型,因此也不知道大小。它不知道范围。它除了名字什么都不知道。在语义分析过程中,所有其他内容都会被填写。