grammar
读音:/ˈɡræmə(r)/
字面意思
grammar = 语法;一套完整规则集合,规定什么样的文本是合法、有意义的。
重点:包含两层——结构规则 + 符号含义约束。
简单理解
- grammar(语法):全局整套规则体系
- 符号怎么排列(syntax)
- 符号组合代表什么含义(语义相关约束)
- 不只是“格式长啥样”,还包含语言全部规范。
举例子
JavaScript grammar:
不仅规定 let a = 1; 书写格式,还规定变量声明、作用域、运算符优先级、关键字使用限制等整套规范。
相近词
- grammar:完整语言规则全集(句法+各类约束)
- syntax:仅表层句法结构规则
类比自然语言:
英语 grammar = 全部英语语法(句子结构、时态、单复数、词性规则)
syntax
读音:/ˈsɪntæks/
字面意思
syntax = 句法;只关注符号、token 的排列形式,只判断“格式对不对”,不关心含义。
重点:只管外形结构,不管表达什么意思。
简单理解
- syntax(句法):形式层面规则
输入文本能否被解析器切分成合法结构;
只检查排列,不理解语义。
举例子
let = 1;→ 语法错误 syntax error,token排列非法。let x = "abc" + null;→ 句法合法,句法检查不关心运算结果是否合理。
相近词
- syntax:符号排列形式规则(长什么样)
- semantics(语义):结构代表什么含义
- grammar:syntax + 语义约束组成的完整语言规范
通俗总结计算机领域:
syntax 是 grammar 的子集。
Grammar = Syntax(句法规则) + 各类静态语义约束。
计算机领域核心区分总结
- Syntax(句法)
只看代码书写形式,判断写法合不合法;解析阶段构造AST,不校验逻辑含义。 - Grammar(文法)
形式语言理论(编译原理)里:文法是用来生成合法句法句子的规则集合(产生式 A→B+C)。
编译原理术语补充:
我们说的上下文无关文法 CFG(Context-Free Grammar),就是用来描述语言 syntax 的形式工具。