【问题标题】:how to create parser for TEX?如何为 TEX 创建解析器?
【发布时间】:2011-04-18 09:46:55
【问题描述】:

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

所以现在我需要了解这种宏语言的语法类型以及如何在 c# 中构建任何东西。

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

【问题讨论】:

  • 你的意思是"TeX"?如果你这样做了,那么源代码可供你翻译。此外,代码由Computers and Typesetting 的 B 卷全面记录。

标签: c# parsing tex


【解决方案1】:

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

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

为了使事情进一步复杂化,您总是使用带有 TeX 的宏包。默认包是 Plain,最著名的是 LaTeX。宏包包含大量代码,您必须合并这些代码才能解析您想要解析的 TeX 的特定“方言”。

【讨论】:

  • 谢谢,这对我来说理解起来很复杂,但我会尝试,我只想实现一点 TeX,比如用粗斜体和符号等写一些富文本。就像 wiki 比较相对于 html,我更喜欢 TeX,因为它可以很好地表示数学。
【解决方案2】:

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

【讨论】:

  • 我只对数学方程感兴趣,但我没有完整的语法来实现一个,例如 x^2 是 x 的平方,而 (x+2)^2 是 x 的平方+2,但 x^24 是 x 的 24 次方,否则 x^2 4 由空格分隔,使 x^2 和 4 成为单独的表达式。所以我没有具体的规则来说明什么都可以用作标记和表达式。
猜你喜欢
  • 2012-01-15
  • 2022-01-16
  • 1970-01-01
  • 1970-01-01
  • 2015-11-15
  • 2018-12-02
  • 1970-01-01
  • 2013-01-25
  • 2014-01-29
相关资源
最近更新 更多