程序代写代做代考 PASCAL-S语言编译程序设计报告

PASCAL-S语言编译程序设计报告

一、课程设计目标和要求:

        按照所给Pascal-S语言的语法,参考Pascal语言的语义,设计并实现Pascal-S语言编译为C语言的编译程序。

二、需求分析:

1、词法分析:

单词种类、单词模式、右线性文法
注释、分隔符
错误

2、语法分析:

语法结构、语法错误类型
文法,分析方法选择
改写文法

3、语义分析:

类型、类型表示、类型检查、作用域、符号表类容

4、代码生成:

1、目标语言:C语言

2、源/目标语言的映射关系:

三、开发环境:

        1、PC机
        2、win10
        3、CLion

四、总体设计说明:

[模块关系图]

1、总体结构设计:

1)功能模块的划分及功能:

a、词法分析模块:

(功能)

b、语法分析模块:

(功能)

c、语义分析模块:

1. 符号表的建立及维护
2. 类型检查
3. 错误检查处理

d、代码生成模块:

(功能)

2)模块之间的关系及接口:

       

2、数据结构设计:(符号表、语法树、记号二元组…)

符号表

名称 类型 维度 声明行 指针域
—— —— —— ——– ——–

1. 名称:标识符的具体名称(字符串)
2. 类型:整型,实型等基本类型(也可以是数组的类型,函数返回值类型)
3. 维度:数组维度,如果是基本类型则为0
4. 声明行:标识符首次声明的位置
5. 指针域:函数和过程的子表指针

(函数/过程类型通过指针+类型判断及区分,数组类型通过维度区分)

3、错误处理恢复策略:(词法、语法、语义、代码生成)

语义分析

五、各部分的详细设计说明:

1、接口描述:

语义分析:

输入:语法树,每个节点都是一个结构体,结构体中需要包含

记号:叶子节点中的标识符的id,非叶子结点为空

所在行:叶子节点所在的行数

属性:以该结点为根节点的子树所代表的语法成分

子结点域:存放指向子结点的指针

输出:符号表、语法树

2、功能描述:

3、所用数据结构说明:

4、算法描述:

六、程序清单:

七、测试报告:

1、测试环境:

2、测试计划:

3、测试结果:

八、实验总结:

1、实验中遇到的或存在的主要问题:

2、改进建议:

3、体会/收获: