crossoverJie's Blog
  • Home
  • Archives
  • Categories
  • Tags
  • About
  • github
  • gscript
  • cim
  • vlog

模板方法实践

前言最近不出意外的阳了,加上刚入职新公司不久,所以也没怎么更新;这两天好些后分享一篇前段时间的一个案例: 最近在设计一个对某个中间件的测试方案,这个测试方案需要包含不同的测试逻辑,但相同的是需要对各个环节进行记录;比如统计耗时、调用通知 API 等相同的逻辑。 如果每个测试都单独写这些逻辑那无疑是做了许多重复工作了。
2022-12-27
设计模式
#Java #Go

深入理解闭包实现原理

前言闭包对于一个长期写 Java 的开发者来说估计鲜有耳闻,我在写 Python 和 Go 之前也是没怎么了解,光这名字感觉就有点”神秘莫测”,这篇文章的主要目的就是从编译器的角度来分析闭包,彻底搞懂闭包的实现原理。
2022-10-24
gscript > compiler
#go #闭包 #closure

如何为 GScript 编写标准库

版本更新最近 GScript 更新了 v0.0.11 版本,重点更新了: Docker 运行环境 新增了 byte 原始类型 新增了一些字符串标准库 Strings/StringBuilder 数组切片语法:int[] b = a[1: len(a)]; 具体更新内容请看下文。 前言前段时间发布了 GScript 的在线 playground,
2022-10-15
gscript > compiler
#go

用自己的编程语言实现了一个网站(增强版)

前言前段时间在《用自己的编程语言实现了一个网站》用介绍了用 GScript 写的一个简单“网站”,虽然是打上引号的;页面长这样: 看起来确实非常的挫,其实之前一直也想做一个 GScript 的在线 playground ,于是国庆期间学了一点 皮毛 Vue 加上老弟的帮忙(他是前端开发),最终完成了下面这个网站: https://gscript.crossoverjie.top/ ❤打印
2022-10-08
gscript > compiler
#go

手写编程语言-递归函数是如何实现的?

前言本篇文章主要是记录一下在 GScript 中实现递归调用时所遇到的坑,类似的问题在中文互联网上我几乎没有找到相关的内容,所以还是很有必要记录一下。 在开始之前还是简单介绍下本次更新的 GScript v0.0.9 所包含的内容: 支持可变参数 优化 append 函数语义 优化编译错误信息 最后一个就是支持递归调用
2022-09-27
gscript > compiler
#递归 #go #antlr

手写编程语言-实现运算符重载

前言先带来日常的 GScript 更新:新增了可变参数的特性,语法如下: 123456789101112int add(string s, int ...num){ println(s); int sum = 0; for(int i=0;i<len(num);i++){ int v = num[i]; sum = sum+v; } return sum;
2022-09-18
gscript > compiler
#go #antlr #运算符重载

用自己的编程语言实现了一个网站

前言在上一篇《终于实现了一门属于自己的编程语言》 介绍了自己写的编程语言 GScript ,在文中提到希望最终可以使用 GScript 开发一个网站。 到目前为止确实是做到了,首页地址: https://gscript.crossoverjie.top/index 要称为一个网站确实有点勉强,不过也是一个动态网页,因为返回的是 HTML,所以在当前阶段只要不嫌麻烦其实也能写一个“合格”的网站,
2022-09-14
gscript > compiler
#go #antlr

终于实现了一门属于自己的编程语言

前言都说程序员的三大浪漫是:操作系统、编译原理、图形学;最后的图形学确实是特定的专业领域,我们几乎接触不到,所以对我来说换成网络更合适一些,最后再加上一个数据库。 这四项技术如果都能掌握的话那岂不是在 IT 行业横着走了,加上这几年互联网行业越来越不景气,越底层的技术就越不可能被替代;所以为了给自己的 30+ 危机留点出路,从今年上半年开始我就逐渐开始从头学习编译原理。 功夫不负有心人,经过近一
2022-09-07
gscript > compiler
#go #antlr

自己动手写脚本解释器--实现作用域与函数调用

前言上次利用 Antlr 重构一版 用 Antlr 重构脚本解释器 之后便着手新增其他功能,也就是现在看到的支持了作用域以及函数调用。 1234567891011121314int b= 10;int foo(int age){ for(int i=0;i<10;i++){ age++; } return b+age;}int add(int a,
2022-08-17
gscript > compiler
#go #antlr

用 Antlr 重构脚本解释器

前言在上一个版本实现的脚本解释器 GScript 中实现了基本的四则运算以及 AST 的生成。 当我准备再新增一个 % 取模的运算符时,会发现工作很繁琐而且几乎都是重复的;主要是两步: 需要在词法解析器中新增对 % 符号的支持。 在语法解析器遍历 AST 时对 % token 实现具体逻辑。 其中的词法解析和遍历 AST 完全是重复工作,所以我们可否能够简化这两步呢?
2022-08-08
gscript > compiler
#go #antlr
1…1112131415…29

Search

Hexo Fluid
© 2016 – 2025 | 总访问量 次 总访客数 人