有哪些必需和推荐的工具(例如使用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}
答案 0 :(得分:5)
您正在尝试开发的内容称为解析器。 开发解析器时要做的第一件事是确定要解析的文件的formal grammar(即输入文件必须遵循的语法规则)。形式语法通常用EBNF表示。例如,文本文件中包含的项目列表的正式语法可以是:
list = { list_element } ;
list_element = *, " ", {" "}, {all_characters} ;
all_characters = ? all visible characters ? ;
如果要解析的文件的语法是regular(即没有递归),您只需使用正则表达式解析文件(尽管它们可能会变得复杂)。
另一个选项,即使你的语法不规则也会起作用,就是使用解析器生成器。解析器生成器使用形式语法并生成一个程序,该程序能够解析与您的语法相关的输入文件并生成表示输入文件的abstract syntax tree,您可以使用该文件生成输出文件(最后!) 。 Java中最常见的解析器生成器是javacc和ANTLR(尽管它们是more)。
正在解析的理论相当复杂,但解析器生成器的使用要听起来要简单得多。具体来说,我的建议是:
您应该能够从文本文件中生成tex文件。