ちょっと草植えときますね型言語 GrassをAWKで実装してみるの巻。 Grass は λ-calculus(ラムダ計算)をベースにした「関数型言語」で、「関数定義」「関数適用」のみの組合せでプログラムを表現します。使う文字は W,w,v の3種類。(その他の文字は無視) 今回、こういう言語の実装には正直向いていなさそうなAWKで実装してみました。 AWKの上でYコンビネータが動いているのは自分でもあまり想像したくないのですが・・・grass.elのところにあるサンプルのうち、入力を伴うもの以外はとりあえず全部通るようです。 言語仕様としては、本家ドキュメントのほか、ここが参考になりました。 せめて配列がAWKでファーストクラスなオブジェクトだったら楽なんですが... 仕方がないので、文字列でなんでも表現しようではないか 関数は "/i[j]a.b;c.d;e.f;...;y.z;" のよ
(assign レジスタ名 (reg レジスタ名)) (assign レジスタ名 (const 定数値)) (assign レジスタ名 (op 演算子名) 入力1 ... 入力n) (perform (op 演算子名) 入力1 ... 入力n) (test (op 演算子名) 入力1 ... 入力n) (branch (label ラベル名)) (goto (label ラベル名)) までは実装済みで、gauche.nightではこれらを用いてGCDの演算のデモまで行った。 あと実装すべきは (assign レジスタ名 (label ラベル名)) (goto (reg レジスタ名)) (save レジスタ名) (restore レジスタ名) 上の2つは、アドレスをレジスタに入れてスタックに積んだりジャンプしたりするためのものだが、PIC16Fではアドレス即値が13ビット長なのに対しレジスタ
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く