词法分析
词法分析的输入
由用户指定输入文件名inName,默认为PascalProgram.pas,里面保存了PASCAL-S源程序。
词法分析的输出
记号序列,以及词法错误信息(如果有词法错误的话)。词法错误信息保存在vector
词法分析与语法分析的互联接口
记号序列,以yylex的返回值表示记号编号,属性保存在YYSTYPE类型的结构体指针yylval指向的结构中。
接口 | 描述 |
---|---|
int yylex(); | 语法分析程序每调用一次该程序,可以获得一个记号编号 |
YYSTYPE yylval; | 语法分析程序每调用一次yylex,获得的记号属性保存在yylval指向的结构体中 |
语法分析
语法分析的输入
语法分析的输出
抽象语法树,语法错误信息。语法错误信息保存在vector
语法分析和语义分析的互联接口
接口 | 描述 |
---|---|
_Program *ASTRoot | 抽象语法树的根节点指针 |
语义分析
语义分析的输入
语义分析的输出
经过注释的抽象语法树和保存了完整信息的符号表,语义错误信息,语义警告信息。语义错误信息保存在vector
语义分析和代码生成之间的接口
接口 | 描述 |
---|---|
_Program *ASTRoot | 经过注释的抽象语法树的根节点指针 |
_SymbolTable *mainSymbolTable | 主符号表指针 |
_SymbolRecord findSymbolRecord(_SymbolTable currentSymbolTable, string id, int mode=0); | 从指定符号表找到指定标识符的记录,mode=0表示内层符号表未找到时,需要到外层符号表查找,mode!=0表示不需要 |
代码生成
代码生成的输入
代码生成的输出
C程序。