如何为TEX创建解析器?

时间:2010-09-28 16:14:11

标签: c# parsing tex

我正在寻找开发一个TEX解析器,现在问题是没有Context Free Grammar而且不可能有一个,因为它不是上下文无关语言,我听说它是​​某种宏语言并且建立在它的基础上自己的。

所以现在我需要指明这种宏语言有什么样的语法,以及如何在c#中构建任何东西。

我将编写标记器和解析器,但我需要TEX中的一些宏规则很难找到,其他地方都有关于如何使用TEX宏的文档。

2 个答案:

答案 0 :(得分:7)

作为编程语言的TeX可能是有史以来创建的最复杂(非深奥)语言的大量“保留字”。您可以重新映射处理器读取的每个字符的含义,并且通常会在解析语言时执行您通常不会遇到的事情。

如果您真的想要创建自己的TeX解析器,则必须在原始TeX上构建。源代码不仅可用,而且使用Knuth的巧妙WEB工具编写为literate program

为了使问题更加复杂,您总是使用带有TeX的宏包。默认包是Plain,最着名的是LaTeX。宏包中包含一些非常重要的代码,您必须合并这些代码才能解析要解析的TeX的特定“方言”。

答案 1 :(得分:3)

这取决于您实际想要实施多少TeX。 LaTeX2HTML是一个将LaTex转换为HTML的perl项目。还有MathJax将TeX数学转换为HTML或MathML。如果你想看看一些非TeX程序如何解析TeX,请看这些。