gpt4 book ai didi

java - 用Java写一个LaTeXParser,概念性攻击

转载 作者:行者123 更新时间:2023-12-02 07:13:11 24 4
gpt4 key购买 nike

好吧,所以我必须用 java 编写一个 LaTeXParser,我将接收一个与下面的文件非常相似的文件,并读取它的有效性和错误。现在我并不是在寻求真正的帮助或代码,而是更多地寻求概念性的理解,即如何解决问题。我将使用堆栈来存储 block 并确保所有内容都正确排序。所以我问你的问题是,如何处理?

例如,我是否应该首先获取所有“\begin{_}”并将它们放入堆栈中,然后使用相应的“\end{}”弹出它们?我想知道使用基于字符串的大小写切换系统,当找到特定字符串时,该系统将在我的堆栈上根据该字符串执行必要的操作。

或者可能是 2 个相互抵消的堆栈,所有\在一个堆栈中开始,在另一个堆栈中结束,并且它们的 {__} 匹配,我开始将它们弹出,什么不.

所以,是的,只是想知道 SOF 的聪明人对我应该如何思考这个问题以及如何处理它有什么看法。感谢您的投入!

\documentclass{article}
\usepackage{amsmath, amssymb, amsthm}
\begin{document}
{\Large \begin{center} Homework Problems \end{center}}\begin{itemize}\item\end{itemize}
\begin{enumerate}
\item Prove: For all sets $A$ and $B$, $(A - B) \cup
(A \cap B) = A$.
\begin{proof}
\begin{align}
& (A - B) \cup (A \cap B) && \\
& = (A \cap B^c) \cup (A \cap B) && \text{by
Alternate Definition of Set Difference} \\
& = A \cap (B^c \cup B) && \text{by Distributive Law} \\
& = A \cap (B \cup B^c) && \text{by Commutative Law} \\
& = A \cap U && \text{by Union with the Complement Law} \\
& = A && \text{by Intersection with $U$ Law}
\end{align}
\end{proof}
\item If $n = 4k + 3$, does 8 divide $n^2 - 1$?
\begin{proof}
Let $n = 4k + 3$ for some integer $k$. Then
\begin{align}
n^2 - 1 & = (4k + 3)^2 - 1 \\
& = 16k^2 + 24k + 9 - 1 \\
& = 16k^2 + 24k + 8 \\
& = 8(2k^2 + 3k + 1) \text{,}
\end{align}
which is certainly divisible by 8.
\end{proof}
\end{enumerate}
\end{document}

编辑:哈哈,我认为每个人都以这种方式想得太多了,我并不是在寻找任何可以识别和编译代码的东西,或者通过这个文件实际执行 LATEX 语言的操作。我只是希望能够编写一个文本文件,就像上面的文件一样,让我的程序打开它,读取它,然后说“嘿!这会起作用,因为每个开始的 block 也会结束!”或者“嘿,第 10 行有错误!”不多不少。只是一个简单的 validator/错误检查器,它使用堆栈来包含 block ,然后在找到末尾时弹出它们等等。再说一遍,我不是在寻找代码或讲义!我想要的只是一些解决这个问题的好想法和方法,也许最好是一些伪代码结构!

例如...我正在考虑将其全部包含在我的 main 中的 1 个类中,并创建一个堆栈来保存文件中所有编码如下的字符串“\begin{ _} "然后当我找到相应的 "\end{} "时,只需将其弹出并从列表或其他内容中检查出来。如果在运行文件结束时弹出每个起始 block ,则我有一个有效的 .txt 文件。

最佳答案

尝试推出自己的解析器是一项艰巨的任务。有多个Parser Generators这可以减轻任务中的一些繁忙工作。 ANTLR是java中流行的一种。

您需要做的第一件事就是找出 latex 是什么语言?更复杂的语言(如 C++)无法使用可用于更常规语言(如上述)的相同类型的解析器进行解析。

以下Jules Bean post让我认为 Latex 比大多数编程语言更难解析。

I'm pretty sure it's not an LALR language. It's context dependent and is capable of modifying it's own syntax. I think it is probably technical impossible to parse without actually executing the macros. I.e. you need a TeX state machine to parse it in full generality.

'well-behaved' LaTeX is probably LALR, though.

关于java - 用Java写一个LaTeXParser,概念性攻击,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15256679/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com