编译原理课程设计讲解:词法分析器(python)

该项目是编译原理课程设计的一部分,使用Python和PyCharm开发了一个词法分析器,该分析器基于DFA识别3º语法的文法。程序接收文法和源代码作为输入,输出token表。开发环境为Windows10和Python。项目包括NFA和DFA的创建,词法分析以及测试。当遇到不符合文法的词时,程序会给出错误提示。
摘要由CSDN通过智能技术生成

项目github链接:GitHub - Afaliya0-0Liong/Lexical-analyzer-: 编译原理课程设计词法分析器编译原理课程设计词法分析器. Contribute to Afaliya0-0Liong/Lexical-analyzer- development by creating an account on GitHub.https://github.com/Afaliya0-0Liong/Lexical-analyzer-

对于上不去github的小伙伴已经配套上传到CSDN,编译原理课程设计:词法分析器-Python文档类资源-CSDN下载所使用的开发环境:Windows10、python(PyCharm)环境课题功能:创建一更多下载资源、学习资料请访问CSDN下载频道.https://download.csdn.net/download/RLIRiong/85379958

要求:

  创建一个词法分析程序,该程序支持分析常规语法。使用DFA(确定性有限自动机)来实现此程序。 程序有两个输入:1)一个文本文档,包括一组3º语法(正规文法)的产生式;2)一个源代码文本文档,包含一组需要识别的字符串。 程序的输出是一个token(令牌)表,该表由5种token组成:关键词,标识符,常量,限定符和运算符。

开发平台:

所使用的开发环境:Windows10、python(PyCharm)环境

项目简介:

   词法分析器读入三型文法,将三型文法构建成一个起点和一个终点的NFA,然后将NFA用子集法构造成DFA,创建DFA的索引表,后续读取要扫描的代码,将代码中的每个词依次带入DFA的索引表进行状态转换,如果到达终态说明词符合文法要求,输出token列表(三元组:所在行号,类别,token 内容)如果出错会输出另一种三元组(行号, 对错判定, token内容),并将token列表写入txt文件供任务二LR(1)语法分析器来使用,同时也会将结果输出到result.txt文件来观测,默认注释掉DFA可视化过程,如果想观测状态变化需要把show函数注释取消。

main函数流程图:

相关数据结构

DFA的状态用state类来表示,由state里的notepsilon和epsilon来连接各个状态。

class state:

数据结构名

类型

介绍

_end

布尔

表示是否为终结状态,是则为True,反之False。

notepsilon

字典

表示路径非空的状态链接,键为路径,键值为路径所到达的状态。

epsilon

列表

表示路径为ε的状态链接,里面保存ε可以到达的状态。

statenum

  • 3
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值