首页 / 知识
关于解析:Parsec的Python实现?
2023-04-17 07:02:00

Python implementation of Parsec?我最近使用Ply在Python中编写了一个解析器(这是yacc的python重新实现)。当我几乎完成解析器的工作后,我发现我需要解析的语法要求我在解析过程中进行一些查找以告知词法分析器。如果不查找通知词法分析器,就无法正确解析该语言中的字符串。 考虑到我可以通过语法规则控制词法分析器的状态,我认为我将使用解析器模块中的查找表来解决用例,但是维护/测试可能变得太困难了。因此,我想了解其他一些选项。 在Haskell中,我将使用Parsec,一个解析函数库(称为组合器)。有Parsec的Python实现吗?还是其他一些具有解析功能的生产质量库,以便我可以在Python中构建上下文相关的解析器? 编辑:我所有上下文无关的解析尝试都失败了。因此,我不希望ANTLR在这里有用。 我相信pyparsing是基于与parsec相同的原理。 PySec是另一个monadic解析器,我对此不太了解,但值得在这里查看 您可以考虑的一个选择是,如果可以使用LL解析器,可以尝试一下ANTLR,它也可以生成python(实际上是LL(*),因为它们命名为*,*表示它可以应付的前瞻量与)。 没有什么可以阻止您使用PLY将解析器从"无上下文"路径中转移出来的。您可以在解析过程中将信息传递给词法分析器,并以此实现完全的灵活性。我很确定您可以用PLY解析任何您想要的东西。 作为一个动手示例,请考虑-它是使用PLY用Python编写的ANSI C解析器。它通过在解析器中填充一个符号表来解决经典的C typedef-标识符问题(这使C的语法对上下文不敏感),该解析器在词法分析器中用于将符号名称解析为类型还是不解析。 有ANTLR,它是LL(*),有PyParsing,它对对象更友好,有点像DSL,然后有Parsing,就像OCaml的Menhir。 ANTLR很棒,并且具有跨多种语言工作的额外好处。 |
最新内容
相关内容
linux输出字符串命令?
linux输出字符串命令?,标准,基础,字符串,资料,简介,商业,数字,系统,命令,汉字,Linux中c语言中汉字字符串的输出引入标准输入输出库:sdtio.h。定linux中查找替换命令?
linux中查找替换命令?,标的,文件,名称,代码,内容,字符串,命令,批量,方法,表示,linux下批量查询文件内容字符串并替换1、一)通过vi编辑器来替换递归查找linux命令?
递归查找linux命令?,时间,档案,命令,标准,数据,系统,名称,文件,服务,信息,linux搜索文件名命令(使用find命令在Linux上查找文件和目录)1、findlinux命令删除字符串?
linux命令删除字符串?,软件,系统,代码,名称,通用,连续,字符,字符串,命令,空格,类似trim命令,去除字符串中的冒号,有这个简单的命令吗?1、=trimlinux查找设备号命令?
linux查找设备号命令?,设备,系统,信息,名称,分区,网上,情况,软件,技术,工具,在linux中如何知道自己的IDE设备的代号呢?例如,第一个 IDE 硬盘的linux查找网卡的命令?
linux查找网卡的命令?,地址,系统,网络,实时,工具,信息,技术指标,电脑,状态,网卡,Linux怎么查询网卡配置1、首先在电脑上打开Linux系统,然后进入字符串查找命令linux?
字符串查找命令linux?,系统,字符串,工具,信息,文件,命令,字符,选项,文本,范本,如何在Linux下查找文件内容包含某个特定字符串的文件在linux中glinux查找帮助的命令?
linux查找帮助的命令?,系统,命令,信息,软件,名称,文件,指令,进程,表示,参数,linux搜索文件名命令(使用find命令在Linux上查找文件和目录)findlinux查找帮助的命令?
linux查找帮助的命令?,系统,命令,信息,软件,名称,文件,指令,进程,表示,参数,linux搜索文件名命令(使用find命令在Linux上查找文件和目录)findlinux命令替换字符串?
linux命令替换字符串?,字符串,文件,批量,首次,数据,命令,内容,方法,用字,结尾,linux下批量查询文件内容字符串并替换一)通过vi编辑器来替换。vilinux查找重复项命令?
linux查找重复项命令?,工具,系统,电脑,百度,文件,命令,情况,名字,标准,通用,linux查找目录下是否有相同文件可以使用ls命令,ls跟dos下的dir命令linux命令查找进程?
linux命令查找进程?,系统,名称,软件,状态,进程,电脑,信息,命令,材料,数据,怎么查看linux进程名称1、linux 下查看进程可以使用的命令:ps命令查