抽象语法树(AST)入门

参考:

  • 刘伟老师【软件工程研究】模块:blog.csdn.net/LoveLion
    • 【Eclipse AST】AST与ASTView简介
    • 【Eclipse AST】AST的获取与访问
    • 【Eclipse AST】AST的创建
    • 【Eclipse AST】AST的修改
  • Redy语法分析--抽象语法树简介
  • 详解AST抽可视化大屏象语法树

AST简介

抽象语法树(ab前端开发需要掌握什么技术stract syntax tree,AST) 是源代码的抽象语法结构的树状表示,树上的每个节点都表示源代码中的一种结构,这所以说是抽象的,是因为抽象语法树并不会表示出真实语法出现的每一个细节可视化数据图表,比如说,嵌套括号被隐含在树的结构中,并没有以节点的形式呈现。 抽象语法树并不依赖于源语言的语法,也就是说语法分析阶段测试所采用的上下文无文文法,因为在写文法时,经常会对文法进行等价的转换(消除左递归,回溯,二义性等),这样会给文法分析引入后端语言一些多余javascript百炼成仙的成分,对后续阶段造成不利影响,甚至会使合个阶段变得混乱。因些,很多编译后端开发是干什么的器经常要独立地构造语法分javascript百炼成仙析树,为前端, 后端建立一可视化工具个清晰的接口。 抽象可视化管理语法树在很多领域有广泛的应用,比如浏览器,智能编辑器前端,编译器。

实例

  1. 四则运算表达式前端工程师

表达式: 1+3*(4-1)+2

抽象语法树(AST)入门

  1. xml
<letter>
  <address>
    <city>ShiChuang</city>
  </address>
  <people>
    <id>12478</id>
    <name>Nosic</name>
  </people>
</letter>

抽象语法树(AST)入门

  1. 程序1
while b != 0
{
    if a > b
        a = a-b
    else
        b = b-a
}
return a

抽象语法树(AST)入门

  1. 程序2
sum=0
for i in range(0,100)
    sum=sum+i
end

抽象语法树(AST)入门

使用JDT ASTView浏览抽象语法树

Eclipse JD前端工程师T 提供了可以 可视化AST的插件:JDT AstView,该插件可以在IDEA上使用。

抽象语法树(AST)入门
如果下载失败,多半是因为DNS的原因,可以

  • 从官网获取对应插件的下载链接+迅雷 或者
  • 修改hosts文件,修改plugins.jetbrains.com/ 域名地址ip

详细自行百度

以下是ASTView的 测试代码

package test;
import java.util.LinkedList;
import java.util.List;
public class ASTTest {
    public static void main(String[] args) {
        int n = 1;
        List<Integer> list = new LinkedList<>();
        for (int i = 0; i < 10; i++) {
            n++;
            list.add(i);
        }
        System.out.println(n + list.size());
    }
}

在代码界面右键java培训 Enable JDT AST View

抽象语法树(AST)入门
点击右侧工具栏的java面试题 JDT AST,点击相应的AST节点,光标就会在相应的代码闪烁。使用该插件可以帮助快速感受一下AST。
抽象语法树(AST)入门

根据Ecl测试ipse AST的定义,图中每一个节点对java编译器应一个节点名,每一个子节点也在其依附的父节点中扮演着一个角色(身份),并且叶子节点基本为名称、操作符和字面量。表1给出了图1中的for循环节点(ForStatement)的四个子节点的节点名可视化工具前端面试题依附于父节点的角色。

抽象语法树(AST)入门

图1 ForSatement的语法树结构

抽象语法树(AST)入门
表1 各个子节点的节点名和角色

文本后端开发工程师 -> 抽象语法树的过程

  1. 词法分析:文本 –java环境变量配置> token前端开发列表
    • 去除空格,对token分可视化数据图表类,去除空格,然后对token分类,那些属于语法关键字,那些属于操作符,那些属于语句的截止位置,那些属于数据
  2. 语法分析:tok可视化设计en列表 -> 语法二叉树
    • 扫描token流,然后分析它的语法,这一步应该是分析一条以;结尾的语句具体的执行规则,然后使用逆波兰表达后端开发式组合,最后形成一个二叉树,二叉树从底部往上一步步合并

第一步:词法分析,也叫扫描sca测试两人的关系nner 它读取我们的代码,然可视化是什么意思后把它们按照预定的规则合并成一个个的标识 tokens。同时,它会移除空白符、注释等。最后,整个代码将被分割进一个 tokens 列表(或者说一维数组)。

const a = 5;
// 转换成
[{value: 'const', type: 'keyword'}, {value: 'a', type: 'identifier'}, ...]

当词法分析源代码的时后端开发需要学什么候,它会一个一个字母地读取代码,所以很形象地称之为扫描 – scans。当它遇到空格、操作符,或者特殊符号的时候,它会认为一个话已经完成了。 第二步:语法分析,也称解析器 它会将词法分析出来的数组转换成树形的形式,同时,验证语法。语法如果有错的话,抛出语法错误。

[{value: 'const', type: 'keyword'}, {value: 'a', type: 'identifier'}, ...]
// 语法分析后的树形形式
{
   type: "VariableDeclarator", 
   id: {
       type: "Identifier",
       name: "a"
   },
   ...
}

当生成树的时候,解析器会删除一些没必要的标识 tokens(比如:不完整的括号),因此 AST 不是 100% 与源码匹配的。 解析器测试抑郁症100%覆盖所有代码结构生成树叫做CST(具体语法树)。

使用JavaASTView浏览抽象语法树

前端小智
分享 收藏 点赞(0)
上一篇
都2022年了,你还在看PS脸色小心翼翼作图?
下一篇
拯救OOM!字节自研 Android 虚拟机内存管理优化黑科技 mSponge

深圳SEO优化公司大芬网站制作多少钱抚顺百度关键词包年推广推荐湘西百姓网标王推广多少钱池州网站推广系统公司盐城网络营销价格长春设计公司网站报价上饶企业网站建设推荐石岩SEO按效果付费公司十堰网站设计模板公司芜湖百度标王多少钱陇南网站优化按天计费推荐飞来峡百搜标王多少钱阿里网站设计模板推荐淮南网页设计价格临沂SEO按天收费哪家好临沧推广网站报价酒泉推广网站报价晋中百度竞价渭南模板网站建设报价佛山百度竞价哪家好资阳高端网站设计报价遵义网站设计推荐海西网络推广报价西宁网站建设公司永新优秀网站设计布吉seo网站优化推荐三亚建设网站哪家好泰安建设网站公司绥化网站优化按天扣费多少钱鹤岗网站搭建哪家好歼20紧急升空逼退外机英媒称团队夜以继日筹划王妃复出草木蔓发 春山在望成都发生巨响 当地回应60岁老人炒菠菜未焯水致肾病恶化男子涉嫌走私被判11年却一天牢没坐劳斯莱斯右转逼停直行车网传落水者说“没让你救”系谣言广东通报13岁男孩性侵女童不予立案贵州小伙回应在美国卖三蹦子火了淀粉肠小王子日销售额涨超10倍有个姐真把千机伞做出来了近3万元金手镯仅含足金十克呼北高速交通事故已致14人死亡杨洋拄拐现身医院国产伟哥去年销售近13亿男子给前妻转账 现任妻子起诉要回新基金只募集到26元还是员工自购男孩疑遭霸凌 家长讨说法被踢出群充个话费竟沦为间接洗钱工具新的一天从800个哈欠开始单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#中国投资客涌入日本东京买房两大学生合买彩票中奖一人不认账新加坡主帅:唯一目标击败中国队月嫂回应掌掴婴儿是在赶虫子19岁小伙救下5人后溺亡 多方发声清明节放假3天调休1天张家界的山上“长”满了韩国人?开封王婆为何火了主播靠辱骂母亲走红被批捕封号代拍被何赛飞拿着魔杖追着打阿根廷将发行1万与2万面值的纸币库克现身上海为江西彩礼“减负”的“试婚人”因自嘲式简历走红的教授更新简介殡仪馆花卉高于市场价3倍还重复用网友称在豆瓣酱里吃出老鼠头315晚会后胖东来又人满为患了网友建议重庆地铁不准乘客携带菜筐特朗普谈“凯特王妃P图照”罗斯否认插足凯特王妃婚姻青海通报栏杆断裂小学生跌落住进ICU恒大被罚41.75亿到底怎么缴湖南一县政协主席疑涉刑案被控制茶百道就改标签日期致歉王树国3次鞠躬告别西交大师生张立群任西安交通大学校长杨倩无缘巴黎奥运

深圳SEO优化公司 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化