#	
#	dRudSeqP.sed
#	
#	パルスモーターの台形制御シーケンサコンパイラ用プリプロセッサ
#	
#	CLiP - Common Library for P/ECE
#	Copyright (C) 2014 Naoyuki Sawa
#	
#	* Sat Nov 29 13:38:36 JST 2014 Naoyuki Sawa
#	- 1st リリース。
#	  dRudSeqP.batから呼び出して使用してください。
#	- 「speed n/命令/wait」を、一行で簡単に書くための展開スクリプトです。
#	* Fri Dec 12 14:11:01 JST 2014 Naoyuki Sawa
#	- 「ifブロック」を、一行で簡単に書くための展開スクリプトです。
#	

#-------------------------------------------------------------------------------
#	* Sat Nov 29 13:38:36 JST 2014 Naoyuki Sawa
#	- 「speed n/命令/wait」を、一行で簡単に書くための展開スクリプトです。
#	- 特に、直接制御による段階的な加速を行う時、上記のシーケンスが頻繁に現れます。
#	  その都度、三行づつ書くと手間が掛かるし、読みやすさも損ないます。
#	  そこで、上記のシーケンスを一行で書き、当スクリプトで展開することにしました。
#	  尚、これはあくまでも糖衣構文であって、コンパイラ本体には手を入れていません。
#	- 「move direct ～」に対して使用する事が大半だと思いますが、他の任意の命令に対して使用する事も可能です。
#	  下記の書式説明の通り、当スクリプトは、対象となる命令(③)を限定していません。
#	- ＜書式＞
#	  □展開前
#	  │(行頭)(①0文字以上の空白)(②分周比)(1文字以上の空白)(③命令及びコメント)(行末)
#	  □展開後
#	  │(①0文字以上の空白)speed (②分周比)
#	  │(①0文字以上の空白)(③命令及びコメント)
#	  │(①0文字以上の空白)wait
#	- ＜例＞
#	  □展開前
#	  │	5 move direct 10             #加速1段階目
#	  │	4 move direct 10             #加速2段階目
#	  │	3 move direct 100 until rise #定常運転～センサ検知
#	  │	4 move direct 10             #減速1段階目
#	  │	5 move direct 10             #減速2段階目
#	  │	wait 500                     #停止完了後の時間待ち	←この行は展開対象でないことに注意せよ。
#	  □展開後
#	  │	speed 5
#	  │	move direct 10             #加速1段階目
#	  │	wait
#	  │	speed 4
#	  │	move direct 10             #加速2段階目
#	  │	wait
#	  │	speed 3
#	  │	move direct 100 until rise #定常運転～センサ検知
#	  │	wait
#	  │	speed 4
#	  │	move direct 10             #減速1段階目
#	  │	wait
#	  │	speed 5
#	  │	move direct 10             #減速2段階目
#	  │	wait
#	  │	wait 500                     #停止完了後の時間待ち	←この行は展開対象でないことに注意せよ。
#	
/^\([[:blank:]]*\)\([[:digit:]]\+\)[[:blank:]]\+\(.*\)$/s//\1speed \2\n\1\3\n\1wait/

#-------------------------------------------------------------------------------
#	* Fri Dec 12 14:11:01 JST 2014 Naoyuki Sawa
#	- 「if文」を、一行で簡単に書くための展開スクリプトです。
#	  dRudSeqC.exeの「if命令」は、条件が非成立の時に次の命令を飛ばす動作であり、「if命令」の行と、次の命令の行の、二行に分けて書く必要が有ります。
#	  しかし、次の命令が「goto命令」である場合は、「if文」として一行で書く方が判りやすく、便利だと思いました。
#	  そこで、「if文」を一行で書き、当スクリプトで展開することにしました。
#	  尚、これはあくまでも糖衣構文であって、コンパイラ本体には手を入れていません。
#	- 次の命令は「goto命令」である事が大半だと思いますが、他の任意の命令に対して使用する事も可能です。
#	  下記の書式説明の通り、当スクリプトは、対象となる命令(④)を限定していません。
#	- ＜書式＞
#	  □展開前
#	  │(行頭)(①0文字以上の空白)(if)(②1文字以上の空白)(③1文字以上の空白以外)(0文字以上の空白)(④命令及びコメント)(行末)
#	  □展開後
#	  │(①0文字以上の空白)if(②1文字以上の空白)(③1文字以上の空白以外)
#	  │(①0文字以上の空白)(④命令及びコメント)
#	- ＜例＞
#	  □展開前
#	  │	if on goto @F              #センサ安定状態がOnならば(=既に原点ならば)、@@までジャンプする。
#	  │	init                       #初期動作を行う。
#	  │	wait                       #初期動作の完了を待つ。
#	  │@@
#	  │	move 100                   #演出動作を行う。
#	  │	wait                       #演出動作の完了を待つ。
#	  □展開後
#	  │	if on
#	  │	goto @F              #センサ安定状態がOnならば(=既に原点ならば)、@@までジャンプする。
#	  │	init                       #初期動作を行う。
#	  │	wait                       #初期動作の完了を待つ。
#	  │@@
#	  │	move 100                   #演出動作を行う。
#	  │	wait                       #演出動作の完了を待つ。
/^\([[:blank:]]*\)if\([[:blank:]]\+\)\([^[:blank:]]\+\)[[:blank:]]*\(.*\)$/s//\1if\2\3\n\1\4/
