AST
  • 2024-07-02ast数据类型补充和基础代码注释-cnblog
    ast解析代码树//声明一个变量obj,并赋值一个对象letobj={//对象的属性name,值为字符串"大猩猩"name:"大猩猩",//对象的方法add,接受两个参数a和badd:function(a,b){//返回参数a和b的和加上1000returna+b+1000;
  • 2024-07-01如何编写基于RecursiveASTVisitor的ASTFrontendAction
    介绍我现在工作中要写个fuzz引擎,语法分析部分用到了clang的接口,打算写一些博客记录绍下,ast(抽象语法树),libtooling接口的使用等等,文章主要是翻译英文文档在本教程中,您将学习如何创建一个FrontendAction,使用RecursiveASTVisitor查找具有指定名称的CXXRecordDeclAST节点
  • 2024-06-20什么是AST?AST有什么用?
    在写之前,先回答一下标题。什么是AST呢?在编程和软件工程中,AST是抽象语法树(AbstractSyntaxTree)的缩写。它是一种用于源代码的抽象语法结构的树状表现形式,以树状的形式表示源代码的语法结构。AST有什么用呢?对于反爬工程师来说,他们可以利用AST把他们写好的JavaScript代码,变
  • 2024-06-19vue模板编译器
    vue模板编译器import{ASTElement,compile}from'vue-template-compiler';import{TableColumnDesc}from"@/components/table/base-table/type.ts";exportconstcodeAdapter=function(code:string):{tableCode:string;columns:TableC
  • 2024-06-02木牛流马
    #include<bits/stdc++.h>usingnamespacestd;#definepiipair<int,int>#definefrfirst#definesesecond#definepbkpush_back#definemprmake_pair#definelllonglong#defineullunsignedlonglong#definerereturn#defineconcontinue
  • 2024-05-31手写HTML字符串解析成对应的 AST语法树
    先看效果展示如下:HTML模版转成ast语法树后在学习之前,我们需要了解这么一个问题,为什么要将HTML字符串解析成对应的AST语法树。为什么?语法分析:HTML字符串是一种标记语言,其中包含了大量的标签、属性、文本等内容。通过解析HTML字符串,可以将其转换为更易于操作和理解的
  • 2024-05-24GCC词法语法分析——AST输出及图示
    gcc提供了-fdump-tree-original、-fdump-tree-all等选项,可以输出gcc处理源代码过程中的AST及GIMPLE中间表示信息。例如使用-fudmp-tree-original就可以输出GCC进行词法/语法解析后所生成的AST信息,然而该AST信息过于繁杂,不便于分析,本文通过在GCC源代码中增加一些调试语句,从而输
  • 2024-05-15AST 简述
    AST是源代码的抽象语法结构的树状表示。利用它可以还原混淆后的js代码。@babel/parser是js语法编译器Babel的nodejs包,内置很多分析js的方法,可以实现js到AST的转换。JS转为AST:https://astexplorer.net/准备工作:需安装nodejs环境以及babel,babel安装:npminstall@bab
  • 2024-04-29Babel与core-js
    1.Babel是把ES6的语法转成ES5比如:const、箭头函数、...(结构)、模板字符串等等Babel原理转译分为三阶段:解析(Parse),将代码解析⽣成抽象语法树AST,也就是词法分析与语法分析的过程转换(Transform),对语法树进⾏变换方面的⼀系列操作。通过babel-traverse,进⾏遍历并作添加、更新、
  • 2024-04-11看不懂来打我,vue3如何将template编译成render函数
    前言在之前的通过debug搞清楚.vue文件怎么变成.js文件文章中我们讲过了vue文件是如何编译成js文件,通过那篇文章我们知道了,template编译为render函数底层就是调用了@vue/compiler-sfc包暴露出来的compileTemplate函数。由于文章篇幅有限,我们没有去深入探索compileTemplate函数是
  • 2024-04-11vue编译器
    ast-编译成代码import*aspathfrom'path'importtype{Plugin,ResolvedConfig}from'vite'import{NodePath}from'@babel/traverse';import{JSXElement}from'@babel/types';import{compile,generate,transform
  • 2024-04-08数论进阶
    数论基础知识常函数\[1(n)=1\]\[2(n)=2\]\[\dots\]欧拉函数\[\varphi(n)=\sum_{i=1}^n[gcd(i,n)=1]\]莫比乌斯函数\[\mu(n)=\begin{cases}1,n=1\\0,\existsd,x=d^2\\(-1)^k\(n=p_1^{c_1}p_2^{c_2}\cdotsp_k^{c_k}),otherwise\end{cases}\]黎曼函数\[\zeta(
  • 2024-04-08(译) 理解 Elixir 中的宏 Macro, 第六部分:原地代码生成
    ElixirMacros系列文章译文[1](译)UnderstandingElixirMacros,Part1Basics[2](译)UnderstandingElixirMacros,Part2-MacroTheory[3](译)UnderstandingElixirMacros,Part3-GettingintotheAST[4](译)UnderstandingElixirMacros,Part4-Div
  • 2024-04-08(译) 理解 Elixir 中的宏 Macro, 第五部分:组装 AST
    ElixirMacros系列文章译文[1](译)UnderstandingElixirMacros,Part1Basics[2](译)UnderstandingElixirMacros,Part2-MacroTheory[3](译)UnderstandingElixirMacros,Part3-GettingintotheAST[4](译)UnderstandingElixirMacros,Part4-Div
  • 2024-04-07代码手术刀—自定义你的代码重构工具
    前言笔者近日在做代码仓库的存量代码缩减工作,首先考虑的是基于静态扫描的缩减,尝试使用了很多工具来对代码进行优化,例如PMD、IDEA自带的inspect功能、findBugs等。但是无一例外,要么过于“保守”,只给出扫描结果,但是无法实现一键优化,要么直接就是有bug(这里特指IDEA2023.1.5专业版-in
  • 2024-04-03(译) 理解 Elixir 中的宏 Macro, 第三部分:深入理解 AST
    ElixirMacros系列文章译文[1](译)UnderstandingElixirMacros,Part1Basics[2](译)UnderstandingElixirMacros,Part2-MacroTheory[3](译)UnderstandingElixirMacros,Part3-GettingintotheAST[4](译)UnderstandingElixirMacros,Part4-Div
  • 2024-04-01(译) 理解 Elixir 中的宏 Macro, 第二部分:宏理论
    ElixirMacros系列文章译文[1](译)UnderstandingElixirMacros,Part1Basics[2](译)UnderstandingElixirMacros,Part2-MicroTheory[3](译)UnderstandingElixirMacros,Part3-GettingintotheAST[4](译)UnderstandingElixirMacros,Part4-Div
  • 2024-03-24编译实践学习 Part3
    License:CCBY-SA4.0闲话看了半天文档终于懂了Bison里怎么处理带|的语法了。为什么info要做成Emacs格式啊?Vimer无能狂怒(Lv3.1一元表达式首先当然是设计AST了。这里我用std::varient,不知道有没有更优雅的写法。classPrimaryExpAST:publicBaseAST{public
  • 2024-03-16Angr-Learn-0x3
    Angr-Learn-0x3注意本文可以理解为官方文档的简单翻译+一部分个人理解符号执行与约束求解angr之所以强大并不因为它是一个模拟器,而是它能使用符号变量来执行。使用符号变量算术运算将产生一颗运算树(AST)。AST可以转换为SMT求解器的约束。使用位向量例子:#64-bitbitvectors
  • 2024-03-09编译实践学习 Part1
    本文采用CCBY协议发布。闲话开新坑辣!参考PKU的文档做的。为什么会做这个呢?之前看一位退役OIer的Blog然后发现了这个文档,想着自己退役之后也要做一个。主要是被文档最后的awesome-sysy吸引了。其实之前我在OI里也写过CYaRon!语的编译版本,所以算是有Bear来..
  • 2024-02-20babel 基础概念 & 从零到一写一个 babel 插件
    babel基础概念简单来说,做语法转换兼容的,复杂一点的说,babel可以将我们写的ES6+的Javascript语法转换为向后兼容的语法,以便能够在旧版本的浏览器或者其他环境运行。babel生成代码的三个阶段解析(parse)输入:源码输出:AST转换(transform)输入:AST输出:AST(此AST非彼AST,是被
  • 2024-02-12取模运算
    一、模运算的定义对于\(\forall~a\in\mathbb{R},~m\in(0,+\infty)\),求\(a\)除以\(m\)的余数的运算,就是取模运算,记作\(a~mod~m\)。规定\(0\leqa~mod~m\leqm-1\)。若\(a\)为负数,则\(a~\%~m\)可能小于\(0\)。此时,对结果进行\(a~\%~m+m\),使取模运算满足规定
  • 2024-02-06代码手术刀-自定义你的代码重构工具
    前言笔者近日在做代码仓库的存量代码缩减工作,首先考虑的是基于静态扫描的缩减,尝试使用了很多工具来对代码进行优化,例如PMD、IDEA自带的inspect功能、findBugs等。但是无一例外,要么过于“保守”,只给出扫描结果,但是无法实现一键优化,要么直接就是有bug(这里特指IDEA2023.1.5专业版-in
  • 2024-02-06代码手术刀-自定义你的代码重构工具
    前言笔者近日在做代码仓库的存量代码缩减工作,首先考虑的是基于静态扫描的缩减,尝试使用了很多工具来对代码进行优化,例如PMD、IDEA自带的inspect功能、findBugs等。但是无一例外,要么过于“保守”,只给出扫描结果,但是无法实现一键优化,要么直接就是有bug(这里特指IDEA2023.1.5专业版-insp
  • 2024-01-301/30 学习进度笔记
    无论Hive还是SparkSQL分析处理数据时,往往需要使用函数,SparkSQL模块本身自带很多实现公共功能的函数,在pyspark.sql.functions中。SparkSQL与Hive一样支持定义函数:UDF和UDAF,尤其是UDF函数在实际项目中使用最为广泛。回顾Hive中自定义函数有三种类型:第一种:UDF(User-Defined-Fun