用DSL解析文档

问题描述:

我试图想出一种方法来浏览大约一百万份正式文档(为了参数,它们是Thesis文档)。他们并不都是标准化的,但足够接近。它们是标题,章节,段落等。可能会出现细微的差异,例如英文,我们称之为“标题”,但在法语中称为“Titre”。用DSL解析文档

因此,在我看来,最好的办法是创建一个EBNF,其中包含所有可能的标题组合:标题|例如,滴定。

我并不太在意EBNF。我主要关心的是如何实现解析。我看过ANTLR,OSLO,Irony和其他一些人,但他们没有专业知识来判断他们是否适合我的任务。

所以,我的问题在你们中间学到的是

  1. 你会推荐哪DSL工具,这种规模的解析文件?
  2. 什么DSL工具是最准确的解析,但宽容匹配(即我们必须定义规则的大写和小写,那么数字与罗马数字和外语(法语)怎么样
  3. 有没有一个过程/算法,我还没有考虑过你会推荐作为DSL的替代方案吗?(从头开始重写是一种选择,但我希望能够快速找到某种工作方式)
  4. 有没有人试图给算法添加学习和智能用于解析DSLs(想想遗传算法和神经网络)?
  5. 你会在生产环境中使用这些DSL工具吗?

我选择的开发平台是C#。我提到这一点是因为理想情况下我想将DSL工具集成到代码中,以便我们可以从现有的应用程序中使用它。

我遇到了一个名为TinyPG的工具。它不完全是我所需要的,但有源代码可以让我生成我需要的东西。