削除しました。
*見掛け倒し命 [#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)又は引数がなくなるまでまで読み込んで
 $インストールされているゴーストの数=さくら〓ふたば〓(略)〓エミリ
みたいになる     ハズ。


トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS