本来想写一个语法解析器,但现在发展成写一门语言的解释器,为什么会放弃当时的初衷呢?
我首先发现给语法解析器增加功能越来越难,重构越来越复杂,我感到深深的无力。
内嵌代码,变量命名,逻辑判断,这明明就是在设计语言!
那么我如果设计了一门语言,还能完成这个项目吗?
可以,用这门语言的自带的数据结构,这样内嵌代码变得自然,循环和条件判断也顺手拈来。太棒了!
但设计语言,什么时候能设计好呢?好的设计只有一个办法,就是进行无穷无尽的测试。
为什么编程语言那么重要,因为编程语言是被测试最多的工具,最稳定,也最灵活。但我的语言能进行多少测试呢?
我并不是想设计语言,而是不得不走上了这条道路,因为所有的项目做到最后,都隐约的出现了一门语言的身影。
我现在就直面这个隐藏在所有复杂项目背后的语言:
它很像 Lisp,但又不完全是。它用一种数据结构的语法书写代码,这样其中的一部分逻辑就可以改变整个代码本身,扩展成更多的代码。对于我这个能少些一个字母就高兴的懒人,这简直就是福音。
它的语法很舒服,是 a > b 形式,而不是 (> a b) 的形式。它有局部变量声明:my x = 0 而不是 (let (x 0) ( ...) )
我的屏幕大小有限,过多的嵌套会让我迷失。
我给它起名叫 Spp, String Prepare Process, 字符串预处理。我想让你从我的手中实现,虽然你存在于我以前的项目中,时隐时现。
(my $x 1)
(our @a [1 2 3])
(if ( $x == 1) (say ‘$x == 1‘) else (say ‘$x != 1‘))
(package Spp)
(my $regex :[\w+])
{ a 1 b 2 }
时间: 2024-10-25 14:00:35