1. 需求分析

能分析以下几类语句,并建立符号表及生成中间代码(三地址指令和 四元式形式):

  • 声明语句(包括变量声明、数组声明、记录声明和过程声明)
  • 表达式及赋值语句(包括数组元素的引用和赋值)
  • 分支语句:if_then_else
  • 循环语句:do_while
  • 过程调用语句

能够识别出测试用例中的语义错误,包括

  • 变量(包括数组、指针、结构体)或过程未经声明就使用
  • 变量(包括数组、指针、结构体)或过程名重复声明
  • 运算分量类型不匹配(也包括赋值号两边的表达式类型不匹配)
  • 操作符与操作数之间的类型不匹配
    • 赋值号左边出现一个只有右值的表达式
    • 数组下标不是整数
    • 对非数组变量使用数组访问操作符
    • 对非结构体类型变量使用“.”操作符
    • 对非过程名使用过程调用操作符
    • 过程调用的参数类型或数目不匹配
    • 函数返回类型有误

能准确给出错误所在位置。输出的错误提示信息格式如下: Semantic error at Line [行号]:[说明文字]

2. 文法设计

要求:给出如下语言成分所对应的语义动作

  • 声明语句(包括变量声明、数组声明、记录声明和过程声明)

  • 表达式及赋值语句(包括数组元素的引用和赋值)

  • 分支语句:if_then_else

  • 循环语句:do_while

  • 过程调用语句

3. 系统设计

要求:分为系统概要设计和系统详细设计。

  • 系统概要设计:给出必要的系统宏观层面设计图,如系统框架图、数据流图、功能模块结构图等以及相应的文字说明。

  • 系统详细设计:对如下工作进行展开描述

核心数据结构的设计

该结构为语法分析树的节点,用于存放单词的内容、属性、深度和子节点信息。

支持返回所有类中的所有实例。在返回属性信息时,如果该节点不具备该属性,会进行报错。

子节点信息和属性信息可以进行增加。

该结构为四元组,用于存放四元组内容。

同时对四元组的分析操作也包含在内

4. 系统实现及结果分析

要求:对如下内容展开描述。

  • 系统实现过程中遇到的问题;

该系统没有办法处理未经声明就使用的变量。因为在存储变量的属性时,使用了字典,在调用变量时,如果该变量未经声明,那么符号表中就没有它,也就没有关于它的字典的 key,那么程序会进行 keyerror 报错。

  • 针对一测试程序输出其语义分析结果;

测试样例如下:

struct student {int age;
}int sum(int x, int y) {int ret;ret = x + y;return ret;
}int main() {float a;a = 1.567;int b;int[5][5] c;c[1][1] = 10;b = c[1][1];int d;int *e;d = sum(b, c[1][1]);if(d > 10) {a = 1.0;} else {a = 2.0;}while(b < 10) {d = d + 1;b = b + 1;}return 0;
}

基于Python实现语义分析相关推荐

  1. 基于python的语料库数据处理电子版_基于 Python 自然语言处理工具包在语料库研究中的运用...

    基于 Python 自然语言处理工具包在语料库研究中的运用 刘 旭 [摘 要] 摘要:国内当前以语料库为基础的研究,在研究工具方面,多以 AntConc . PowerGREP 为主,使用 Pytho ...

  2. python水浒传名字次数_基于Python的《水浒传》中人物分析

    基于 Python 的<水浒传>中人物分析 ◆杨旭东 [摘 要] 摘要:随着大数据技术的应用领域不断扩大,信息量也在日益膨胀, 而有价值的信息是有限的,利用文本挖掘技术可以高效地获取长文本 ...

  3. 【CV】OpenCV(基于Python)学习笔记

    以下内容中的页码均来自<OpenCV 4详解 : 基于Python> 目录 第2章 载入.显示与保存数据 2.2 图像的读取与显示 2.2.1 图像读取函数 cv.imread() 2.2 ...

  4. 基于Python的人工智能美颜系统

    基于Python的人工智能美颜系统使用PyQt5模块搭建可视化界面,使用Dlib模型(shape_predictor_68_face_landmarks.dat)实现人脸关键点检测和定位,人脸美颜(美 ...

  5. python深度神经网络量化_基于Python建立深度神经网络!你学会了嘛?

    原标题:基于Python建立深度神经网络!你学会了嘛? 图1 神经网络构造的例子(符号说明:上标[l]表示与第l层:上标(i)表示第i个例子:下标i表示矢量第i项) 单层神经网络 图2 单层神经网络示 ...

  6. python selenium脚本_怎样开始写第一个基于python的selenium脚本

    1.下载并安装python(http://www.python.org/geti/). 2.安装selenium(http://pypi.python.org/pypi/selenium)下载并解压缩 ...

  7. 【组队学习】【31期】基于Python的办公自动化

    基于Python的办公自动化 航路开辟者:牧小熊.刘雯静.张晓东.吴争光.隆军 领航员:六一 航海士:牧小熊.李显.刘羽中.王晓亮 基本信息 开源内容:https://github.com/dataw ...

  8. 【组队学习】曹志宾:基于Python的会员数据化运营

    分享人:曹志宾,Datawhale成员,香港科技大学硕士在读 分享内容: 案例描述与分析 前期准备与数据预处理 RFM模型使用与操作 Excel中的RFM分析 组队学习: 红星:基于Python的会员 ...

  9. 【组队学习】孙健坤:基于Python的会员数据化运营

    分享人:孙健坤,哈尔滨工业大学 分享内容: 什么是会员制? 什么是会员数据化运营? 如何进行会员数据化运营 组队学习: 基于Python的会员数据化运营 开源内容: https://github.co ...

  10. 【组队学习】【28期】基于Python的会员数据化运营

    基于Python的会员数据化运营 论坛版块: http://datawhale.club/c/team-learning/37-category/37 开源内容: https://github.com ...

最新文章

  1. hung-yi lee_p1_机器学习是什么
  2. Python高级爬虫开发,高难度JS解密教程,绝地求生模拟登陆!
  3. android 图片放大缩小_几款堪称神器的图片无损放大缩小工具!
  4. java8中的Lamba表达式
  5. 由于 Web 服务器上的“ISAPI 和 CGI 限制”列表设置,无法提供您请求的页面。
  6. java io 缓存读取_Java 文件IO写入读取四种方法
  7. asm 查看 数据文件 修改 时间_Oracle的ASM介绍及管理
  8. HDU 2154 跳舞毯
  9. drill 数据库查询方式简单说明
  10. 更换S60第三版程序图标
  11. 使用HTML语法图文混排
  12. 苏州大学计算机考研资料汇总
  13. 实施Scrum敏捷开发的关键要素
  14. 新手必看:PS软件入门基础知识
  15. Enterprise Architect v16
  16. CC00070.bigdatajava——|Java循环结构.V09|——|Java.v09|双重for循环.v02|打印各种星星图案|
  17. 计算机和人脑在线阅读,人脑与电脑
  18. 基于花季A传媒ABP落地领域驱动设计-02.聚合和聚合根的最佳实践和原则
  19. [转]Windows CE 6.0(PB6)离线安装版下载
  20. JTAG (一)杂谈

热门文章

  1. 在 MT4 指标中设置邮件提醒
  2. python大数据基础学习环境变量_《Python大数据基础与实战》[56M]百度网盘pdf下载...
  3. ROST情感分析的语法规则_NLP技术之句法分析
  4. Linux下输入法切换快捷键设置
  5. 1.Sigar介绍和配置
  6. 关于IP地址定位、IP查询和IP地址库 你想了解的历史都在这里
  7. 最好用的 5 款 React 富文本编辑器
  8. WIFI密码破解与网络数据抓包
  9. e站host地址_ip地址基础入门知识
  10. 2019微型计算机年度显示器,「MC 2019年度评选获奖产品展播」华硕/ROG DIY精品斩获多个大奖...