生成乳胶源文件

Moo*_*lit 1 java latex code-generation

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

例:

This is a list of items:
* first
* second
* third
Run Code Online (Sandbox Code Playgroud)

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

This is a list of items:
\begin{itemize}
  \item first
  \item second
  \item third
\end{itemize}
Run Code Online (Sandbox Code Playgroud)

Xio*_*345 5

您正在尝试开发的内容称为解析器.开发解析器时要做的第一件事是确定要解析的文件的正式语法(即输入文件必须遵循的语法规则).形式语法通常用EBNF表示.例如,文本文件中包含的项目列表的正式语法可以是:

list = { list_element } ;
list_element = *, " ", {" "}, {all_characters} ;
all_characters = ? all visible characters ? ;
Run Code Online (Sandbox Code Playgroud)

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

另一个选项,即使你的语法不规则也会起作用,就是使用解析器生成器.解析器生成器采用您的正式语法并生成一个程序,该程序能够解析与您的语法相关的输入文件,并生成一个抽象语法树,表示您可以用来生成输出文件的输入文件(最后!).Java中最常见的解析器生成器是javaccANTLR(尽管它们更多).

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

  1. 确定输入文件的语法并将其写下来
  2. 关注javacc教程(查看此SO帖子)

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