符号分析器:通过类型化元程序静态优化和分级的分析器组合子

[agpl公司,图书馆,解析][建议标签]

这是一个以工作为基础的实验库,用于生成解析器,利用Tagless-Final口译员和类型化模板Haskell登台。

这是一种替代方案,但功能较弱实施Parsley Haskell公司.请参阅杰米·威利斯、尼古拉斯·吴和马修·皮克林的论文,在ICFP-2020大会上表现出色:分级选择性分析器组合器.


[跳到自述]

模块

[索引] [快速跳跃]

  • 语言
    • 哈斯克尔
      • 真实航向
        • 语言。哈斯克尔。TH.隐藏名称
        • 语言。哈斯克尔。TH.表演
  • 象征主义
    • Symantic公司。分析器
      • Symantic公司。分析器。语法
        • Symantic公司。分析器。语法。选择符
        • Symantic公司。分析器。语法。观察值共享
        • Symantic公司。分析器。语法。优化
        • Symantic公司。分析器。语法。生产
        • Symantic公司。分析器。语法。查看
        • Symantic公司。分析器。语法。写入
      • Symantic公司。分析器。机器
        • Symantic公司。分析器。机器。生成
        • Symantic公司。分析器。机器。输入
        • Symantic公司。分析器。机器。说明
        • 象征主义。分析器。机器。优化
        • Symantic公司。分析器。机器。程序
        • Symantic公司。分析器。机器。查看

旗帜

手动标记

姓名描述违约
转储堆芯

在HTML中转储GHC的核心

残疾人
禁用ormolu检查

从构建工具依赖项中删除ormolu。Nixpkgs的haskellPackages.ormolu仍处于损坏状态时进行临时黑客攻击。

残疾人

使用-f<标志>启用标志,或-f-<标志>禁用该标志。更多信息

下载

维修人员角落

包装维护人员

对于包维护者和黑客托管者

候选人

版本[RSS(RSS)] 210101年0月0日,0.0.0.20210102,0.1.0.20210201,0.2.0.20210703,0.2.1.20210803
更改日志 更改日志.md
依赖关系 阵列,阿托帕塞克(>=0.13),基础(>=4.10 && <5),字节删除(>=0.10),集装箱(>=0.5.10.1),deepseq公司(>=1.4),目录(>=1.3),文件路径(>=1.4),ghc-prim公司,可散列的(>=1.2.6),百万帕斯卡(>=9.0),漂亮的(>=1.1),过程(>=1.6),严格的(>=0.4),对称基(>=0.2),符号处理器,美味的(>=0.11),美味的金色(>=2.3),template-haskell模板(>=2.16),文本(>=1.2),变压器(>=0.4),unix(通用)(>=2.7),无序控制器[细节]
许可证 AGPL-3.0阶激光
版权 朱利安·穆蒂尼奥+symantic-parser@sourcephile.fr>
作者 朱利安·穆蒂尼奥+symantic-parser@sourcephile.fr>
维护人员 收件人:~julm/symantic-parser@todo.hut.sourcephile.fr
类别 正在分析
主页 https://git.hut.sourcephile.fr/~julm/symantic-parser
Bug跟踪器 https://todo.hut.sourcephile.fr/~julm/symantic语法分析器
源回购 头部:git克隆https://git.hut.sourcephile.fr网站/~julm/symantic-parser
已上传 通过朱尔姆2021-08-31T19:22:00Z
分配
下载 总共489人(过去30天内有8人)
额定值 (尚未投票)[估算人贝叶斯平均]
您的评分
  • λ
  • λ
  • λ
状态 用户上传的文档
生成状态未知[还没有报告]

symantic-parser-0.2.1.20210803自述文件

[返回包描述]

与以下方面的主要差异Parsley Haskell公司

  • 基本语法组合子是可扩展的,包括它们是当前顶级组合子的优化过程。

  • 错误消息基于达到的最远输入位置(尚未在中实现Parsley Haskell公司)并且初步支持基于标记的故障.

  • 成功解析所需的最小输入长度检查(“地平线”检查)是使用聚修复体查看子程序调用以外的内容,这在Parsley Haskell公司.

  • Symantics用于语法制作,而不是GHC插件:lift插件,白痴-plugin欧式装饰用于用户。它们提供了方便的syntaxc-sugar(通过引用Haskell表达式作为自身及其TemplateHaskell公司但我对它们的理解不太深,不太愿意维护它们,以防作者抛弃它们。

  • 新鲜的TemplateHaskell公司名称是直接使用的(当观察引入连接点等的共享时),而不是根据从属映射.

  • 代码是根据copyleft许可证发布的常见代码AGPL-3.0阶激光,而不是更自由的BSD-3条款属于Parsley Haskell公司.

  • 测试语法有其生成机器和TemplateHaskell公司拼接后进行黄金测试。

主要目标

  • 让我更好地理解ParsleyHaskell公司,并在代码库的简单性和解析器的特性之间找到一种可管理的平衡。通过这样做,挑战和展示符号技术。

  • 支持树型数据结构的解析,而不仅仅是字符串型数据结构。例如,在中使用RelaxNG验证XMLsymantic-xml或在中执行HTTP请求路由symantic-http服务器。当前在这些包中使用百万帕斯卡,但是百万帕斯卡并不是为这样的输入而设计的,而且在优化方面,比如合并备选方案时,原则性较差。

实施技术

键入无标签-最终

语法的语法是在类型类中定义的术语级组合词,它们的语义是具有这些类型类实例的数据类型。同样的技术也适用于机器指令和语法生成。

对于自动推导,默认签名已提供,请参见Symantic公司。已键入。得到.

对于模式匹配,提供了由语法类型类索引的数据族,看见Symantic公司。已键入。数据.