数字人文学科领域专用语言

DHParser的Python项目详细描述


dhparser
==


dhparser-用于数字人文学科的Dominan特定语言(DSL)构建工具包



features
--


*非常适合初学者的*基于Python的*DSL构建工具包。使用广泛使用的python语言设置、编程和测试您自己的dsl。

*特别关注*xml工作流*因为这些是数字人文学科中最常见的。当然,也可以使用其他输出格式。(例如,
dhparser是自宿主的,使用python代码作为输出格式。)

*支持*语法的单元测试*和分段逐步开发
以及语法的调试。

**可自定义的分析错误和错误恢复*以便于查找
在正确的位置分析错误,并为不习惯于处理正式符号的用户提供有意义的错误消息!



许可证
----



(以下简称"许可证");
除非符合许可证的要求,否则您不得使用此文件。
您可以在

https://www.apache.org/licenses/license-2.0e


获取许可证副本,除非适用法律要求或书面同意,否则根据许可证分发的软件
在"按原样"的基础上分发,
无任何明示或暗示的保证或条件。
请参阅许可证,了解管辖许可的特定语言和许可证下的限制。




author
----


author:eckhart arnold,巴伐利亚科学院
电子邮件:arnold@badw.de



installation
----


>您可以从python包索引(https://pypi.org)*:


由于该软件仍处于早期测试阶段,因此建议您直接从Gitlab中提取(见下文)。




post installaton
----


建议您安装"regex"模块
(https://bitbucket.org/mrabarnett/mrab regex)。如果存在,dhparser
将对正则表达式使用"regex"而不是内置的"re"模块。` regex比re更快更强大。

此脚本使用cython python to c编译器将
`stringview.py`-模块编译成c代码
(https://cython.org)。这需要在系统上安装cython和c编译器。




sources
----


https://gitlab.lrz.de/badw it/dhparser

github上存在此存储库的镜像:
https://github.com/jecki/dhparser请注意,github镜像可能偶尔会滞后于一些提交。

如果您参与了
开发或只是使用dhparser.




免责声明
——


API可能仍有变化。



purpose
----


DHParser是一个基于解析器组合器的解析和编译基础设施,用于数字人文项目中的领域特定语言(DSL)。它利用了领域特定语言在数字人文学科中的作用。


manities.
虽然DSL有时被引入到数字人文项目中,如
[实用的临时解决方案][müller_],但这些解决方案往往有点"快速和肮脏"。换句话说,它们更像是一种黑客而非技术。dhparser的目的是向数字人文学科介绍
[dsls as a technology][arnold_2016]。它基于众所周知的基于[ebnf][iso_iec_]的
解析器生成器技术,但是使用了更现代的形式,称为
"[解析表达式语法][ford_2004]"和
[解析器组合符][ford xx]作为经典的递归下降解析器的变体。


为什么要使用另一个解析器生成器?有很多好的语法分析器
生成器,例如[阿尼兹的grako语法分析器生成器][阿尼兹-2017],
[eclipse xtext][xtext-u网站]。然而,dhparser是一个专门面向数字人文应用的工具。虽然大多数现有的解析器生成器都来自编程语言的编译器构建工具包。
虽然我希望计算机科学中的dsl和数字人文学科中的dsl在技术实现方面非常相似,但是用例、需求挑战也有所不同。例如,在人文学科中,注释文本是一个中心的
用例,这在计算机科学处理中几乎是不存在的。
这些差异迟早会要求以不同的方向开发
dsl构建工具包。此外,
dhparser(在未来)还将作为一种教学工具,它会影响它的一些设计决策,例如,清楚地将解析、语法树转换和编译分离。最后,dhparser是一个用来进行实验的工具。一个可能的研究领域是,如何用声明性语言来描述非
[上下文无关语法](https://en.wikipedia.org/wiki/context-free\u grammar)
例如[tex][tex_stackexchange_no_bnf]或
[commonmark][macfarlane_et_al_2017]的语法,这是基于ebnf的精神但超越ebnf的。以及
解析技术的哪些扩展对于捕获这些语言是必要的。



进一步的(预期的)用例是:

*latex->;xml/html转换。请参见
[关于为什么不可能为完整的tex/latex语法提供e bnf解析器的讨论][tex_stackexchange_no_bnf]
.
*[commonmark][macfarlane_et_al_2017]和其他用于跨媒体的dsl
科学文献出版,例如期刊文章。(常见的
标记和标记也超出了纯
基于ebnf的解析器所能实现的范围。)
*ebnf本身。dhparser已经是自托管的;-)
*xml parser,只是为了好玩;-)
*数字和跨媒体版本
*数字词典

从命令行进行简单的自测试运行"dhparser.py"。这将编译examples/ebnf/ebnf.ebnf中的ebnf语法,并输出表示该语法的基于python的解析器类。解析过程的具体和抽象语法树以及完整和缩写的日志将存储在名为"log"的子目录中。




introduction
----


请参阅[introduction.md](https://gitlab.lrz.de/badw-it/dhparser/blob/master/introduction.md)有关
动机和dhparser如何工作的概述,或直接跳转到
[逐步指南](https://gitlab.lrz.de/badw-it/dhparser/blob/master/documentation_src/stepbystepguide.rst)中
了解如何设置和使用dhparser。


Acknowlement
——

[bitbucket.org/apalala/grako][añez_2017]

[añez_2017]:https://bitbucket.org/apalala/grako



eckhart arnold:特定于域的标记。a(然而)
低估了数字人文科学中的技术,
关于
[DHMUC研讨会:数字版本和获奖语言](https://dhmuc.hypothes.org/workshop-数字版本和获奖语言)的演讲,
慕尼黑2016。短网址:[ Tim.BaW.D/2JVT] [阿诺德BR/> BR/> [阿诺德的2016 ]:HTTPS://F.Value/WP-内容/博客。DRR / 1856 /文件/ 2016/12 / EA'U PR %%C3% %的新奖励语言。PDF
< BR/> Brian Ford:解析表达式语法:一个基于识别的句法BR/>基础,剑桥
马萨诸塞州,2004年。Short URL:[t1p.de /jihe][Ford 2004]<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>><<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<<<柏林海德堡2008。


Elizabeth Scott和Adrian Johnstone,GLL解析,
和:电子笔记和理论计算机科学253(2010)177-189,
[dotat.at/tmp/gll.pdf][scott u johnstone in 2010]

[scott u johnstone in 2010]:http://dotat.at/tmp/gll.pdf


dominikus herzberg:python中的面向对象的解析器组合器,
blog-post,2008年9月18日,在Think Track上。思想,想法,
关于信息学主题的建议和链接,简短-网址:
[t1p.de/bm3k][herzberg u 2008a]

[herzberg u 2008a]:http://denkspuren.blogspot.de/2008/09/object-oriented-parser-combiners.html

dominikus-herzberg:latex的简单语法,博客文章,
2008年9月18日,在思想的刺激下。关于计算机的想法、想法、建议和
链接-主题,简短-网址:
[t1p.de/7jzh][herzberg u 2008b]

[herzberg u 2008b]:http://denkspuren.blogspot.de/2008/09/en/a-simple-grammar-fr-latex.html

dominikus-herzberg:统一语法,博客-post,2月,2007年第27届thoughts, ideas, ideas, suggestions and links around
informatiinformatiinformatiinformatiinformatiinformatiinformatiinformatiinformatiinformatiinformatitheme, short -URL: [t1p and //by by by by by [by by by by by by by by by by 2007]<<<本杰明·杜姆克-冯·德婚姻,杰夫·阿特伍德:共同点。强烈
定义,高度兼容
降价规范,2017年。【commonmark.org】【macfarlane et al 2017】

[macfarlane et al 2017]:http://commonmark.org/

关于
[DHMUC研讨会:数字版本和获奖语言](https://dhmuc.hypothes.org/workshop-数字-版本-和-获奖语言)的演讲,
慕尼黑2016。Short -URL: [tiny.badw.de /2JYou][MillMillMillMillMillMillMillMillMillMillMillMillMillMillMillMillMillMillMillMillMillMillMillMillMillMillMillMillMillMillMillMillMillMillMillMillMillMillMillMillMillMillMillMillMillMillMillMillMillMillMillMillMillMillMillMillMillMillMillMillMillMillMillMillMillMillMillMillMillMillMillMillMillMillMillMillMillMillMillMillMillMillMillMillMillMillMillMillMillMillMillMillMillMillMillMillMillMillMillMillMillMillMillMillMillMillMillMillMillMillMillMillMillMillMillMillMillMillMillMillMillMillMillMillMillMillMillMillMillMillMillMillMillMillMillMillMillMillMillMillMillMillMillMillMillMillMillMillMillMillMillMillMillMillMillMillMillMillMillMillMillMillMillMillMillMillMillMillMillMillMillMillMillMillMillMillMillMillMillMillMillMillLennart Kats, EelcoVisser,Guido Wachsmuth:
DSL工程。设计、实现和使用特定于领域的语言,2013年。
[dslbook.org/][Votes 2013]


christopher seaton:一种语法和语义在运行时是可变的编程语言,布里斯托尔大学,2007年,
[chrisseaton.com/katahdin/katahdin.pdf][Seaton U 2007]


[xtext_website]:https://www.eclipse.org/xtext/

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java 安卓画布在画布上绘制路径,无需触摸方向   java如何执行HTTP删除?我得到的只是网址   java在main方法中使用getter和setter   java修改元模型的模式以更改/重命名列名   java如何在另一个片段中更改数据时刷新一个片段中的RecyclerView   在java中,进度条不会显示在从一个驱动器复制到另一个程序的文件中   java AWS API网关获取API密钥   java无法将sql(jpa查询)返回的列转换为自定义类   在Java中将JTable autoscroll摆动到底部   java读取文件列表列表   java在setText之后向下滚动   java运算符/未定义参数类型float,可选<float>   java如何禁用标准ant任务?   不使用任何现有类(如LinkedList)的JavaDeque?   java如何通过主函数的参数获取用户对数组的输入?   java制作一个包含方法的超类   java requestaudiofocus的正确参数是什么?