坏蛋Dan
知乎@坏蛋Dan
发布时间:2025.8.18

前言

文章从知乎那边同步过来的,所以时间上有些出入。。。主要是这知乎的文章编写不是完全按照markdown的语法导致迁移过来比较麻烦(其实是懒)。。

上周五看朋友圈看到了朋友分享的一个仓库:herlang。顿时笑晕在厕所(摸鱼中)

不得不说,xxn的逆天行为已经是众所周知了。

然后我也补充了一些个人的看法,比如let对应宝宝你是一个微胖就是我调整的 doge。

然后我发现一个完美契合梗的issue:【bug】女性不能被定义

Women cannot be defined!

本来打算不再关注这个项目,毕竟只是一个乐子项目。结果看到这搞得我热血沸腾,想给他实现了。


实现

PR:feat: 女性是不能被定义的

项目是基于rust的,大体原理就是基于AST调整关键字命名,比较简单。

女性不能被定义,那么就是变量声明(VariableDeclaration),我们这里当前只实现了宝宝你是一个(let),大体结构如下。

我们只关注定义部分。

我们回归代码,如果要让这个定义报错,那么需要在解析的过程,放在parse阶段比较合适,不然后续解析都会跟着出问题,所以需要扼杀在parse时解析声明的identifier阶段。

这样就搞定了,很简单。不过为了方便拓展,我们把和女性相关的词抽出来放到全局:

然后回来调整下写法

顺便补充下错误类型和文案:

这样就行了,然后就是写测试用例测试,不过这里我没搞(因为作者也没搞。。)


测试

我们直接打包成wasm到浏览器上测试即可,作者已经帮我们搞好了。

我在根目录补充了些指令,直接跑npm run dev即可,打包完直接运行web环境。

然后在web里测试:

运行:

结果:


最后

可惜的xxn连GitHub都不会上。。。达不到让她们破防的目的。

不过也就是图个乐,相信大部分女性都是正常人,不必放在心上。