zoukankan      html  css  js  c++  java
  • GO语言AST名词解释

    AST名词解释:

    1.普通Node,不是特定语法结构,属于某个语法结构的一部分

    Comment 表示一行注释 // 或者 / /
    CommentGroup 表示多行注释
    Field 表示结构体中的一个定义或者变量,或者函数签名当中的参数或者返回值
    FieldList 表示以”{}”或者”()”包围的Filed列表

    2.Expression & Types (都划分成Expr接口)

    BadExpr 用来表示错误表达式的占位符
    Ident 比如报名,函数名,变量名
    Ellipsis 省略号表达式,比如参数列表的最后一个可以写成 arg...
    BasicLit 基本字面值,数字或者字符串
    FuncLit 函数定义
    CompositeLit 构造类型,比如{1,2,3,4}
    ParenExpr 括号表达式,被括号包裹的表达式
    SelectorExpr 选择结构,类似于a.b的结构
    IndexExpr 下标结构,类似这样的结构 expr[expr]
    SliceExpr 切片表达式,类似这样 expr[low:mid:high]
    TypeAssertExpr 类型断言类似于 X.(type)
    CallExpr 调用类型,类似于 expr()
    StarExpr 表达式,类似于 *X
    UnaryExpr 一元表达式
    BinaryExpr 二元表达式
    KeyValueExp 键值表达式 key:value
    ArrayType 数组类型
    StructType 结构体类型
    FuncType 函数类型
    InterfaceType 接口类型
    MapType map类型
    ChanType 管道类型

    3.Statements

    BadStmt 错误的语句
    DeclStmt 在语句列表里的申明
    EmptyStmt 空语句
    LabeledStmt 标签语句类似于 indent:stmt
    ExprStmt 包含单独的表达式语句(例如:fmt.Printf())
    SendStmt chan发送语句
    IncDecStmt 自增或者自减语句
    AssignStmt 赋值语句
    GoStmt Go语句
    DeferStmt 延迟语句
    ReturnStmt return 语句
    BranchStmt 分支语句 例如break continue
    BlockStmt 块语句 {} 包裹
    IfStmt If 语句
    CaseClause case 语句
    SwitchStmt switch 语句
    TypeSwitchStmt 类型switch 语句 switch x:=y.(type)
    CommClause 发送或者接受的case语句,类似于 case x <-:
    SelectStmt select 语句
    ForStmt for 循环语句
    RangeStmt range 语句

    4.Declarations

    Spec type
    Import Spec
    Value Spec
    Type Spec
    BadDecl 错误申明
    GenDecl 一般申明(和Spec相关,比如 import “a”,var a,type a)
    FuncDecl 函数申明

    5.Files and Packages

    File 代表一个源文件节点,包含了顶级元素.
    Package 代表一个包,包含了很多文件.

  • 相关阅读:
    Java并发指南3:并发三大问题与volatile关键字,CAS操作
    Java并发指南2:深入理解Java内存模型JMM
    Java并发指南1:并发基础与Java多线程
    Java集合详解8:Java集合类细节精讲,细节决定成败
    Java集合详解7:一文搞清楚HashSet,TreeSet与LinkedHashSet的异同
    Java集合详解6:这次,从头到尾带你解读Java中的红黑树
    IP电话的配置
    孤立账户
    服务器维护知识
    VB学习一
  • 原文地址:https://www.cnblogs.com/skzxc/p/12944921.html
Copyright © 2011-2022 走看看