Typeof.net

准备重新操起 Nosh

现在过的这种浑浑噩噩的生活不能再继续下去了,然考虑到 patrisika 工作已经接近完成,PatEL 也基本上完成(估计能做的也就只有加 KFFD 支持宏了吧……)。嗯,打算重新操起 Nosh。

Nosh 之前一直想做,不过也一直坑着没做下去。它是用 Node 写的 shell,地位是类似 Powershell 这种的:它内部有一个完整的变成体系,而不是「把一切都看作字符串」这样草率而粗暴地处理。Nosh 的文法实际上很不好设计的,因为 Shell 为了省卡路里是必须什么事情都得干出来。我的想法大致是分成 Command 和 Expression 两个上下文,不同上下文内文法不同。下面可能是一些例子:

> ls *.sample -recursive | which { not (/^.git/.matches $.path) } | rm
> ls *.mkv | foreach { takes file index; mv file "$index.mkv" }

东西大体上就是这个样子。

Nosh 的后端会用 Patrisika,前端我应该是用 peg.js 做一个 parser——唉,人老了,连 parser 都不打算自己写了。至于内置命令,反正现在 Node 上工具那么多,处理流的工具也不少,写起来不会特别麻烦的。

地址先放 https://github.com/be5invis/nosh-w,我会慢慢更新的。