DynGenPar–动态广义分析器

作者:Kevin Kofler

DynGenPar是FMathL(跑道)项目(我对FMathL的贡献).

致谢:我在数学系奥地利维也纳大学2007年至2017年。我于2017年10月13日成功完成了论文答辩。我的导师是Arnold Neumaier教授,他发起了FMathL项目。DynGenPar是我博士论文的主要成果。我还受雇于该大学,担任由奥地利科学基金会感谢其财务支持(合同编号为P20631、P23554和P22239)。(FMathL项目的其他成员也从FWF项目P20631获得了资金。)我现在的雇主DAGOPT优化技术有限公司拥有DynGenPar的部分版权(自第3版起)。


DynGenPar是一个创新的解析器,它基于一种新的原理,结合了传统解析器的自下而上和自上而下的特性。该算法最独特的特点是可以在几乎任何时候向语法添加规则,即使在解析期间也是如此。DynGenPar具有以下特性:

动态=语法没有像通常的表驱动方法那样硬编码,例如(广义)LR或Earley算法。相反,该算法基于语法的运行时表示,这允许有效地处理动态语法更改。为了决定何时以及如何移动或减少,我们使用了初始图,而不是通常的LR表,该图很容易随着语法的变化而更新,同时还使用了一些运行时自上而下的信息。

广义=该算法彻底解析了不明确的语法。此外,为了支持任意CFG,还考虑了ε乘积。(由于算法的自下而上特性,自然支持左递归。)我们使用类似于Tomita的广义LR算法中使用的图形结构(DAG-structured)堆栈。作为额外的泛化,我们还支持并行多上下文自由语法(PMCFG)和下一个标记约束(有用,例如用于无扫描解析)。

由于采用了动态设计,因此不需要解析器生成器。相反,解析器可以简单地用作库。

DynGenPar支持动态语法添加、增量解析、预测、规则标签、自定义解析操作、任意标记源、分层解析、并行多上下文无关语法(PMCFG)和下一个标记约束。

该实现是根据GNU通用公共许可证版本2进行许可的或更高版本。在不久的将来,将通过以下方式提供用于非GPL软件的商业许可证DAGOPT优化技术有限公司.

您可以引用以下出版物:
Kevin Kofler和Arnold Neumaier:DynGenPar——通用数学语言的动态广义解析器。2012年CICM会议记录(DML轨道),德国不来梅(Springer LNAI 7362),2012年。
如果你在任何研究论文中使用我的工作,请包括上述引文。
可以在下面免费下载预印本(最终作者版本),编辑版本受通常的Springer订阅系统的约束。

下载内容: