c语言 词法分析器《编译原理》课程设计 文本形式保存

news/2024/7/7 18:34:23

词法分析器的功能输入源程序,按照构词规则分解成一系列单词符号。单词是语言中具有独立意义的最小单位,包括关键字、标识符、运算符、界符和常量等。

(1) 关键字:是由程序语言定义的具有固定意义的标识符。例如begin,end,if,while都是保留字。这些字通常不用作一般标识符。

(2) 标识符:用来表示各种名字,如变量名,数组名,过程名等等。

(3) 数字 :数字的类型一般有整型、小数型等。

(4) 运算符:如+、-、*、/等等。

(5) 界符 :如逗号、分号、括号、等等。

执行代码后,输入需要检查的文本名,比如1.txt,输入你想要保存文本名,比如2.txt,然后系统开始分析语句,并将分析的结果放到2.txt中。查看2.txt文件即可。

  • 收获、不足与感想

通过对词法分析器的开发,让我学到了很多基础c语言支持,

学到了词法分析的基础知识:代码中实现了一个简单的词法分析器,对于分析关键字、标识符、数字和一些符号有了更深入的理解。

熟悉了C语言的文件操作和字符串处理:通过程序中的文件读写和字符串操作,增强了对C语言基础的掌握。

使用了结构体来组织数据:通过定义结构体 keywords 来存储关键字和对应的标记,体验了更灵活的数据组织方式。当然了还有一些不足之处,比如错误处理不够健壮:程序对于一些异常情况的处理可能还不够完善,例如字符串中的转义字符和注释的处理,可以进一步优化。

可读性和可维护性:代码的可读性和可维护性有待改进,可以考虑更具意义的变量命名和代码结构,以提高代码的可理解性。

编写一个完整的编译器是一项复杂的任务,而这个代码是编译器中词法分析部分的简单实现。通过编写这个程序,我更深刻地认识到了编译器设计的挑战和复杂性。遇到问题时,通过查阅文档和调试,我学到了解决问题的方法。这锻炼了我的自学能力和问题解决能力。在以后的学习中,我计划深入了解编译原理和编译器设计,以提高对整个编译过程的理解。


http://lihuaxi.xjx100.cn/news/1887402.html

相关文章

Typescript中Partial数据类型在项目中的实际应用

在TypeScript中&#xff0c;Partial是一个内置的泛型类型&#xff0c;用于将给定的类型T 的所有属性转换为可选属性。换句话说&#xff0c;Partial<T> 可以帮助我们将一个类型中的所有属性变为可选属性&#xff0c;这在某些情况下非常有用。 例如&#xff1a;设有一个接…

MATLAB算法实战应用案例精讲-【图像处理】图像分割(基础篇)(二)

目录 前言 知识储备 MATLAB图像处理相关函数 数字图像处理函数 数字图像增强

谈谈常用的分布式ID的设计方案?

典型回答 首先&#xff0c;我们需要明确通常的分布式ID定义&#xff0c;基本的要求包括&#xff1a; 全局唯一&#xff0c;区别于单点系统的唯一&#xff0c;全局是要求分布式系统内唯一。 有序性&#xff0c;通常都需要保证生成的ID是有序递增的。例如&#xff0c;在数据库存…

HTML---列表.表格.媒体元素

文章目录 前言一、pandas是什么&#xff1f;二、使用步骤 1.引入库2.读入数据总结 一.列表 无序列表 HTML中的无序列表&#xff08;Unordered List&#xff09;用于显示一组项目&#xff0c;每个项目之前没有特定的顺序或编号。无序列表使用<ul>标签来定义&#xff0c;每…

Vue3-03-reactive() 响应式基本使用

reactive() 的简介 reactive() 是vue3 中进行响应式状态声明的另一种方式&#xff1b; 但是&#xff0c;它只能声明 【对象类型】的响应式变量&#xff0c;【不支持声明基本数据类型】。reactive() 与 ref() 一样&#xff0c;都是深度响应式的&#xff0c;即对象嵌套属性发生了…

EasyExcel解决文件读写问题,linux服务器没有安装字体支持而导致出现错误

场景&#xff1a; 在使用 easyexcel 进行导出数据时&#xff0c;在 windows和mac 环境中都能正常导出&#xff0c;但在测试环境 linux 服务器上导出报空指针异常&#xff0c;经排查可能是因为 linux 服务器没有安装字体支持而导致报错 java.lang.NullPointerException…

Spring事务的使用示例和传播行为以及失效场景

文章目录 前言一、Spring事务是什么二、简单示例三、Spring事务的传播行为1. 以下是几种常见的事务传播行为&#xff1a;2. 实现方式 四、Spring事务失效的场景以下是几个常见的导致Spring事务失效的场景&#xff1a; 总结 前言 我们都知道事务提供了一种机制&#xff0c;用于管…

【初阶C++】前言

C前言 1. 什么是C2. C发展史3. C的重要性4. 如何学习C 1. 什么是C C语言是结构化和模块化的语言&#xff0c;适合处理较小规模的程序。对于复杂的问题&#xff0c;规模较大的程序&#xff0c;需要高度的抽象和建模时&#xff0c;C语言则不合适。为了解决软件危机&#xff0c; …