Python的递归解析工具集
项目描述
parsemon2
这是将单调解析带到Python的又一次尝试。作者认为许多其他实现的问题在于它们的组合性有限。很多时候,这些原本写得相当好的实现因为Python缺乏TCO而受到很大影响。这个实现使用跳跃点来解决这个问题。
目前这个实现只是一个玩具,但这个包中的测试已经表明,它的解析能力不依赖于Python的递归限制。
我们还有错误信息。
包中包含一个(经过测试!)的JSON解析器的示例实现。更多信息请参阅src/parsemon/json.py。
安装
此包应在PyPI上作为manylinux_2_24_x86_64 wheel提供。在最新的Linux机器上,pip应该能够很好地完成任务。
pip install parsemon2
目前不支持MS Windows和macOS。
构建包
可以从源代码以多种方式构建包。
从sdist构建
您需要安装Rust工具链。检查您的GNU/Linux发行版以了解如何安装它。另一个有用的资源是 https://rust-lang.net.cn/tools/install。
现在您可以使用pip从源代码构建包
pip install setuptools_rust wheel pip wheel parsemon2 --no-binary :all:
现在您的工作目录中应该有您平台的wheel文件。
从存储库构建
由于存储库中包含一个有用的构建脚本,使用docker是构建wheel的最简单方法。确保您的用户有权访问docker。有关如何安装docker的更多信息,请参阅您系统的文档。
安装了docker后,在源代码存储库的根目录中运行以下命令:
bin/build-wheels
程序完成后,您应在 dist/ 目录中找到各种 Python 版本的轮子。
文档
如果您想了解这个库,我们建议您查看我们的 readthedocs 页面。
变更
3.2.2
进一步的性能改进
3.2.1
修复了错误处理代码中的小错误
3.2.0
轻微的性能改进
实现重复组合器,它尝试运行指定次数的解析器
3.1.0
进行了重大性能改进
修复了 json 示例解析器中的小错误
3.0.1
更新 README
3.0
移除 pyrsistent deque 实现
提高 fmap 性能
实现输入结束解析器
run_parser 现在返回一个 ParsingResult 对象,而不是提供的解析器的原始值
run_parser 不会在解析器没有消耗所有提供的输入时失败
移除了 NotEnouhInput 异常。
停止对 Python 3.6 的官方支持
更改 until 解析器的语义。
2.0
使用 do 构建的解析器现在可以接受参数
新解析器:parsmon.basic.floating_point
为解析器实现 x | y 操作符,它是 choice(x,y) 的简写
解析速度提高 4-6 倍
此包中包含一个解析器的示例。这是世界上速度最慢的 json 解析器
1.1
实现验证器
chain 现在接受 1 个或多个参数
实现 do 表示法
新空白解析器
新整数解析器
项目详情
parsemon2-3.2.2.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | a988f7b25bf3de04607776ab05444335b8d6a5c7a522832b23ebd419234868d2 |
|
MD5 | fb263c40eb6cf43c9fc7bcd89c60a476 |
|
BLAKE2b-256 | f27c9166b779a681b2d7d6e6c531fc9de4d3716334351812b3092b7d4475f3e3 |
parsemon2-3.2.2-cp39-cp39-manylinux_2_24_x86_64.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 70e4a8286a2bc3536ad7a5e223868da820ef93fcdb7fa737f9aa0cb42399fbb8 |
|
MD5 | 9d3d1ecae43754e71120cbb871450a16 |
|
BLAKE2b-256 | 2e743675b0194395af2cb1be52dcb52fdc5665d23e77987fc90bb6bf73393e8e |
parsemon2-3.2.2-cp38-cp38-manylinux_2_24_x86_64.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 997f4aca3a251c63a131a91df7b3108f0576793c87580b138bfe9a368f91e243 |
|
MD5 | 839088e787ff611fb40eaa6b68d6210e |
|
BLAKE2b-256 | e4d8e5379a96cde3992e49da7e484f7458be7975c8437a703d9497792f72807c |
parsemon2-3.2.2-cp38-cp38-manylinux2014_x86_64.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 9a84f3385a95fa044ba470ead5990c8df486001d5ac74fc92534d1327bf0775c |
|
MD5 | d557acfabe5f6fb6a244bbff5a4bce65 |
|
BLAKE2b-256 | 01374c20685f2226aedeededfb33a11b6a0f9d2d1ce3d25fa3e903f213370d42 |
parsemon2-3.2.2-cp37-cp37m-manylinux_2_24_x86_64.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 53dcbeac54cb74e7411332bad5edc144af450b5065a7991265cbe6cfe122b005 |
|
MD5 | 06710c13ac7563a3789226b4d5812f4a |
|
BLAKE2b-256 | 63af5d19744aed580db1839beaf82b085c2ee4bf76b650850da31cea7a985c66 |
parsemon2-3.2.2-cp36-cp36m-manylinux_2_24_x86_64.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 0b8a2375e52e3a893bd035b1e25cb3720965349ec04e401f088834278796562e |
|
MD5 | b9e485fcef9b519cadbbaaaafd7f565a |
|
BLAKE2b-256 | 9cd631a155731e6a64ced2646854a6c22815071843e91a40f492f04cc8c53e30 |