文章从知乎那边同步过来的,所以时间上有些出入。。。主要是这知乎的文章编写不是完全按照markdown的语法导致迁移过来比较麻烦(其实是懒)。。
上周五看朋友圈看到了朋友分享的一个仓库:herlang。顿时笑晕在厕所(摸鱼中)
不得不说,xxn的逆天行为已经是众所周知了。
然后我也补充了一些个人的看法,比如let
对应宝宝你是一个
和微胖
就是我调整的 doge。
然后我发现一个完美契合梗的issue:【bug】女性不能被定义
Women cannot be
defined
!
本来打算不再关注这个项目,毕竟只是一个乐子项目。结果看到这搞得我热血沸腾,想给他实现了。
项目是基于rust的,大体原理就是基于AST调整关键字命名,比较简单。
女性
不能被定义,那么就是变量声明(VariableDeclaration)
,我们这里当前只实现了宝宝你是一个(let)
,大体结构如下。
我们只关注定义部分。
我们回归代码,如果要让这个定义报错,那么需要在解析的过程,放在parse
阶段比较合适,不然后续解析都会跟着出问题,所以需要扼杀在parse
时解析声明的identifier
阶段。
这样就搞定了,很简单。不过为了方便拓展,我们把和女性
相关的词抽出来放到全局:
然后回来调整下写法
顺便补充下错误类型和文案:
这样就行了,然后就是写测试用例测试,不过这里我没搞(因为作者也没搞。。)
我们直接打包成wasm到浏览器上测试即可,作者已经帮我们搞好了。
我在根目录补充了些指令,直接跑npm run dev即可,打包完直接运行web环境。
然后在web里测试:
运行:
结果:
可惜的xxn
连GitHub都不会上。。。达不到让她们破防的目的。
不过也就是图个乐,相信大部分女性都是正常人,不必放在心上。