grammar

读音:/ˈɡræmə(r)/

字面意思

grammar = 语法;一套完整规则集合,规定什么样的文本是合法、有意义的

重点:包含两层——结构规则 + 符号含义约束。

简单理解

  • grammar(语法):全局整套规则体系
  1. 符号怎么排列(syntax)
  2. 符号组合代表什么含义(语义相关约束)
  • 不只是“格式长啥样”,还包含语言全部规范。

举例子

JavaScript grammar:
不仅规定 let a = 1; 书写格式,还规定变量声明、作用域、运算符优先级、关键字使用限制等整套规范。

相近词

  • grammar:完整语言规则全集(句法+各类约束)
  • syntax:仅表层句法结构规则

类比自然语言:
英语 grammar = 全部英语语法(句子结构、时态、单复数、词性规则)

syntax

读音:/ˈsɪntæks/

字面意思

syntax = 句法;只关注符号、token 的排列形式,只判断“格式对不对”,不关心含义。

重点:只管外形结构,不管表达什么意思。

简单理解

  • syntax(句法):形式层面规则
    输入文本能否被解析器切分成合法结构;
    只检查排列,不理解语义

举例子

  1. let = 1;语法错误 syntax error,token排列非法。
  2. let x = "abc" + null; → 句法合法,句法检查不关心运算结果是否合理。

相近词

  • syntax:符号排列形式规则(长什么样)
  • semantics(语义):结构代表什么含义
  • grammar:syntax + 语义约束组成的完整语言规范

通俗总结计算机领域:
syntax 是 grammar 的子集。
Grammar = Syntax(句法规则) + 各类静态语义约束。

计算机领域核心区分总结

  1. Syntax(句法)
    只看代码书写形式,判断写法合不合法;解析阶段构造AST,不校验逻辑含义。
  2. Grammar(文法)
    形式语言理论(编译原理)里:文法是用来生成合法句法句子的规则集合(产生式 A→B+C)。

编译原理术语补充:
我们说的上下文无关文法 CFG(Context-Free Grammar),就是用来描述语言 syntax 的形式工具。