TeX 中的通用语言处理器:关于 Tex 的“表达力”的理论问题

TeX 中的通用语言处理器:关于 Tex 的“表达力”的理论问题

TeX 作为其他语言的编译器或预处理器,其表现力如何?一个很好的例子是,listingsTeX 的软件包经过了修改,可以识别几乎所有编程语言的标记类型。所以,TeX 可以成为一种预处理器。

但是 TeX 可以作为解析器吗?你能用 TeX 实现类似 YACC 的东西吗?这样你就可以定义一个 BNF,然后其余的输入将由这个 BNF 解析。

让我们稍微简化一下这个问题。至少在理论上是可能的(不能通过模拟图灵机来作弊)制作这样的lex.tex文件,以便输入文件

 \input lex.tex
 DEFINITIONS
   letter=[a-zA-Z];
   digit=0-9;
   alphanum=$(Letter)|$(digit);
   id=$(letter)$(alphanum)*       
RULES
   id -> { some($); }
INPUT
   hello world

实际上,它的行为类似于一个词法分析器,有三个部分:定义、规则和输入。前两个部分定义了如何INPUT处理该部分,产生

some(hello) some(world)

如果这在某种程度上是可能的并且是现实的,那么人们可能会渴望更多,yacc.tex然后也许,一个通用处理器/编译器全部用 tex 编写?那不是很令人兴奋吗?

相关内容