![上下文无关的 LaTex](https://linux22.com/image/343168/%E4%B8%8A%E4%B8%8B%E6%96%87%E6%97%A0%E5%85%B3%E7%9A%84%20LaTex.png)
显然,解析 TeX 是图灵完备的。但是,我写的不是 TeX,而是 LaTeX。在此过程中,我从 Auctex 等编辑器插件的帮助中获益匪浅。这些插件依赖于我写作的句法模型(因此,它们需要对其进行解析)。我猜想它们可能会因直接运行某些 TeX 命令而感到困惑。
因此,我想知道,如果可以创建一个上下文无关语法,
- 是有效的 LaTeX,并且支持(如果不是全部,至少是大部分)
- 保证不包含任何改变语法的命令
用该语法编写的文档被认为是“安全的”。我猜 1. 相对简单(不是吗?)。为了满足 2.,我建议按以下方式构建每个文档:
- (TeX 或不安全的 LaTeX)前言
- 一个或多个安全文档
可以使用以下方法检查文档:1. 从序言中创建自定义格式 2. 检查对语法的影响 3. 如果存在任何此类修改,则拒绝编译
这是一个合理的方法吗?
- 从技术上来说,它是否合理(即,给定 tex 解释器的状态作为格式文件,是否可以检测到接受的语法已更改?)
- LaTeX 的标准形式是否与上下文无关?
- 这种方法有多完整(即哪些广泛使用的功能不起作用)?
编辑:一个简单的例子是 TeX 数学分隔符。 追踪缺失的结束符比追踪一对和$
困难得多。 但是,只要没有设置其他字符来代替,简单的扫描仪就可以检测到它的任何使用并报告错误。$
\(
\)
$