【Groovy】编译时元编程 ( AST 语法树分析 | ClassNode 根节点 | 方法 Methods 节点 | 字段 Fields 节点 | 属性 Properties 节点 )

简介: 【Groovy】编译时元编程 ( AST 语法树分析 | ClassNode 根节点 | 方法 Methods 节点 | 字段 Fields 节点 | 属性 Properties 节点 )

一、AST 语法树分析


在上一篇博客 【Groovy】编译时元编程 ( 编译时元编程引入 | 声明需要编译时处理的类 | 分析 Groovy 类的 AST 语法树 ) 中 , 使用 GroovyConsole 工具分析了


class Student{
    def name
    def hello(){
        println "hello"
    }
}


类的 AST 语法树 , 下面分析该语法树 ;

image.png


展开 AST 语法树后的效果 :

image.png


在最顶层的根节点是 ClassNode 节点 , 在根节点下 , 有 方法 Methods 节点 , 字段 Fields 节点 , 属性 Properties 节点 ;

方法 Methods 节点 有 2 22 个 , 一个是默认的构造方法 , 一个是自定义的 hello 方法 , 对应

def hello(){
        println "hello"
    }


方法 ; 字段 Fields 节点 和 属性 Properties 节点 各一个 , 就是自定义的 name 字段 , 对应

def name

成员 ;

拿到了 AST 语法树之后 , 就可以获取到 Student 类的每一个节点 , 类 , 方法 , 属性 , 字段 ;


目录
相关文章
夸克网盘的文件怎么保存到百度网盘?
夸克网盘的文件怎么保存到百度网盘?
7069 2
夸克网盘的文件怎么保存到百度网盘?
|
存储 监控 网络协议
5张图,带你了解微服务架构治理
5张图,带你了解微服务架构治理
1602 0
5张图,带你了解微服务架构治理
|
3月前
|
JSON 监控 API
1688 电商 API 接口,批发采购数据轻松掌握
本文介绍了1688 API在批发采购中的应用,涵盖API功能、接入步骤、Python调用示例及实际业务场景,助力企业实现数据驱动的高效采购管理。
335 1
|
9月前
|
人工智能 Java 程序员
通义灵码AI编码助手和AI程序员背后的技术
通义灵码AI编码助手和AI程序员背后的技术,由通义实验室科学家黎槟华分享。内容涵盖三部分:1. 编码助手技术,包括构建优秀AI编码助手及代码生成补全;2. 相关的AI程序员技术,探讨AI程序员的优势、发展情况、评估方法及核心难点;3. 代码智能方向的展望,分析AI在软件开发中的角色转变,从辅助编程到成为开发主力,未来将由AI执行细节任务,开发者负责决策和审核,大幅提升开发效率。
402 12
|
DataWorks 监控 安全
DataWorks产品使用合集之如何安装开源第三方包
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
|
负载均衡 监控 Cloud Native
FinOps
“【5月更文挑战第25天】”
451 5
|
SQL 分布式计算 大数据
MaxCompute操作报错合集之在数据同步时,遇到报错"InvalidData: The string's length is more than 8388608 bytes."是什么导致的
MaxCompute是阿里云提供的大规模离线数据处理服务,用于大数据分析、挖掘和报表生成等场景。在使用MaxCompute进行数据处理时,可能会遇到各种操作报错。以下是一些常见的MaxCompute操作报错及其可能的原因与解决措施的合集。
371 0
Elasticsearch系列——在使用Kibana查询时,只查询某个字段的值的语法
Elasticsearch系列——在使用Kibana查询时,只查询某个字段的值的语法
|
监控 数据可视化 搜索推荐
四度入选Gartner后Quick BI又有大动作 | 着重交互分析与监控告警升级,持续优化分析链路
四度入选Gartner后Quick BI又有大动作 | 着重交互分析与监控告警升级,持续优化分析链路
635 0
|
JavaScript API 数据安全/隐私保护
五分钟让你了解vue表单
我们先可以创建一个普通的表单,我们知道的是表单是相对比较复杂的,antv被我们诟病为就是其表单,这个设计出来的理念就是和别的组件库不一样,我们就在这篇文章分成四个部分来讲述,现在我们的第一个部分,就是我们的普通的表单。
五分钟让你了解vue表单