パイプラインを実装できた
Fri Dec 26 22:48:37 JST 2014 (modified: Sat Sep 30 16:15:34 JST 2017)
views: 2147, keywords:パイプライン,GlueLang,グルー言語を作る この記事は最終更新日が7年以上前のものです。
GlueLangの作業、休日にやるという禁を破って金曜日にやっちまいました。当初かなり難航することを覚悟していたのですが、dashのコード読みのおかげで、機械的に書いたら動きました。
こういうのを入力すると、
uedambp:GlueLang ueda$ cat TEST/pipeline_mac.glue
/usr/bin/seq '1' '5', /usr/bin/tail '-r' .
次のように動作します。
uedambp:GlueLang ueda$ ./main TEST/pipeline_mac.glue
5
4
3
2
1
パイプライン処理は、Pipeline.ccとCommandLine.ccに実装されています。まだシグナル処理を入れておらず処理が単純なので、もし自分でシェルを書いている変態の皆さんに参考になるなら幸いです。あ、「シェルを書く」と言っても、異様に怒る人を量産している「シェルスクリプトを書くの略」ではありません。
当初の予定では所定の場所に1行に1コマンドを書くと勝手にパイプでつながるという仕様にしようとしてましたが、パイプを「, 」、パイプラインの終わりを「. 」で表現することにしました。なんかその方が言葉っぽいので、そうしました。「|」よりも目立たないので読みにくいと思いますが、「, 」の後ろには改行を入れるのをお作法にしたいと思います。こんな感じで・・・。
###まだ動きません###
uedambp:GlueLang ueda$ cat TEST/pipeline_mac.glue
/usr/bin/seq '1' '5',
/usr/bin/tail '-r' .
しかし、まだ議論の余地がありそうです。
そのうちに「、」「。」でも良いようしようかとも考えてます。そんなもんイランと言われそうですが。日本語好きなので。
ところで、シグナル処理を全然書いていないので、パイプラインを実行しちまうとCtrl+Cが効きません。万が一試す人がいたらご注意を。シグナル処理をちゃんと実装しないといけませんが、それが済めばあとは難しいことはそんなにないので一気に進みそうです。
シグナルは一旦おいておいて、次はimportの実装。しかし、もっとコメントを入れないと誰も手伝ってくれない予感・・・。
寝る。