抽象句法
此條目没有列出任何参考或来源。 (2023年2月3日) |
在计算机科学中,数据的抽象句法(英語:abstract syntax)是将其结构描述为数据类型(可能但不一定是抽象数据类型),独立于任何特定的表示或编码。 这特别用于计算机语言中文本的表示,这些语言通常存储在树结构中作为抽象语法树。对比仅由数据结构组成的抽象语法与具体句法,具体语法还包括有关表示的信息。 例如,具体句法包括括号(用于分组)或逗号(用于列表)等功能,这些功能不包含在抽象句法中,因为它们已经隐含在结构中。
如果结构是抽象的但名字(标识符)仍然是具体的(因此需要名字解析),则抽象语法被分类为一阶抽象句法(FOAS);如果名字本身是抽象的,则抽象语法被分类为高阶抽象句法。
用途
为了实现计算或通信,必须定义从抽象句法到特定机器表示和编码的映射; 这些可能被称为“具体句法”(在语言实现中)或“传输句法”(在通信中)。
程序的编译器的内部表示,通常由抽象句法根据类别(例如“语句”、“表达式”和“标识符”)来指定。 这与正在编译的语言的源语法(具体句法)无关(尽管它们通常非常相似)。 解析树类似于抽象句法树,但它通常还包含诸如括号之类的特征,这些特征在句法上很重要,但隐含在抽象句法树的结构中。
代数数据类型特别适合抽象语法的实现。