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

时间:2014-03-03 16:57:33

标签: makefile latex grammar tex

这两种技术都是通过充满宏的语言表达的,但从更技术的角度来说,语法是什么以及如何描述自己的属性?

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

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

感谢。

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

我的语言是否无上下文?

我相信每一种有用的语言最终都是图灵完整,反身等等。

幸运的是,这不是故事的结局。

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

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

  1. 构建过度生成的CFG;这是"句法"构成我们添加其他组件的坚实基础的部分,
  2. 添加"语义"约束(带有一些额外的句法和语义约束)
  3. 主要语义学(静态语义学,语用学,定语语义学等)
  4. 编写无上下文语法是谈论所有语言的一种非常标准的方式! 这是一种非常清晰的语言符号! (有时并没有说出所有真相)。

    当我们说"不是没有上下文时,图灵完成,......"你可以把它翻译成"你可以计算很多语义额外的工作" :)

    我该怎么说呢?

    有许多选择。我喜欢做以下的一部分:

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