在计算机科学中,抽象语法树(Abstract Syntax Tree,AST),或简称语法树(Syntax tree),是源代码语法来自结构的一种抽象表示。它以树状的形式表现编程语言的语法结构,树上的每个节点都表示源代码中的一种结构。
之所求民尝晚以说语法是"抽象"的,是因为这里的语法并不会表示出真实语法中出现的每个细节。比如,嵌套括号被隐含在树的结构腊邀删中,并没有以节点的形式呈现;而类似于if-condition-then这样的条件跳转语句,可以使用带有两个分支的节点来表示。
和抽象语法树相对付射宙的是具体语法树(通常称作分析树)。一般的,在源代码的翻译和编译过程中,语法分析器创建出分析树。一旦AST被创建出来,在后续的处理过程中,比如语义分析阶段,会添加一些信息。
在计算机科学和语言学中,语法分析(英语:syntactic analysis,也叫parsing)元抹桨是根遥击据某种给茶液定的形式文法对由单词序列(如英语单词序列)构成的输入文本来自进行分析并确定其语法结济晚老困构的一种过程。
语法分析器360百科(parser)通常是作主整霉为编译器或解释美规由粉念则器的组件出现的,它的作用是进行响裂校脚厂语法检查、并构建由输入的单词组成的数据结构(一般是语法分析树、抽象吃侵均延合以作语法树等层次化的数据结构)。语法分析器通常使用一个独立的词法分析器从输她说每局苏府先卫入字符流中分离出一个个的"单词",并将单词流作为其输入。实际开率吧金位发中,语法分析器可以手工编写,也可以使用工具(半)自动生成。
语法分析器的任务主要是确定是否可以以及如何从语法为任最周酒村袁的起始符号推导出输入符号串(输入文本),主要来自可以通过两种方式完成: