Atitit. 构造ast 语法树的总结attilax oao
Atitit. 构造ast 语法树的总结attilax oao
1. 能那更加有意义的名字来命名ast节点。。。 1
2. 如何命名表达式名称。。使用实际对象名称,而不是操作符号表达式更好 1
2.1. 参考在的ast view 一类的实现... 1
3. ast view (自是个160k的jar ) 2
3.1. 多条语句ast结构 2
3.2. 变量定义 int b,c; 的ast结构 2
3.3. 方法调用meth1(a=1,b=2,c=3); 的ast结构 2
3.4. 注解的ast 3
4. 误解的问题 3
4.1. 语法书子能是个二叉树,实际上多叉树越好.. 3
4.2. 非要不个ast放到个stack黑头了..实际上不要stack牙行了... 3
4.3. Ast非要解释成个map一类的数据结构了,实际上直接ast走是个tree,能直接输出使用了... 3
4.4. Ast不一定要操作符表达式了,,,对象化名称牙越好... 3
4.5. =等号不一定是个赋值运算符, 定义变量的时候儿走马意义..实际能失去的了.. 3
1. 能那更加有意义的名字来命名ast节点。。。
以前是单词流必须识别为保留字,标识符(变量),常量,操作符(运算符 )和界符五大类
实际上,参考ast view (自是个160k的jar )。。
作者:: 老哇的爪子 Attilax 艾龙, EMAIL:1466519819@qq.com
转载请注明来源: http://blog.csdn.net/attilax
2. 如何命名表达式名称。。使用实际对象名称,而不是操作符号表达式更好
2.1. 参考在的ast view 一类的实现...
3. ast view (自是个160k的jar )
3.1. 多条语句ast结构
3.2. 变量定义 int b,c; 的ast结构
VariableDeclarationStatement [123+8]
》》TYPE (int)
>> FRAGMENTS (2) (b,c)
Int a=1;
VariableDeclarationStatement [115+8] (Int a=1;)
VariableDeclarationFragment [119+3] (a=1)
NAME ::变量名
INITIALIZER 变量值
问题?? =(等号)好像马兰。。。
3.3. 方法调用meth1(a=1,b=2,c=3); 的ast结构
MethodInvocation [136+18]
》》NAME 方法名
》》ARGUMENTS (3) 参数列表
Assignment [142+3] ( a=1 表达式 )
》》LEFT_HAND_SIDE 参数面称
》》OPERATOR: '='
>>RIGHT_HAND_SIDE 参数值
3.4. 注解的ast
@anno1(key1="v1")
private static void meth2(int k) {
MethodDeclaration [196+100] 方法定义
》》MODIFIERS (3) / NormalAnnotation [196+17] 注解
。。//TYPE_NAME 注解名称
。。//VALUES (1) 注解值 key1="v1"
。。//VALUES/MemberValuePair [203+9] 注解值 key1="v1"
..///VALUES/MemberValuePair /NAME 注解值名称 key1
/VALUES/MemberValuePair // VALUE 注解值的值 v1
???? 等号好像马兰。。
4. 误解的问题
4.1. 语法书子能是个二叉树,实际上多叉树越好..
4.2. 非要不个ast放到个stack黑头了..实际上不要stack牙行了...
4.3. Ast非要解释成个map一类的数据结构了,实际上直接ast走是个tree,能直接输出使用了...
4.4. Ast不一定要操作符表达式了,,,对象化名称牙越好...
4.5. =等号不一定是个赋值运算符, 定义变量的时候儿走马意义..实际能失去的了..
Atitit. 构造ast 语法树的总结attilax oao相关推荐
- 【Groovy】编译时元编程 ( 利用注解进行 AST 语法树转换 | 定义注解并使用 GroovyASTTransformationClass 注明 AST 转换接口 | AST 转换接口实现 )
文章目录 一.利用注解进行 AST 语法树转换 1.定义注解并使用 GroovyASTTransformationClass 注明 AST 转换接口 2.AST 转换接口实现 3.定义 Groovy ...
- 【Groovy】编译时元编程 ( 方法拦截时用到的 AST 语法树节点 MethodNode 节点 | MethodNode 节点分析 | MethodNode 节点中的BlockStatement)
文章目录 一.方法拦截时用到的 AST 语法树节点 MethodNode 节点 二.MethodNode 节点分析 三.MethodNode 节点中的 BlockStatement 集合 一.方法拦截 ...
- 【Groovy】编译时元编程 ( AST 语法树分析 | ClassNode 根节点 | 方法 Methods 节点 | 字段 Fields 节点 | 属性 Properties 节点 )
文章目录 一.AST 语法树分析 一.AST 语法树分析 在上一篇博客 [Groovy]编译时元编程 ( 编译时元编程引入 | 声明需要编译时处理的类 | 分析 Groovy 类的 AST 语法树 ) ...
- 【Groovy】编译时元编程 ( 编译时元编程引入 | 声明需要编译时处理的类 | 分析 Groovy 类的 AST 语法树 )
文章目录 一.编译时元编程引入 二.声明需要编译时处理的类 三.分析 Groovy 类的 AST 语法树 一.编译时元编程引入 在之前的 " [Groovy]MOP 元对象协议与元编程 &q ...
- 什么是php的ast结构,什么是AST?Vue源码中AST语法树的解析
这篇文章给大家介绍的内容是关于什么是AST?Vue源码中AST语法树的解析,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 什么是AST AST是指抽象语法树(abstract syn ...
- python-js逆向之AST语法树初学(一)
这两天看了什么是控制流平坦化,又研究了下ast语法数,如何把混淆乱序后的代码恢复之前的样子. 知识点:1.js包为 recast 2.Recast除了parse/print/builder以外, 还有 ...
- 关于css 的AST 语法树的理解
css 处理插件大致分为压缩css和给css添加浏览器兼容前缀. cssmin 可以压缩css,大致原理是将使用正则将css 中的注释和空格删除. px2rem 插件是将css 中的px 转换为 re ...
- Vue源码解析之AST语法树(三)
parse解析完之后,将生成的ast返回到baseCompile,接下来就是调用optimize方法对ast进行优化. var createCompiler = createCompilerCreat ...
- AST语法结构树初学者完整教程
AST语法结构树初学者完整教程 编写你的第一个 Babel 插件 不太喜欢上来就讲大道理,先来个小栗子,做个简单而又实用的功能,做完后,理论你就理解一大半了. 我们需要antd里面的一个组件Butto ...
- AST抽象语法树的基本思想
AST抽象语法树的基本思想 前言 AST概述 AST结构 AST解析 转换 生成 前言 在阅读java ORM框架spring data jpa的源码时,发现Hibernate(spring data ...
最新文章
- 官宣!邢波出任全球首个AI大学校长,MBZUAI明年1月迎来首批新生
- mysql 设置表空间位置_如何修改表空间数据文件路径
- HTTP相关知识 - 1
- JPA的泛型DAO设计及使用
- UDP、广播、多播与IGMP(七)
- hdc mfc 画扇形图_MFC画图总结-DIB图形绘制
- python3.7代码_python3.7idle如何测试源代码
- @程序员,你真得了解每天打交道的字节吗?
- 【图】max51开发板top页
- 使用计算机软件,计算机使用软件
- c语言中1和0什么意思啊,精讲LOOKUP公式中1和0的含义,这1500字的详细解析值得收藏一份...
- python opencv 画黑白棋盘
- 支持随时随地一键开会,华为云会议场景适用性更强!
- php请求纯文本,php – 使用纯文本回退发送HTML简报
- java沉浸状态栏代码,Ionic实现沉浸式状态栏,状态栏与APP融为一体
- CentOS安装Redis教程
- osg学习(二十八)有关kml和kmz
- excel 透视表 vba_使用Excel VBA删除数据透视表计算字段
- 2016第二十二届全国青少年信息学奥林匹克联赛初赛
- Win7/Win10移动用户文件夹(C:\Users)移到非系统盘(如D:)