g码
代码解释器的设计与实现
词法分析
词法分析(线性分析或扫描)和词法分析程序(线性分析或扫描) )。
词法分析阶段是编译过程的最初阶段。 该阶段的任务是从左到右逐字读入源程序,即扫描构成源程序的文字流程,根据结构规则识别单词(也称为单词符号或符号)。 词法分析程序实现这个任务。 词法分析程序可以使用lex等工具自动生成。
语法分析
语法分析(Syntax analysis或Parsing )和语法分析程序(Parser ) )。
语法分析是编译过程的逻辑阶段。 语法分析的任务是根据词法分析将单词串组织成各种语法,例如“程序”、“语句”和“表达式”。 语法分析程序判断源程序在结构上是否正确,源程序的结构通过上下文相关语法进行描述。
语义分析
语义分析(Syntax analysis )。
语义分析是编译过程的逻辑阶段。 语义分析的任务是对结构正确的源程序进行上下文相关性质的审查,进行类型的审查。 例如,c程序片段:
int arr[2],b;
b=arr * 10;
源程序的结构是正确的。
语义分析确认类型并报告错误。 不能在表达式中使用数组变量。 赋值语句的右端和左端类型不一致。
雷克斯
词法分析程序的自动生成工具。 输入一系列描述语法规则的正则表达式,构建有穷机器人和穷机器人的驱动程序,生成词法分析程序。
雅虎
解析器的自动生成工具。 接受语言语法,构建lalr(1)分析程序。 因为它采用了语法引导翻译的思想,也可以接受用c语言描述的语义动作来构建编译器。 Yacc是Yet another compiler compiler的缩写。