嵌入式分析器生成器

乔纳斯·杜雷格德帕特里克·詹森(在查尔默斯FP公司组)

Haskell研讨会演讲

摘要

我们提出了一种在Haskell中嵌入无上下文文法的新方法,并从中自动生成解析器和漂亮的打印机。我们在一个名为BNFC-米塔(来自BNF转换器,它是基于该转换器构建的)。该库使用元编程而不是传统的代码生成来构建编译器前端。解析器由直接在Haskell模块中定义的标记BNF语法构建。我们的解决方案结合了解析器生成器的功能(静态语法检查,一种高度专业化的语法DSL),并添加了组合库独有的几个功能,例如在Haskell中重用、参数化和生成语法的能力。

为了允许用具体的语法编写语法,BNFC-米塔提供了一个准引用,可以在编译时解析语法(嵌入在Haskell文件中),并使用元编程将其替换为抽象语法。我们还生成准引号,以便我们用BNFC-meta定义的语言可以以相同的方式嵌入。只要对语法进行最小的更改,我们就支持在生成的准引用中添加反引号,这允许定义语言的用户几乎无缝地混合具体和抽象语法。与以前实现反引用的方法不同,BNFC meta使用的方法简单、高效,避免了对抽象语法类型的污染。

Biptex公司

@进行中{BNFC-meta-Haskell2011,author={Dureg{\aa}rd,Jonas和Jansson,Patrik},title={嵌入式解析器生成器},booktitle={第四届{ACM}{Haskell}}研讨会论文集,序列={Haskell'11},isbn={978-1-4503-0860-1},location={日本东京},页数={107--117},numpages=11,url={http://doi.acm.org/10.1145/2034675.2034689},doi={10.1145/2034675.2034689},acmid=2034689,publisher={ACM},address={美国纽约州纽约市},keywords={领域特定语言,元编程},年份=2011}

出版物状态

链接

黑客软件包BNFC-米塔,快乐我亚历克斯·梅塔.