什么是抽象语法树?(an abstract syntax tree?)

抽象语法树(AST)是用来表示程序中出现的函数的语法结构。它是基于源代码的编程。在设计中,抽象语法树通常是分层的,它从基本函数开始,向下流动,以显示每个基本函数中更复杂的函数和代码。使用此树可以让程序员更容易地可视化代码,而无需查看源代码本身,因为源代码本身要长得多,并且可能会暴露代码中的缺陷或弱点。树被称为抽象树,不是因为它难以理解或具有抽象形状,而是因为它不包含编码语法,如括号标记和其他不可避...

抽象语法树(AST)是用来表示程序中出现的函数的语法结构。它是基于源代码的编程。在设计中,抽象语法树通常是分层的,它从基本函数开始,向下流动,以显示每个基本函数中更复杂的函数和代码。使用此树可以让程序员更容易地可视化代码,而无需查看源代码本身,因为源代码本身要长得多,并且可能会暴露代码中的缺陷或弱点。树被称为抽象树,不是因为它难以理解或具有抽象形状,而是因为它不包含编码语法,如括号标记和其他不可避免地出现在代码中的符号。

An abstract syntax tree gives the programmer a quick way to look over the programming to see each condition and how it applies to the program overall.

当程序员构建程序时,他或她必须从“if-then”语句和“or-else”语句中构建函数。查看源代码时,很难看到是否所有语句和条件都已完全满足,以及是否所有函数都已正确创建。抽象语法树为程序员提供了一种快速查看编程的方法,以查看每个条件以及它如何应用于整个程序。

这棵树是按等级划分的。顶部是一个主语句,从该语句开始,分支向下流动,以显示满足条件的内容。这将继续,显示整个程序的其他功能和条件。编程中的变量通常也会显示出来。大多数编程语言都能够生成抽象语法树。

“抽象”通常指形式不良、难以理解或无定形。抽象语法树并非如此。之所以使用“abstract”一词,是因为树没有按原样显示语法和编程;相反,它会删除对显示不重要的隐式符号。例如,括号在编程中经常被大量使用,但它们不会显示在树上。这是因为显示这种语法需要更多的空间,使查看树变得更困难,程序员将知道源代码中的这些符号。

如果程序员希望看到这些辅助符号,通常会使用具体的语法树。这些树与抽象的种类相似,只是它们在所有符号中都更加详细。此树更适合于查找丢失的符号或代码块,而抽象树更适合于检查程序的函数和变量。

  • 发表于 2021-12-11 09:12
  • 阅读 ( 178 )
  • 分类:互联网

你可能感兴趣的文章

抽象类(abstract class)和c中的接口#(interface in c#)的区别

...让我们详细讨论一下两者的理论方面。 什么是抽象类(an abstract class)? 抽象类是一种特殊类型的类,它充当其他类的基,不能实例化。抽象类的实现逻辑由其派生类提供。为了使一个类抽象,使用了“abstract”修饰符,这意味着...

  • 发布于 2021-06-25 03:34
  • 阅读 ( 360 )

抽象类(abstract class)和java接口(interface in java)的区别

...们详细研究一下两者的区别。 什么是java中的抽象类(an abstract class in java)? Java中的抽象类是一个声明为抽象的类——它可能包含也可能不包含抽象方法。它与Java接口非常相似,只是它可以包含默认的方法实现。与面向对象编程...

  • 发布于 2021-06-25 03:52
  • 阅读 ( 307 )

语法(syntax)和语义学(semantics)的区别

...义的主要区别在于句法与结构有关,语义与意义有关。 什么是语法(syntax)? 句法是研究句子结构的语言学分支学科。它研究一套规则、原则和过程,这些规则、原则和过程控制着任何语言的句子结构。在这里,句子的术语结构...

  • 发布于 2021-06-27 06:31
  • 阅读 ( 597 )

语法(grammar)和语法(syntax)的区别

...rds in a language. This is the main difference between grammar and syntax. 什么是语法(syntax)? 句法是研究句子结构的语言学领域。句法是指在一种语言中用来造句的单词和短语的排列。它研究支配任何语言句子结构的一套规则、原则和过程。句...

  • 发布于 2021-06-28 01:01
  • 阅读 ( 690 )

形态学(morphology)和语法(syntax)的区别

...中,我们将更详细地研究这些字段。 这篇文章包括, 1.什么是形态学 2.语素类型 2.什么是语法 3. Difference Between Morphology and Syntax   什么是形态学(morphology)? 形态学是语言学的另一个重要分支学科。形态学研究单词的结构。它专...

  • 发布于 2021-06-28 02:04
  • 阅读 ( 288 )

解析树(parse tree)和语法树(syntax tree)的区别

...译器和以后代码生成所需的符号表。 覆盖的关键领域 1.什么是语法树-定义,功能2.什么是语法树-定义,功能3.语法树和语法树的区别是什么-关键区别的比较 关键术语 抽象语法树,编译器,具体语法树,派生树,解析树,语法...

  • 发布于 2021-07-01 10:14
  • 阅读 ( 1730 )

封装(encapsulation)和c语言中的抽象#(abstraction in c#)的区别

...t方法赋值,public get方法获取值。 什么是c语言中的抽象#(abstraction in c#)? 抽象有助于隐藏实现细节,只允许向用户显示功能。假设一台电视机的遥控器。用户不需要知道控制器的内部电路就可以使用它。抽象与此类似。它关注...

  • 发布于 2021-07-01 14:04
  • 阅读 ( 379 )

抽象类(abstract class)和php中的接口(interface in php)的区别

...象,抽象类,接口,面向对象,PHP 什么是php中的抽象类(abstract class in php)? 抽象方法是没有任何实现的方法。抽象类是至少有一个抽象方法的类。它既可以有抽象的方法,也可以有非抽象的方法。关键字“abstract”用于声明抽...

  • 发布于 2021-07-01 18:08
  • 阅读 ( 230 )

扎根的(rooted)和无根系统发育树(unrooted phylogenetic tree)的区别

...描述生物间关系的两类系统发育树。 覆盖的关键领域 1.什么是有根系统发育树-定义、特征、重要性2。什么是无根系统发育树-定义,特征,重要性3。有根和无根系统发育树之间有什么相似之处——共同特征概述4。有根和无根系...

  • 发布于 2021-07-02 00:16
  • 阅读 ( 679 )

词汇分析(lexical analysis)和句法分析(syntax analysis)的区别

...分析是编译过程中涉及的两个步骤。 覆盖的关键领域 1.什么是词法分析-定义,功能2.什么是语法分析-定义,功能3.词法分析和语法分析的区别-主要区别比较 关键术语 编译器,词法分析,语法分析 什么是词汇分析(lexical ****ysis)...

  • 发布于 2021-07-02 01:30
  • 阅读 ( 422 )
cudfbgwhxe
cudfbgwhxe

0 篇文章

相关推荐