自作言語でUNIXぽい処理を書く
自作言語
自作言語を開発している。
インタプリタでC言語とPythonから強い影響を受けている。
最初はストイックな言語仕様で作っていたが、最近は特にこだわらず変態的な仕様も盛り込んでいる。
その1つが連鎖式と呼んでいる機能だ。
連鎖式
連鎖式を使うとUNIX系コマンドをパイプで繋げていくようなコードを書くことができる。
自作言語のPadはBash的ではなくどちらかというとPythonに近い文法を持っている。
たとえば関数の呼び出しなどは↓のように行う。
{@
def hello():
puts("Hello!")
end
hello() // Hello!
@}
関数は返り値も返す。
このような関数などの使用でUNIX的なパイプを実現できるのか? というところであるが、変態的な仕様を盛り込むことで解決した。
連鎖式は↓のように書く。
{@
def getvec():
return [1, 2, 3]
end
getvec() # puts($r) // [1, 2, 3]
@}
↑のように呼び出す関数をシャープ(#)で繋げて書く。
この文脈では特殊変数の$r
が有効になる。
$r
には前の関数の返り値が保存されている。
だからこの$r
を入力にすればUNIX的なパイプを関数で書くことが可能だ。
おわりに
自分はどんな言語を作りたかったのか?
言語自体はPythonをマネしてみたが連鎖式はBashに影響を受けた式である。
ストイックにC言語のようなPythonを作っていたが、このような変態的な式を実装してしまった。
時の流れは残酷である。
Author And Source
この問題について(自作言語でUNIXぽい処理を書く), 我々は、より多くの情報をここで見つけました https://zenn.dev/narupo/articles/5a7289320c8f35著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Collection and Share based on the CC protocol