シンプル・
プリプロセッサ


最終更新 2005/03/07


【 更新履歴 】  最新 Ver. は 1.03
(2005.03.07) ver1.03を公開。
  • 置換処理を行う、pp_rep_head、pp_rep_footを追加。
  • 「#」の前にタブやスペースを挟んでいても大丈夫な仕様に拡張。
  • switch〜case文の追加。
  • case〜breakを一行で表わすcb命令の追加。
  • 全ての予約語を変数で変更可能に仕様を変更。
  • 出力先パスの指定を追加。
(2004.08.01) ver1.00を公開。
  • DLページ作成。
……過去の履歴

ダウンロード

ダウンロード「spp103.lzh」(8KB)




クロノス・クラウン トップ・ページに戻る

紹介

  • 命令文系
    • if、else文の処理を行なえる。
    • switch〜case文の処理を行なえる。
    • ifやswitchは多重ネストをサポート。
    • case〜breakを一行で表わすcb命令の実装。
    • 変数を元に置換処理を行える。
  • 特殊仕様系
    • 判定結果により、特定行をコメント・アウトする以外に、判定結果により、特定行のコメント・アウトの解除もできる。
    • 「#」の前にタブやスペースを挟んでいても大丈夫。
    • 全ての予約語を変数で変更可能。
    • 出力先パスの指定が可能。
    • ソースを全部見ることができ、自由にカスタマイズができる(JavaScriptなので)。


実行例

 黒字が実行前、赤字が実行後です。
//------------------------------------------------------------------------------
// sample if
//------------------------------------------------------------------------------

#define test 0
#define test2 0
#define test3 0

#if test==0
	#if test2==0
		#if test3==0
			$v000 = 0;
		#else
			$v001 = 0;
		#endif
	#else
		#if test3==0
			$v002 = 0;
		#else
			$v003 = 0;
		#endif
	#endif
#else
	#if test2==0
		#if test3==0
			$v004 = 0;
		#else
			$v005 = 0;
		#endif
	#else
		#if test3==0
			$v006 = 0;
		#else
			$v007 = 0;
		#endif
	#endif
#endif



#if test==0
//@	$v000 = 0;
#else
//@	$v001 = 0;
#endif



//#define test 0
//#define test2 0
//#define test3 0

//#if test==0
//	#if test2==0
//		#if test3==0
			$v000 = 0;
//		#else
//			$v001 = 0;
//		#endif
//	#else
//		#if test3==0
//			$v002 = 0;
//		#else
//			$v003 = 0;
//		#endif
//	#endif
//#else
//	#if test2==0
//		#if test3==0
//			$v004 = 0;
//		#else
//			$v005 = 0;
//		#endif
//	#else
//		#if test3==0
//			$v006 = 0;
//		#else
//			$v007 = 0;
//		#endif
//	#endif
//#endif



//#if test==0
	$v000 = 0;
//#else
////@	$v001 = 0;
//#endif


//------------------------------------------------------------------------------
// sample switch
//------------------------------------------------------------------------------

#define s_test 1
#dbgout s_test

#switch s_test
	#case 0
		#define s_test2 0
	#break
	#case 1
		#define s_test2 1
	#break
	#case 2
		#define s_test2 0
	#break
	#case 3
		#define s_test2 1
	#break
	#case 4
		#define s_test2 0
	#break
	#case 5
		#define s_test2 1
	#break
#endswitch


#dbgout s_test2
#if s_test2==0
	$v000 = 0;
#else
	$v001 = 0;
#endif


#define s_test2 0

#dbgout s_test2
#if s_test2==0
	$v000 = 0;
#else
	$v001 = 0;
#endif



//#define s_test 1
//#dbgout s_test = 1

//#switch s_test
//	#case 0
//		#define s_test2 0
//	#break
//	#case 1
//		#define s_test2 1
//	#break
//	#case 2
//		#define s_test2 0
//	#break
//	#case 3
//		#define s_test2 1
//	#break
//	#case 4
//		#define s_test2 0
//	#break
//	#case 5
//		#define s_test2 1
//	#break
//#endswitch


//#dbgout s_test2 = 1
//#if s_test2==0
//	$v000 = 0;
//#else
	$v001 = 0;
//#endif


//#define s_test2 0

//#dbgout s_test2 = 0
//#if s_test2==0
	$v000 = 0;
//#else
//	$v001 = 0;
//#endif


//------------------------------------------------------------------------------
// sample switch2 case~break -> cb
//------------------------------------------------------------------------------

#define s_test 1

#switch s_test
	#cb 0 #define s_test2 2
	#cb 1 #define s_test2 3
	#cb 2 #define s_test2 2
	#cb 3 #define s_test2 3
	#cb 4 #define s_test2 2
	#cb 5 #define s_test2 3
#endswitch

#dbgout s_test2



//#define s_test 1

//#switch s_test
//	#cb 0 #define s_test2 2
//	#define s_test2 3
//	#cb 2 #define s_test2 2
//	#cb 3 #define s_test2 3
//	#cb 4 #define s_test2 2
//	#cb 5 #define s_test2 3
//#endswitch

//#dbgout s_test2 = 3


//------------------------------------------------------------------------------
// sample complex
//------------------------------------------------------------------------------

#define c_test 1
#define c_test2 1

#switch c_test
	#case 0
		#if c_test2==0
			#define c_test3 0
		#else
			#define c_test3 00
		#endif
	#break
	#case 1
		#if c_test2==0
			#define c_test3 1
		#else
			#define c_test3 11
		#endif
	#break
	#case 2
		#if c_test2==0
			#define c_test3 2
		#else
			#define c_test3 22
		#endif
	#break
	#case 3
		#if c_test2==0
			#define c_test3 3
		#else
			#define c_test3 33
		#endif
	#break
	#case 4
		#if c_test2==0
			#define c_test3 4
		#else
			#define c_test3 44
		#endif
	#break
	#case 5
		#if c_test2==0
			#define c_test3 5
		#else
			#define c_test3 55
		#endif
	#break
#endswitch

#dbgout c_test
#dbgout c_test2
#dbgout c_test3



//#define c_test 1
//#define c_test2 1

//#switch c_test
//	#case 0
//		#if c_test2==0
//			#define c_test3 0
//		#else
//			#define c_test3 00
//		#endif
//	#break
//	#case 1
//		#if c_test2==0
//			#define c_test3 1
//		#else
//			#define c_test3 11
//		#endif
//	#break
//	#case 2
//		#if c_test2==0
//			#define c_test3 2
//		#else
//			#define c_test3 22
//		#endif
//	#break
//	#case 3
//		#if c_test2==0
//			#define c_test3 3
//		#else
//			#define c_test3 33
//		#endif
//	#break
//	#case 4
//		#if c_test2==0
//			#define c_test3 4
//		#else
//			#define c_test3 44
//		#endif
//	#break
//	#case 5
//		#if c_test2==0
//			#define c_test3 5
//		#else
//			#define c_test3 55
//		#endif
//	#break
//#endswitch

//#dbgout c_test = 1
//#dbgout c_test2 = 1
//#dbgout c_test3 = 11


//------------------------------------------------------------------------------
// sample replace
//------------------------------------------------------------------------------

#define r_test0 1
#define r_test1 2
#define r_test2 3

test write #rep(r_test0)#
test write #rep(r_test0)# test write
#rep(r_test0)# test write

test write #rep(r_test0)##rep(r_test1)##rep(r_test2)#
test write #rep(r_test0)##rep(r_test1)##rep(r_test2)# test write
#rep(r_test0)##rep(r_test1)##rep(r_test2)# test write

test write #rep(r_test0)# / #rep(r_test1)# / #rep(r_test2)#
test write #rep(r_test0)# / #rep(r_test1)# / #rep(r_test2)# test write
#rep(r_test0)# / #rep(r_test1)# / #rep(r_test2)# test write


#define s_test 1
#switch s_test
	#cb 0 #define s_test2 #rep(r_test0)#
	#cb 1 #define s_test2 #rep(r_test1)#
	#cb 2 #define s_test2 #rep(r_test2)#
	#cb 3 #define s_test2 #rep(r_test0)#
	#cb 4 #define s_test2 #rep(r_test1)#
	#cb 5 #define s_test2 #rep(r_test2)#
#endswitch
#dbgout s_test2



//#define r_test0 1
//#define r_test1 2
//#define r_test2 3

test write 1
test write 1 test write
1 test write

test write 123
test write 123 test write
123 test write

test write 1 / 2 / 3
test write 1 / 2 / 3 test write
1 / 2 / 3 test write


//#define s_test 1
//#switch s_test
//	#cb 0 #define s_test2 1
//	#define s_test2 2
//	#cb 2 #define s_test2 3
//	#cb 3 #define s_test2 1
//	#cb 4 #define s_test2 2
//	#cb 5 #define s_test2 3
//#endswitch
//#dbgout s_test2 = 2





JPOP JPOPを全て見る 洋楽 洋楽を全て見る コンピューター コンピューターを全て見る 洋画 洋画を全て見る アニメ アニメを全て見る



Cronus Crown(クロノス・クラウン)のトップページに戻る
(c)2002-2017 Cronus Crown (c)1997-2017 Masakazu Yanai
このWebPageに関するご意見・お問い合わせは
サイト情報 - 弊社への連絡 -
までお願いします。