《编译技术编译原理 (4).pdf》由会员分享,可在线阅读,更多相关《编译技术编译原理 (4).pdf(21页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、基于python的简易编译器实现IRsCode GenerationScannerParser记号列表Semantic AnalysisCFG源码分析树CFG 定义输出TypeDefinition编译器架构Semantic Analysis语义分析利用属性文法和分析树实现上下文有关分析语义分析的作用针对不同的产生式,给定不同的属性文法利用装饰器,建立产生式和函数的映射实现Parse Treetree.TreeNode部分实现tree.TreeNode部分实现由于后面还有AST,因此提取公共部分,实现一个公有的父类。重载属性相关的函数,将属性映射到私有字典tree.TreeNode部分实现由于后
2、面还有AST,因此提取公共部分,实现一个公有的父类。tree.Tree部分实现简单地封装一下根节点即可parseTree.PTNode部分实现记录每个节点的产生式编号为装饰器映射函数做准备继承TreeNode类语义分析能做什么?直接求值,比如说计算器:直接求值,比如说计算器:除了求值以外,还可以生成IRIntermediate Representation中间表示几种中间表示Abstract Syntax TreeTAC(0,0):_v_0_0_a:_v_0_0_a,_t_0:_t_0,_t_1:_t_1,_t_2:_t_2,_t_5:_t_5,_t_6:_t_6,_t_9:_t_9,(1,0):_t_3:_t_3,(1,1):_t_7:_t_7几种中间表示Symbol Table&Scope属性文法的实现方法利用装饰器实现基于属性文法的语义分析parseTree.ParseTreeActionRegister部分实现由于从语义分析开始,所有的规则都必须针对应用本身设计,因此从这里开始将以一个架空的语言作为例子来说明。simpleJavaCompiler感谢围观