【问题标题】:generate latex source files生成乳胶源文件
【发布时间】:2013-04-06 23:56:44
【问题描述】:

需要和推荐哪些工具(例如使用 java)来创建“解释器”,从文本文件(具有自己的语法)生成乳胶源文件?

示例:

This is a list of items:
* first
* second
* third

应该生成一个可编译的 *.tex 文件,其中包含

This is a list of items:
\begin{itemize}
  \item first
  \item second
  \item third
\end{itemize}

【问题讨论】:

  • 您可以为此使用 ANTLR - 不过学习曲线相当陡峭。
  • 谷歌在 Java 中寻找 Merkdown 解析器?

标签: java latex code-generation


【解决方案1】:

您正在尝试开发的东西称为解析器。 开发解析器时首先要做的是确定要解析的文件的formal grammar(即输入文件必须遵循的语法规则)。形式语法通常用EBNF 表示。例如,文本文件中包含的项目列表的正式语法可能是:

list = { list_element } ;
list_element = *, " ", {" "}, {all_characters} ;
all_characters = ? all visible characters ? ;

如果您要解析的文件的语法是regular(即没有递归),您可以简单地使用正则表达式解析您的文件(尽管它们可能会变得复杂)。

即使您的语法不规则也可以使用的另一个选项是使用解析器生成器。解析器生成器采用您的正式语法并生成一个程序,该程序能够解析符合您的语法的输入文件,并生成一个代表输入文件的abstract syntax tree,您可以使用它来生成输出文件(最后!)。 Java 中最常见的解析器生成器是javaccANTLR(尽管它们是more)。

解析的理论相当复杂,但解析器生成器的使用听起来要简单得多。所以具体来说,我的建议是:

  1. 确定输入文件的语法并写下来
  2. 遵循 javacc 教程(参见 SO post

你应该能够从你的文本文件中生成 tex 文件。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-12-26
    • 1970-01-01
    • 1970-01-01
    • 2014-01-18
    • 2011-01-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多