词法分析词法分析扫描((lexical analysis, scanning)一读入源程序的字符流,输出成为有意义的词素(lexeme)<token-name,attribute-value>一token-name由语法分析步骤使用一attribute-value指向相应的符号表条目,由语义分析/代码生成步骤使用例子 position = initial + rate * 60<id,3> <*,> <number, 4>一<id,1> <=,> <id, 2> <+,>
词法分析 • 词法分析/扫描(lexical analysis, scanning) – 读入源程序的字符流,输出成为有意义的词素(lexeme) – <token-name, attribute-value> – token-name由语法分析步骤使用 – attribute-value指向相应的符号表条目,由语义分析/代 码生成步骤使用 • 例子 – position = initial + rate * 60 – <id,1> <=, > <id, 2> <+, > <id,3> <*, > <number, 4>
语法分析(id,1)(=)(id, 2)《+)(id,3)(*)(60)语法分析器7(id, 2)60id,3·语法分析/解析(syntax analysis/parsing)一根据各个词法单元的第一个分量来创建树型的中间表示形式。通常是语法树(syntaxtree)一中间表示形式指出了词法单元流的语法结构
语法分析 • 语法分析/解析(syntax analysis/parsing) – 根据各个词法单元的第一个分量来创建树型的 中间表示形式。通常是语法树(syntax tree) – 中间表示形式指出了词法单元流的语法结构
语义分析?10(id,2)60(id,3)语义分析器(id,1(id,2)inttofloat(id,3)1★60语义分析(semantic analysis)一使用语法树和符号表中的信息。检查源程序是否满足语言定义的语义约束。一同时收集类型信息,用于代码生成,类型检查,类型转换
语义分析 • 语义分析(semantic analysis) – 使用语法树和符号表中的信息,检查源程序是否满 足语言定义的语义约束。 – 同时收集类型信息,用于代码生成,类型检查,类 型转换