GlueLangの仕切り直しメモ

Pocket
LINEで送る

突然情報の学科からロボットの学科に戻ることになって止まっていたGlueLangの開発をちょぼちょぼと再会することにしました。

ただ、ドキュメントがないと開発の指針も立たないし、何やってるか外から分からないので、ドキュメントを作っていくことにしました。

ドキュメントはこちらです。このドキュメントのソースはこっちです。

GlueLangのリポジトリはこちらです。

Pocket
LINEで送る

GlueLangのif文相当の処理をまたいじったがこれで最後にしたい

Pocket
LINEで送る

眠いです。

GlueLangのif文及びその周辺、またいじりました。

やっぱり波括弧やめた

前回、複合コマンドをこんなふうに書くようにしましたが・・・

uedambp:SRC ueda$ cat hoge 
#!/usr/local/bin/glue
import PATH

{
	echo 'abc'
	echo 'def'
} >>= rev
uedambp:SRC ueda$ ./hoge 
cba
fed

こうしました。やっぱりHaskell, Python系の書き方にしようとしているのに波括弧はあまり合わんという判断。波括弧が最終行の最後にあったら認識しないようになってましたし・・・(アカン)。doの次の行からがサブシェル扱いされます。最初の行のインデントがオフサイドラインになります。

uedambp:GlueLang ueda$ cat huge.glue 
#!/usr/local/bin/glue
import PATH

do
	echo 'abc'
	echo 'def'
>>= rev
uedambp:GlueLang ueda$ ./huge.glue 
cba
fed

procにもdoが必要に

これに伴い、procで2行以上書くときにもdoが必要ということにしました。イコールの後に一行で書くときは不要です。

uedambp:GlueLang ueda$ cat hoge.glue 
#!/usr/local/bin/glue
import PATH

proc hoge = do
	echo 'abc'
	echo 'def'

hoge >>= rev
uedambp:GlueLang ueda$ ./hoge.glue 
cba
fed

if文の表現

んで、最終的にif文に相当する表現は次のようになりました。前回の

#!/usr/local/bin/glue
import PATH

{
	false
	echo 'hoge'
} !> {
	echo 'foo'
} !> {
	echo 'bar'
}

は、

uedambp:GlueLang ueda$ cat hoge.glue 
#!/usr/local/bin/glue
import PATH

do
	false
	echo 'hoge'
!> do
	echo 'foo'
!> do
	echo 'bar'

となりました。

ただ、この書き方だと前回言ったようにサブシェル内のコマンドが全て条件文になってしまう(if文というよりもtryみたいになる)ので、ちゃんと条件と条件が満たされたときに実行される部分を分けたいときは、

uedambp:GlueLang ueda$ cat if1.glue 
#!/usr/local/bin/glue
import PATH

test 1 -eq 2 ? do
	echo 'first subshell'
	echo '1 = 2'
!> test 1 -eq 1 ? do
	echo 'second subshell'
	echo '1 = 1'
!> echo 'third command'
###実行###
uedambp:GlueLang ueda$ ./if1.glue 
second subshell
1 = 1

と書いてもらうことにしました。?の左側に条件、右側に条件がtrueのときに実行される部分を書きます。別にサブシェルを使う必要のないときは、

uedambp:GlueLang ueda$ cat if2.glue 
#!/usr/local/bin/glue
import PATH

test 1 -eq 2    ?  echo '1 = 2'
!> test 1 -eq 1 ?  echo '1 = 1'
!> echo 'third command'

となります。ちょっとスッキリしませんが、if文自体あんまり使うことは無いはずなので、これでよしとしたいです。

実は「?」は、「!>, >>, >>=」と同じグループの演算子なので基本的にこれはif文でなくコマンドを接続しているだけです。ですので、

uedambp:GlueLang ueda$ cat if3.glue 
#!/usr/local/bin/glue
import PATH

test 1 -eq 2 ? echo '1 = 2' !> test 1 -eq 1 ? echo '1 = 1' !> echo 'third command'

と書いても動きますが、さすがにインデント入れないと可読性皆無になりますね。

ところで、だれかGlueLangの開発についてこれてますかね???

あかん。孤立気味だ。

寝る。

Pocket
LINEで送る

GlueLangのif文相当の処理をガラッと変えてみた

Pocket
LINEで送る

今日は息抜きにGlueLangをいじっておりました。といっても言語の開発なので、処理系のバグと、スクリプトのバグの両方に気をつけなければならず、なかなかイライラするものですが・・・

機能追加1: 複合コマンド

続きを読む GlueLangのif文相当の処理をガラッと変えてみた

Pocket
LINEで送る

OSCでのGlueLangの発表無事終了

Pocket
LINEで送る

金曜日にもかかわらず30人くらいに話を聞いていただきました。質問もたくさんありがとうございました。

取り急ぎ。

Pocket
LINEで送る

日記(実験データ解析にGlueLang投入から慌ててwhileを実装)

Pocket
LINEで送る

昨日から実験データの解析をしており、締め切りが遠いことからGlueLangを投入してみました。これが記念すべき最初のコードです。書きなぐりなので意味を追って読まないでください。

続きを読む 日記(実験データ解析にGlueLang投入から慌ててwhileを実装)

Pocket
LINEで送る

GlueLangが変態言語になるかどうかの瀬戸際である

Pocket
LINEで送る

本日は久々にGlueLangを作りこんでいました。読んでてもほとんどの人が分からんと思いますが作業日誌です。いや、読んでも分からんとか言ってたら絶対普及しないので、この前LTやったスライドを貼り付けときます。

ファイルや変数に直接文字列を指定可能に

今まではechoを書かないとファイルや文字列に文字が入って行きませんでしたが、要らなくなりました。

uedambp:GlueLang ueda$ cat fuge.glue 
import PATH

file f = 'abc'
str s = 'cde'

cat f
echo s

続きを読む GlueLangが変態言語になるかどうかの瀬戸際である

Pocket
LINEで送る

GlueLangのLTやった(シェル書いてますが何か?)

Pocket
LINEで送る

とりいそぎ。シェル芸勉強会については問題をアップしました。後日まとめます。皆様ありがとうございました。

Pocket
LINEで送る

今日のGlueLang開発日誌(シグナル処理、whereでの条件指定等)

Pocket
LINEで送る

今週末も時間をやりくりしながらGlueLangの開発を進めました。昨日の作業に加え、今日はシグナル処理を改善して、中間ファイルと作業ディレクトリが残らないようにしました。ただ、何でちゃんと動くのか分からないという有様なので、dashのコードを読んでちゃんと勉強せんといかんなあと思います。

あと、2月末にとうとうお披露目のプレゼンをするかもしれないので、次のような機能をデモ程度に実装しました。

続きを読む 今日のGlueLang開発日誌(シグナル処理、whereでの条件指定等)

Pocket
LINEで送る

GlueLangでとうとうwhereが使えるように

Pocket
LINEで送る

週末プログラマー上田Zです。(きもちわるい)

どうしても実装したかったwhereを本日ついに実装しました。まだスコープが分かれてませんが。

whereの使い方

例えばシェルスクリプトでこう書いたとします。ファイルaとbを作って、diffで比べています。

seq 8 > a
seq 10 > b

diff a b

続きを読む GlueLangでとうとうwhereが使えるように

Pocket
LINEで送る

今日もruminを試し、作っていただいたGlueLangのシンタックスハイライトを試した

Pocket
LINEで送る

明日までにある予稿を書かなければならんのですが・・・。もう眠い・・・。ということで昨日のrumin再チャレンジと、GlueLangのシンタックスハイライトを作っていただいたので試してみます。

続きを読む 今日もruminを試し、作っていただいたGlueLangのシンタックスハイライトを試した

Pocket
LINEで送る