基于Python实现语义分析
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实现语义分析相关推荐
- 基于python的语料库数据处理电子版_基于 Python 自然语言处理工具包在语料库研究中的运用...
基于 Python 自然语言处理工具包在语料库研究中的运用 刘 旭 [摘 要] 摘要:国内当前以语料库为基础的研究,在研究工具方面,多以 AntConc . PowerGREP 为主,使用 Pytho ...
- python水浒传名字次数_基于Python的《水浒传》中人物分析
基于 Python 的<水浒传>中人物分析 ◆杨旭东 [摘 要] 摘要:随着大数据技术的应用领域不断扩大,信息量也在日益膨胀, 而有价值的信息是有限的,利用文本挖掘技术可以高效地获取长文本 ...
- 【CV】OpenCV(基于Python)学习笔记
以下内容中的页码均来自<OpenCV 4详解 : 基于Python> 目录 第2章 载入.显示与保存数据 2.2 图像的读取与显示 2.2.1 图像读取函数 cv.imread() 2.2 ...
- 基于Python的人工智能美颜系统
基于Python的人工智能美颜系统使用PyQt5模块搭建可视化界面,使用Dlib模型(shape_predictor_68_face_landmarks.dat)实现人脸关键点检测和定位,人脸美颜(美 ...
- python深度神经网络量化_基于Python建立深度神经网络!你学会了嘛?
原标题:基于Python建立深度神经网络!你学会了嘛? 图1 神经网络构造的例子(符号说明:上标[l]表示与第l层:上标(i)表示第i个例子:下标i表示矢量第i项) 单层神经网络 图2 单层神经网络示 ...
- python selenium脚本_怎样开始写第一个基于python的selenium脚本
1.下载并安装python(http://www.python.org/geti/). 2.安装selenium(http://pypi.python.org/pypi/selenium)下载并解压缩 ...
- 【组队学习】【31期】基于Python的办公自动化
基于Python的办公自动化 航路开辟者:牧小熊.刘雯静.张晓东.吴争光.隆军 领航员:六一 航海士:牧小熊.李显.刘羽中.王晓亮 基本信息 开源内容:https://github.com/dataw ...
- 【组队学习】曹志宾:基于Python的会员数据化运营
分享人:曹志宾,Datawhale成员,香港科技大学硕士在读 分享内容: 案例描述与分析 前期准备与数据预处理 RFM模型使用与操作 Excel中的RFM分析 组队学习: 红星:基于Python的会员 ...
- 【组队学习】孙健坤:基于Python的会员数据化运营
分享人:孙健坤,哈尔滨工业大学 分享内容: 什么是会员制? 什么是会员数据化运营? 如何进行会员数据化运营 组队学习: 基于Python的会员数据化运营 开源内容: https://github.co ...
- 【组队学习】【28期】基于Python的会员数据化运营
基于Python的会员数据化运营 论坛版块: http://datawhale.club/c/team-learning/37-category/37 开源内容: https://github.com ...
最新文章
- hung-yi lee_p1_机器学习是什么
- Python高级爬虫开发,高难度JS解密教程,绝地求生模拟登陆!
- android 图片放大缩小_几款堪称神器的图片无损放大缩小工具!
- java8中的Lamba表达式
- 由于 Web 服务器上的“ISAPI 和 CGI 限制”列表设置,无法提供您请求的页面。
- java io 缓存读取_Java 文件IO写入读取四种方法
- asm 查看 数据文件 修改 时间_Oracle的ASM介绍及管理
- HDU 2154 跳舞毯
- drill 数据库查询方式简单说明
- 更换S60第三版程序图标
- 使用HTML语法图文混排
- 苏州大学计算机考研资料汇总
- 实施Scrum敏捷开发的关键要素
- 新手必看:PS软件入门基础知识
- Enterprise Architect v16
- CC00070.bigdatajava——|Java循环结构.V09|——|Java.v09|双重for循环.v02|打印各种星星图案|
- 计算机和人脑在线阅读,人脑与电脑
- 基于花季A传媒ABP落地领域驱动设计-02.聚合和聚合根的最佳实践和原则
- [转]Windows CE 6.0(PB6)离线安装版下载
- JTAG (一)杂谈
热门文章
- 在 MT4 指标中设置邮件提醒
- python大数据基础学习环境变量_《Python大数据基础与实战》[56M]百度网盘pdf下载...
- ROST情感分析的语法规则_NLP技术之句法分析
- Linux下输入法切换快捷键设置
- 1.Sigar介绍和配置
- 关于IP地址定位、IP查询和IP地址库 你想了解的历史都在这里
- 最好用的 5 款 React 富文本编辑器
- WIFI密码破解与网络数据抓包
- e站host地址_ip地址基础入门知识
- 2019微型计算机年度显示器,「MC 2019年度评选获奖产品展播」华硕/ROG DIY精品斩获多个大奖...