最新 最热

深入浅出Joern(四)不常用语法大全

在深入了解Joern的源码以及设计的时候发现Joern其实实现了很多不常用语法,很多文档中没提到的东西,其实都有比较简洁实用的方式,但也从源码的设计中发现,其实Joern的设计理念也有很多问题,这个我们以后再写到。...

2023-10-23
1

(译) Understanding Elixir Macros, Part 5 - Reshaping the AST

上次我介绍了一个基本版本的可追溯宏 deftraceable, 它允许我们编写可跟踪的函数. 这个宏的最终版本还有一些遗留的问题, 今天我们将解决其中一个 — 参数模式匹配....

2023-10-21
2

(译) Understanding Elixir Macros, Part 3 - Getting into the AST

是时候继续探索 Elixir 的宏了. 上次我介绍了一些关于宏的基本原理, 今天, 我将进入一个较少谈及的领域, 并讨论Elixir AST 的一些细节.

2023-10-21
3

轻松掌握C++ AST的处理方法 - CppAst.Net使用介绍

现代的游戏引擎一般都会较重度的依赖代码生成技术, 而代码生成技术一般都是以原始代码为处理信息源, 再结合专用的配置来做进一步的处理. 发展到后来, 就渐渐变成原始代码和配置一体化的形式了. 比如大家熟知的UE使用...

2023-10-16
1

Go每日一库之125:ast(抽象语法树)

当你对GoLang AST感兴趣时,你会参考什么?文档还是源代码? 虽然阅读文档可以帮助你抽象地理解它,但你无法看到API之间的关系等等。 如果是阅读整个源代码,你会完全看懂,但你想看完整个代码我觉得您应该会很累。 因此,本着高效...

2023-09-30
1

golang自定义linter

linter的原理是通过静态代码分析,发现其中隐藏的错误或者不符合规范的地方,然后给暴露出来,提升系统的稳定性。linter扫描的过程如下:首先进行词法分析得到一系列token,然后通过语法分析得到抽象语法树,接着通过inspec...

2023-09-06
1

借助AST ,手写一个解决运行环境差异的loader

最近遇到了一个很特殊的需求,业务代码打包后需要运行在两个不同的环境中,而两个环境中的属性有非常多的差异,我想在打包阶段来处理这些差异,所以就需要自定义一个loader来处理设计到的相关文件...

2023-03-23
1

ioctl函数操作「建议收藏」

传统上ioctl函数是用于那些普遍使用,但不适合归入其他类别的任何特性的系统接口。Posix去掉了ioctl,它通过

2022-11-02
3

一门语言的作用域和函数调用是如何实现的

上次利用 Antlr 重构一版 用 Antlr 重构脚本解释器 之后便着手新增其他功能,也就是现在看到的支持了作用域以及函数调用。

2022-10-27
1