词法&语法分析器(带小窗口)

Lexer-Parser

用java实现的词法分析和语法分析的小程序

个人博客网站:https://daqwt.top

代码:https://github.com/DAQ121/Lexer-Parser

结果图

  • 词法分析

在这里插入图片描述

  • 语法分析

在这里插入图片描述

在这里插入图片描述

  • 判断是否是LL(1)文法

在这里插入图片描述

概述

  • 词法分析: 根据输入的字符序列,将字符序列转换为单词Token序列,识别每个字符,并给出相应的类型。
  • 语法分析: 根据给定的文法,判断是否是LL(1)文法,自顶向下分析。采用预测分析法:从文法开始符S 出发,从左到右扫描源程序,每次通过向前查看 1 个字符,选择合适的产生式,生成句子的最左推导。
  • 步骤:
  1. 从文件读入文法自动区分 终结符号VT 和 非终结符号VN
  2. 消除直接左递归
  3. 生成FIRSTFOLLOW集合
  4. 判断是否是LL(1)文法
  5. 构建预测分析表
  6. 输入要分析的单词串自动输出分析过程

代码结构

在这里插入图片描述

使用说明

  • grammer文件夹放入F盘下,我在代码包中也附带了一个名为文法测试.txt的文件,里面有对应的四种文法以及需要输入的字符串示例。
  • 运行Main主函数,即可…

在这里插入图片描述

  • 7
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
毕业设计基于Java的C语言词法分析器可以实现对C语言程序中的词法单元进行识别、分类和分析。在设计该词法分析器时,可以利用Java语言的强大特性、丰富的类库和易于扩展的特点。 首先,我们需要定义C语言的词法规则,包括关键字、标识符、运算符、常量、分隔符等。然后,可以使用Java中的正则表达式(regex)来匹配和识别这些词法单元。通过读取C语言源代码文件,我们可以逐个字符地处理,根据不同的规则进行匹配和分类。 在词法分析器中,可以使用Java中的InputStream、FileReader等类来读取源代码文件,并使用Java中的Scanner类来逐个字符地进行分析。通过提供一个状态机(state machine)来跟踪词法分析的过程,我们可以逐个字符地进行匹配并识别词法单元。 对于不同的词法单元,可以设计相应的处理逻辑。如遇到标识符,可以使用Java的HashMap等数据结构来保存已经识别的标识符,并为每个标识符分配一个唯一的标识符编号;对于关键字,可以使用预定义好的关键字列表进行匹配;对于运算符,可以使用正则表达式进行匹配等。 最后,词法分析器应该能够输出识别出的词法单元,并可在命令行窗口或文件中保存结果。可以使用Java中的I/O流来实现这一功能。 综上所述,基于Java的C语言词法分析器可以通过利用Java语言的特性和类库来方便地实现对C语言程序中的词法单元进行识别和分析。它可以通过逐个字符地匹配和分类来实现对不同类型的词法单元的识别,并可以输出结果。这个词法分析器可以作为其他编译工具的基础,如语法分析器和编译
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值