首页 > 编程语言 >基于高级语言源程序格式处理工具

基于高级语言源程序格式处理工具

时间:2024-09-14 12:24:15浏览次数:3  
标签:语句 语法 基于 运算符 语法结构 单词 测试用例 格式 源程序

基于高级语言源程序格式处理工具

w,e,c,h,a,t : help-assignment

图3.2识别标识符和整数的算法流程图
如何来识别特定语言的所有单词,详见《综合程序设计课程设计指导-源程序格式处理》。
语法分析的过程,建议采用的实现方法是编译技术中的递归下降子程序法,递归下降子程序法是一种非常简洁的语法结构分析算法,基本上是每个语法成分对应一个子程序,每次根据识别出的前几个单词,明确对应的语法成分,调用相应子程序进行语法结构分析。例如在分析语句的语法结构时,当识别出单词if 后,进行条件语句的处理,同时生成的子树根结点对应条件语句。处理时,首先调用表达式的子程序,得到表达式子树的根指针T1;再递归调用语句处理部分,得到if子句的子树根指针T2;再看随后的单词,如果不是else,就表示是一个if语句,条件语句子树的根结点标记为“IF语句”,有2棵子树,对应T1和T2;如果随后的单词是else,就再递归调用语句处理部分,得到else子句的子树根指针T3;最后分析出的是一个if-else语句,条件语句子树的根结点标记为“IF_ELSE语句”,有3棵子树,对应T1、T2和T3。按此处理流程,对给定条件语句: if (a>b) m=a; else m=b;分析后生成的抽象语法树形式如图3.3所示。

图3.3if-else语句的抽象语法树
在《综合程序设计课程设计指导-源程序格式处理》中,首先使用巴克斯(BNF)范式定义定义了一个简单的语言,给出了各个语法成分的处理流程框架作为实验的参考。
3.3 功能要求

  1. 语言定义
    选定C语言的一个子集,要求包含:
    (1)基本数据类型的变量、常量,以及数组。不包含指针、结构,枚举等。
    (2) 双目算术运算符(±*/%),关系运算符、逻辑与(&&)、逻辑或(||)、赋值运算符。不包含逗号运算符、位运算符、各种单目运算符等等。
    (3)函数定义、声明与调用。
    (4)表达式语句、复合语句、if语句的2种形式、while语句、for语句,return语句、break语句、continue语句、外部变量说明语句、局部变量说明语句。
    (5)编译预处理(宏定义,文件包含)
    (6)注释(块注释与行注释)

  2. 单词识别
    设计DFA的状态转换图(参见实验指导),实验时给出DFA,并解释如何在状态迁移中完成单词识别(每个单词都有一个种类编号和单词的字符串这2个特征值),最终生成单词识别(词法分析)子程序。
    注:含后缀常量,以类型不同作为划分标准种类编码值,例如123类型为int,123L类型为long,单词识别时,种类编码应该不同;但0x123和123类型都是int,种类编码应该相同。

  3. 语法结构分析
    (1)外部变量的声明;
    (2)函数声明与定义;
    (3)局部变量的声明;
    (4)语句及表达式;
    (5)生成(1)-(4)(包含编译预处理和注释)的抽象语法树并显示。

  4. 按缩进编排生成源程序文件。
    3.4实现与评测说明
    实验部分按阶段进行检查评分,检查时,要求同学们自行准备好测试用例,可以不必考虑测试的源程序文件功能意义,以测试用例能覆盖全部任务要求为准。即:自行设计的测试用例务必反映系统的功能(含异常情况处理),用例未能反映的功能,视同未实现情况评定。
    (1)识别语言的全部单词。(50%)
    要求测试用例包含所有种类的单词,测试用例中没有出现的单词种类视作没有完成该类单词的识别。由于每类单词有一个种类编码(参见实验指导书用枚举常量定义),可以将识别出来的单词按种类编码进行排序显示,这样既能方便自己的调试,也能方便检查。注意相同种类编码的多种形式,都应该包含在测试用例中,例如类型为int的常量,有三种形式0123、123、0x123。
    报错功能,指出不符合单词定义的符号位置。测试文件中不必包含错误符号,检查时由老师随机修改测试文件,设置错误,检查报错功能是否实现。
    (2)语法结构分析与生成抽象语法树。(40%)
    要求测试用例包含函数声明,定义、表达式(各种运算符均在某个表达式中出现)、所有的语句,以及if语句的嵌套,循环语句的嵌套。测试用例中没有出现的语句和嵌套结构,视作没有完成该种语法结构的分析。
    常见的语句包括:
    1.表达式语句; 2.if语句; 3.if else语句; 4.while语句;
    5.for语句; 6. return语句; 7.break语句; 8.continue语句;
    9.复合语句; 10.函数定义; 11.函数声明; 12.函数调用;

  5. if语句嵌套;14.循环语句嵌套;15.外部变量说明语句;

  6. 局部变量说明语句。
    报错功能,指出不符合语法规则的错误位置。测试文件中不必包含错误语句等,检查时由老师随机修改测试文件,设置错误,检查报错功能是否实现。
    显示抽象语法树,要求能由抽象语法树说明源程序的语法结构,这也是检查时验证语法结构分析正确性的依据。
    (3)缩进编排重新生成源程序文件(10%)。对(2)的测试用例生成的抽象语法树进行先根遍历,按缩进编排的方式写到.c文件中,查看文件验证是否满足任务要求。
    实现语法结构分析时,不局限使用递归下降子程序法,但不能使用工具自动生成单词识别和语法结构分析的程序。

w,e,c,h,a,t : help-assignment

标签:语句,语法,基于,运算符,语法结构,单词,测试用例,格式,源程序
From: https://blog.csdn.net/telnet3000/article/details/142169331

相关文章

  • 基于极大似然算法的系统参数辨识matlab仿真
    1.程序功能描述基于极大似然算法的系统参数辨识。对系统的参数a1,b1,a2,b2分别进行估计,计算估计误差以及估计收敛曲线,然后对比不同信噪比下的估计误差。2.测试软件版本以及运行结果展示MATLAB2022a版本运行3.核心程序fork=5:LEN%构造观测向量h=[-yout(k-1)......
  • 基于微信小程序的商品展示系统设计与开发-计算机毕业设计源码+LW文档
    摘要随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱,微信小程序被用户普遍使用,为方便用户能够可以随时进行小程序的相应信息内容的管理,特开发了基于微信小程序的商品展示系统小程序......
  • 基于极大似然算法的系统参数辨识matlab仿真
    1.程序功能描述基于极大似然算法的系统参数辨识。对系统的参数a1,b1,a2,b2分别进行估计,计算估计误差以及估计收敛曲线,然后对比不同信噪比下的估计误差。2.测试软件版本以及运行结果展示MATLAB2022a版本运行  3.核心程序%迭代计算参数值和误差值fork=5:LEN%......
  • IMA的binary_runtime_measurement文件格式
    首先贴出一个IMA度量文件的实例:binary_runtime_measurement:00000000000a00009d4c81b9dbf2b4c527177f49|.....L......'..I|00000010759de98fdc50a2f6000600006d692d61|u....P......mi-a|00000020676e00310000001a0000687......
  • 希捷硬盘只有一个分区被格式化了还能恢复吗
    希捷硬盘只有一个分区被格式化后,理论上是可以恢复的,但具体恢复的成功率会受到多种因素的影响,如格式化后硬盘的使用情况、格式化前数据的存储状态等。以下是一些可能的恢复方法:一、使用数据恢复软件数据恢复软件:这些软件通常具有强大的数据恢复能力,能够扫描并尝试恢复被格式化的......
  • 希捷硬盘只有一个分区被格式化了还能恢复吗
    希捷硬盘只有一个分区被格式化后,理论上是可以恢复的,但具体恢复的成功率会受到多种因素的影响,如格式化后硬盘的使用情况、格式化前数据的存储状态等。以下是一些可能的恢复方法:一、使用数据恢复软件安装数据恢复:这些软件通常具有强大的数据恢复能力,能够扫描并尝试恢复被格式化的分区......
  • PbootCMS时间标签date常用格式调用方法大全
    在使用PBootCMS建站时,时间标签是非常常用的功能之一。下面整理了详细的调用方法,帮助大家更好地理解和使用这些标签。首页/列表页时间标签默认格式:标签:[list:date]效果:2021-12-0609:12:30年月日格式(Y-m-d):标签:[list:datestyle=Y-m-d]效果:2021-12-06年格式(Y):标......
  • 基于springboot “xbar”小酒馆微信小程序-附源码05937
    摘 要本文旨在设计和实现基于SpringBoot的“xbar”小酒馆微信小程序,以适应互联网高速发展对传统餐饮服务带来的影响。该小程序采用线上点餐模式,通过充分利用互联网优势,解决顾客就餐过程中的各种问题,提高运营效率。“xbar”小酒馆微信小程序主要包含首页、点餐、订单和我的......
  • 基于springboot智慧社区管理系统的设计与实现-附源码04191
    目 录1绪论1.1研究背景与意义1.2国内外研究现状1.3论文结构与章节安排2 系统分析2.1可行性分析2.1.1技术可行性分析2.1.2 经济可行性分析2.1.3法律可行性分析2.2系统需求分析2.3 系统用例分析2.4 系统流程分析2.4.1系统开发流程2.4.2......
  • 基于springboot列星药膳管理系统的设计与实现-附源码05345
    摘 要身处互联网+时代,互联网无形中影响着人们的吃穿住行,人们享受着不出门便可购物的便利,网络购物在当今社会工作生活节奏飞快的今天备受欢迎,让人们购物不再受时间、地点的制约,高效快速。药膳作为一种传统的中医养生方式受到了广泛关注。然而,传统的药膳管理方式存在一些问题......