抽象句法

在计算机科学中，数据的抽象句法（）是将其结构描述为数据类型（可能但不一定是抽象数据类型），独立于任何特定的表示或编码。 这特别用于计算机语言中文本的表示，这些语言通常存储在树结构中作为抽象语法树。对比仅由数据结构组成的抽象语法与具体句法，具体语法还包括有关表示的信息。 例如，具体句法包括括号（用于分组）或逗号（用于列表）等功能，这些功能不包含在抽象句法中，因为它们已经隐含在结构中。

如果结构是抽象的但名字（标识符）仍然是具体的（因此需要名字解析），则抽象语法被分类为一阶抽象句法（FOAS）；如果名字本身是抽象的，则抽象语法被分类为高阶抽象句法。

用途
为了实现计算或通信，必须定义从抽象句法到特定机器表示和编码的映射； 这些可能被称为“具体句法”（在语言实现中）或“传输句法”（在通信中）。

程序的编译器的内部表示，通常由抽象句法根据类别（例如“语句”、“表达式”和“标识符”）来指定。 这与正在编译的语言的源语法（具体句法）无关（尽管它们通常非常相似）。 解析树类似于抽象句法树，但它通常还包含诸如括号之类的特征，这些特征在句法上很重要，但隐含在抽象句法树的结构中。

代数数据类型特别适合抽象语法的实现。

参见
 高阶抽象句法
 ASN.1

参考文献

 
程序设计语言理论
编译原理
句法
语法分析