2010-09-28 36 views
4

我正在寻找开发一个TEX解析器,现在问题是没有上下文无关语法,并且不能有一个,因为它没有上下文无关的语言,我听说它是​​某种宏语言,并建立在它自己的语言。如何为TEX创建解析器?

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

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

+2

你的意思是[“TeX”](http://en.wikipedia.org/wiki/TeX)?如果你这样做,那么源代码可供你翻译。此外,代码由[计算机和排版]卷B(http://en.wikipedia.org/wiki/Computers_and_Typesetting)的B卷全面记录。 – Richard 2010-09-28 16:20:06

回答

7

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

如果你真的想创建自己的TeX解析器,你将不得不建立在原来的TeX上。源代码不仅可用,而且它使用Knuth的巧妙WEB工具编写为literate program

使问题变得更加复杂,您总是在TeX中使用宏包。默认包是Plain,最着名的是LaTeX。宏包中包含了一小部分代码,您需要合并才能解析要解析的TeX的特定“方言”。

+0

谢谢,它对我来说很复杂,但我会尝试一下,我只是想要实现一点TeX,比如用粗体斜体和符号等来编写小型富文本。就像wiki与html相比,我更喜欢TeX,因为它可以很好地代表数学。 – 2010-09-28 17:08:57

3

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

+0

我只对数学方程感兴趣,但我没有得到完整的语法来实现一个例如x^2是x的平方,其中(x + 2)^ 2是x + 2的平方,但是x^24是x的24次幂,其中x^2 4被一个使x^2和4作为单独表达式的空间隔开。所以我没有关于所有用作标记和表达的具体规则。 – 2011-01-16 10:07:01