レゴキチ/里々でスクリプトを本物のプログラムっぽく見せる方法
の編集
index.php?%E3%83%AC%E3%82%B4%E3%82%AD%E3%83%81/%E9%87%8C%E3%80%85%E3%81%A7%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%97%E3%83%88%E3%82%92%E6%9C%AC%E7%89%A9%E3%81%AE%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%A0%E3%81%A3%E3%81%BD%E3%81%8F%E8%A6%8B%E3%81%9B%E3%82%8B%E6%96%B9%E6%B3%95
[
トップ
] [
編集
|
差分
|
履歴
|
添付
|
リロード
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
]
-- 雛形とするページ --
殊海夕音/FINE/template
*見掛け倒し命 [#a84ac696] 実際には大したことはない。 括弧の関係が見やすくなっただけ。 里々の内部関数nop内では改行が無視されることを生かしているが、~ nop内の値は捨てられてしまう為、結果表示やそのための変数の処理が複雑化してしまうのが難点。 **基本形 [#cfe7a3be] @関数名 (nop, 【タブ】(if,条件式 【タブ】【タブ】,条件式真の時返す値 【タブ】【タブ】,条件式偽の時返す値 【タブ】) 【タブ】( 【タブ】【タブ】(if,条件式 【タブ】【タブ】【タブ】,if内で実行されたくない括弧の中身→例「set(spritf,%c,1)変数(spritf,%c,1)1」 【タブ】【タブ】) 【タブ】) )(ifで返す値を表示するかしないか)(callの引数つき再帰呼び出し)(変数の削除) **気をつけること [#caf7139e] タブの代わりに半角スペースはアウト ifないのsetは勝手に実行されてしまうので二次引数区切(命名)を使って実行を遅らせる 最後に変数の削除が行なわれるので(変数「」の存在)を条件式に使うのは危険 ***if文 [#m1b3973b] 里々では内部の括弧から実行されていくので (nop, (if,条件式 ,(set,変数,0) ) ) このとき、条件式が偽でもsetが実行されてしまう。 そのため、 (nop, ( (if,条件式 ,set ,nop ) ,変数,0) ) こうしてsetの実行を遅らせる必要がある。 また、引数区切りを複数使うことで (nop, ( (if,条件式 ,set(sprintf,%c,1)変数1(sprintf,%c,1)0 ,set(sprintf,%c,1)変数2(sprintf,%c,1)5 ) ) ) としてしまうことも出来る。 ***for文 [#tc5aaf68] * 1+1+1+1は(call,関数1,4) @関数1 (nop, (set,結果, (calc, (if,(変数「結果」の存在)==1 ,(結果) ,0 )+1 ) ) )(if,(結果)==(A0),(結果))((if,(結果)==(A0),nop,call),関数1,(A0))(set,結果,) 0+1+1+1+1・・・を繰り返す。 通常とは違うif文と、再帰呼び出しのみのループをどう使いこなすかが鍵となりそう 今思えば(nop)最終行の処理として、(返す値の表示)(ループの為のcall)(変数の初期化)の順番が最適かも。 ***サンプル [#g830177e] 「里々でループ処理」で作ったやつの強化改造&見栄え向上版。 ※これは実験的に作ったので上記の構文になっていない。~ 条件式に(変数「」の存在)を使ってしまったため、$_memoryだけが消去できない。 (call,格納関数,前半文字列,変数の初期値,後半文字列,変数の増加量,変数の最大値,区切) (R*)や(FMO*name)などの連番の引数の参照~ *が最大値に達するか、引数が存在しなくなるまでの引数を区切の簡易配列で返す。 ちなみにsplitの(S*)はis_emptyで存在判定できない。 例えば、FMOから起動中のゴースト一覧を得るとき。 * $引数区切り追加 (B5) :現在デスクトップ上にいるゴーストは「(call,格納関数,FMO,0,name,1,3,、)」だよ。 @格納関数 (nop, (set,_count, ( (if,(変数「_count」の存在)==1 ,calc(B5)(_count)+(A3) ,calc(B5)(A1)+0 ) ) ) (set,_memory, ( (A0) ( (if,(compare,(A0),FMO)==1 ,zen2han(B5)(_count) ,han2zen(B5)(_count) ) ) (A2) ) ) (set,_result, (if,(変数「_result」の存在)==1 ,(_result) (if,(変数「_memory」の存在)==1 ,(A5)(_memory) ) ,(if,(変数「_memory」の存在)==1 ,(_memory) ) ) ) )(if,(変数「_memory」の存在)==0,(_result),(if,(_count)>=(A4),(_result)))(nop, (set,_memory ,(if,(_count)>=(A4) ,set ,(if,(変数「_memory」の存在)==0 ,set ,nop ) ) ) )((if,(compare,(_memory),nop)==1,call,nop)(B5)格納関数(B5)(A0)(B5)(A1)(B5)(A2)(B5)(A3)(B5)(A4)(B5)(A5))((_memory),_count,)((_memory),_result,) #これでも一行として認識される、即ち「格納関数」の単語数は1つとなる。 #引数区切にバイト値5を使っているのは趣味です(ぇ @B5 (sprintf,%c,5) この時下のように喋る。 現在デスクトップ上にいるゴーストは「ポスト、さくら、ふたば、エミリィ」だよ。 他にも *installedghostname $引数区切り追加 (B5) $インストールされているゴーストの数 (call,格納関数,R,0,,1,99,〓) @B5 (sprintf,%c,5) とかでも使える。 このときは(R99)又は引数がなくなるまでまで読み込んで $インストールされているゴーストの数=さくら〓ふたば〓(略)〓エミリ みたいになる ハズ。
タイムスタンプを変更しない
*見掛け倒し命 [#a84ac696] 実際には大したことはない。 括弧の関係が見やすくなっただけ。 里々の内部関数nop内では改行が無視されることを生かしているが、~ nop内の値は捨てられてしまう為、結果表示やそのための変数の処理が複雑化してしまうのが難点。 **基本形 [#cfe7a3be] @関数名 (nop, 【タブ】(if,条件式 【タブ】【タブ】,条件式真の時返す値 【タブ】【タブ】,条件式偽の時返す値 【タブ】) 【タブ】( 【タブ】【タブ】(if,条件式 【タブ】【タブ】【タブ】,if内で実行されたくない括弧の中身→例「set(spritf,%c,1)変数(spritf,%c,1)1」 【タブ】【タブ】) 【タブ】) )(ifで返す値を表示するかしないか)(callの引数つき再帰呼び出し)(変数の削除) **気をつけること [#caf7139e] タブの代わりに半角スペースはアウト ifないのsetは勝手に実行されてしまうので二次引数区切(命名)を使って実行を遅らせる 最後に変数の削除が行なわれるので(変数「」の存在)を条件式に使うのは危険 ***if文 [#m1b3973b] 里々では内部の括弧から実行されていくので (nop, (if,条件式 ,(set,変数,0) ) ) このとき、条件式が偽でもsetが実行されてしまう。 そのため、 (nop, ( (if,条件式 ,set ,nop ) ,変数,0) ) こうしてsetの実行を遅らせる必要がある。 また、引数区切りを複数使うことで (nop, ( (if,条件式 ,set(sprintf,%c,1)変数1(sprintf,%c,1)0 ,set(sprintf,%c,1)変数2(sprintf,%c,1)5 ) ) ) としてしまうことも出来る。 ***for文 [#tc5aaf68] * 1+1+1+1は(call,関数1,4) @関数1 (nop, (set,結果, (calc, (if,(変数「結果」の存在)==1 ,(結果) ,0 )+1 ) ) )(if,(結果)==(A0),(結果))((if,(結果)==(A0),nop,call),関数1,(A0))(set,結果,) 0+1+1+1+1・・・を繰り返す。 通常とは違うif文と、再帰呼び出しのみのループをどう使いこなすかが鍵となりそう 今思えば(nop)最終行の処理として、(返す値の表示)(ループの為のcall)(変数の初期化)の順番が最適かも。 ***サンプル [#g830177e] 「里々でループ処理」で作ったやつの強化改造&見栄え向上版。 ※これは実験的に作ったので上記の構文になっていない。~ 条件式に(変数「」の存在)を使ってしまったため、$_memoryだけが消去できない。 (call,格納関数,前半文字列,変数の初期値,後半文字列,変数の増加量,変数の最大値,区切) (R*)や(FMO*name)などの連番の引数の参照~ *が最大値に達するか、引数が存在しなくなるまでの引数を区切の簡易配列で返す。 ちなみにsplitの(S*)はis_emptyで存在判定できない。 例えば、FMOから起動中のゴースト一覧を得るとき。 * $引数区切り追加 (B5) :現在デスクトップ上にいるゴーストは「(call,格納関数,FMO,0,name,1,3,、)」だよ。 @格納関数 (nop, (set,_count, ( (if,(変数「_count」の存在)==1 ,calc(B5)(_count)+(A3) ,calc(B5)(A1)+0 ) ) ) (set,_memory, ( (A0) ( (if,(compare,(A0),FMO)==1 ,zen2han(B5)(_count) ,han2zen(B5)(_count) ) ) (A2) ) ) (set,_result, (if,(変数「_result」の存在)==1 ,(_result) (if,(変数「_memory」の存在)==1 ,(A5)(_memory) ) ,(if,(変数「_memory」の存在)==1 ,(_memory) ) ) ) )(if,(変数「_memory」の存在)==0,(_result),(if,(_count)>=(A4),(_result)))(nop, (set,_memory ,(if,(_count)>=(A4) ,set ,(if,(変数「_memory」の存在)==0 ,set ,nop ) ) ) )((if,(compare,(_memory),nop)==1,call,nop)(B5)格納関数(B5)(A0)(B5)(A1)(B5)(A2)(B5)(A3)(B5)(A4)(B5)(A5))((_memory),_count,)((_memory),_result,) #これでも一行として認識される、即ち「格納関数」の単語数は1つとなる。 #引数区切にバイト値5を使っているのは趣味です(ぇ @B5 (sprintf,%c,5) この時下のように喋る。 現在デスクトップ上にいるゴーストは「ポスト、さくら、ふたば、エミリィ」だよ。 他にも *installedghostname $引数区切り追加 (B5) $インストールされているゴーストの数 (call,格納関数,R,0,,1,99,〓) @B5 (sprintf,%c,5) とかでも使える。 このときは(R99)又は引数がなくなるまでまで読み込んで $インストールされているゴーストの数=さくら〓ふたば〓(略)〓エミリ みたいになる ハズ。
テキスト整形のルールを表示する