【问题标题】:How to define the grammar for TeX/LaTeX and Makefile?如何定义 TeX/LaTeX 和 Makefile 的语法?
【发布时间】:2014-03-03 16:57:32
【问题描述】:

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

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

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

谢谢。

【问题讨论】:

  • 这个问题似乎离题了,因为它是关于自然语言处理理论的,最好在Linguistics 上提问。
  • @Thomas 更像是一个关于编程/技术语言的问题,我不知道有多少程序员可能会访问 SO 的那个分支,我也不认为有经验的语言几乎可以帮助和经验丰富的程序员一样。

标签: makefile latex grammar tex


【解决方案1】:

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

【讨论】:

  • 等等,“基于宏的语言”的意思不能翻译成“你可以简单地执行一个文本替换”来获得关键字的新含义吗?
  • TeX 确实大量使用了宏,但不幸的是它比这更复杂。换句话说,根据您的定义,它并不完全是基于宏的。
【解决方案2】:

我的语言是上下文无关的吗?

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

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

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

所以我们把语言处理问题分为3个步骤:

  1. 构建过度生成的 CFG;这是构成我们添加其他组件的坚实基础的“句法”部分,
  2. 添加“语义”约束(带有一些额外的句法和语义约束)
  3. 主要语义(静态语义、语用、定语语义等)

编写上下文无关语法是谈论所有语言的一种非常标准的方式! 这是一个非常清晰和具有教学意义的语言符号!! (有时并没有说实话)。

当我们说“不是上下文无关的,是图灵完备的,...”时,您可以将其翻译为“您可以计算大量语义额外工作”:)

我该如何谈论它?

有很多选择。我喜欢做以下事情的一个子集:

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

【讨论】:

    猜你喜欢
    • 2019-12-11
    • 1970-01-01
    • 2013-07-20
    • 2023-04-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多