编译原理课程设计:语法分析器

配套代码:

编译原理课程设计:语法分析器-Python文档类资源-CSDN下载所使用的开发环境:Windows10、python(PyCharm)环境注意:expression更多下载资源、学习资料请访问CSDN下载频道.https://download.csdn.net/download/RLIRiong/85393593?spm=1001.2014.3001.5503

github:

https://github.com/Afaliya0-0Liong/Parser-icon-default.png?t=M4ADhttps://github.com/Afaliya0-0Liong/Parser-

要求:

创建一个使用LR(1) 方法的语法分析程序,程序有两个输入:1)一个是文本文档,其中包含2º型文法(上下文无关文法)的产生式集合;2)任务1词法分析程序输出的(生成的)token令牌表。程序的输出包括:YES或NO(源代码字符串符合此2º型文法,或者源代码字符串不符合此2º型文法);错误提示文件,如果有语法错标示出错行号,并给出大致的出错原因。

开发环境:

Windows10、python(PyCharm)环境。

项目简介:

程序读入上下文无关文法,并进行拓广文法,将产生式依次形成项目进行储存,设定好起点进行处理得到完整的项目集族,按照项目集族之间的转换得到action、goto表,读取词法分析得到的token(详情看我的词法分析器,也可以按照我的格式进行自创,格式:(行数, token分类, token内容)),按照之前得到的action、goto表进行处理,得到语法分析的结果,查看是否符合自己设定的语法,如果出错可以形成缺失者错误导致的错误报告,并输出到result.txt(正确会得到‘YES’)。

相关数据结构:

   该语法分析器主要依赖LR1类,通过内部的project_family保存项目集族,links等数据结构共同使用进行项目集族的跳转。

关于dict字典,引用了defaultdict类带替代部分字典类,优势在于如果键值不存在不会引发keyerror。

class LR1:

数据结构名

类型

介绍

symbol

列表

保存除了’#’以外的所有终结符。

project_family_num

int

保存总共的项目集族数。

project_num

int

保存总共的项目数。

next_states

defaultdict

[id][进位符号]=下一个项目集

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值