如何定义TeX/LaTeX和Makefile的语法?

如何定义TeX/LaTeX和Makefile的语法?,makefile,latex,grammar,tex,Makefile,Latex,Grammar,Tex,这两种技术都是通过充满宏的语言来表达的,但用更专业的术语来说,什么是语法以及如何描述它们自己的属性 我对图形表示不感兴趣,我所说的属性指的是关于这个主题的描述性短语,所以请不要只追求一个充满弧线和图形的BNF/EBNF导向的响应 我假设两者都是上下文无关的语法,但这是一个很大的语法家族,有没有一种方法可以更精确地描述这2个语法 谢谢。TeX可以在运行时更改,因此它不是上下文无关的。我的语言上下文无关吗? 我相信每一种有用的语言最终都是图灵完备的、自反的等等 幸运的是,故事还没有结束 大多数解析器

这两种技术都是通过充满宏的语言来表达的,但用更专业的术语来说,什么是语法以及如何描述它们自己的属性

我对图形表示不感兴趣,我所说的属性指的是关于这个主题的描述性短语,所以请不要只追求一个充满弧线和图形的BNF/EBNF导向的响应

我假设两者都是上下文无关的语法,但这是一个很大的语法家族,有没有一种方法可以更精确地描述这2个语法


谢谢。

TeX可以在运行时更改,因此它不是上下文无关的。

我的语言上下文无关吗?

我相信每一种有用的语言最终都是图灵完备的、自反的等等

幸运的是,故事还没有结束

大多数解析器生成工具(yacc、antler等)最多处理上下文无关语法(CFG)

因此,我们将语言处理问题分为三个步骤:

  • 建立一个超生成CFG;这是构成坚实基础的“句法”部分,我们在其中添加了其他成分
  • 添加“语义”约束(带有一些额外的语法和语义约束)
  • 主要语义学(静态语义学、语用学、定语语义学等)
  • 编写上下文无关语法是谈论所有语言的一种非常标准的方式! 这是一个非常清晰的语言教学符号!!(有时也不是全部说实话)

    当我们说“不是上下文无关的,图灵是完整的,…”时,您可以将其翻译为“您可以通过大量语义额外工作进行计数”:

    我该怎么说呢?

    有很多选择。我想做以下的一部分:

  • 编写一个清晰的面向语义的CFG
  • 对于每个符号(T或NT),添加/定义一组语义属性
  • 对于每个产生式规则:添加语法/语义约束谓词
  • 对于每个生产规则:添加一组方程式以定义属性值
  • 对于每个产生式规则:添加英文解释、示例等

  • 这个问题似乎离题了,因为它是关于自然语言处理的理论,可能会被问得更好。@Thomas更像是一个关于编程/技术语言的问题,我不知道有多少程序员可以访问SO的这个分支,我也不认为一个有经验的语言可能比一个有经验的程序员帮助更多。等等,“基于宏的语言”的含义不能翻译成“你可以简单地执行文本替换”来获得关键字的新含义?TeX肯定广泛使用宏,但不幸的是,它比这更复杂。换句话说,根据您的定义,它不是完全基于宏的。