2015年3月8日投稿 / 投稿者 : 涼季 遊 / タグ : 投稿プログラム 実用ツール カスタムコンパイラ プログラム作成支援 ライブラリ
このプログラムは、プチコン3号で作られたライブラリプログラムを便利に使用するためのプログラム作成支援ツールです。
プチコン3号のプログラムに「include」「module」などの追加書式をサポートさせます
プログラムの自由度が広がり、たいていのことはできるようになったプチコン3号ですが、ある程度規模の大きい作品には
公開されているライブラリを使っていきたいところです。
しかし3号でも変わらず、ライブラリを使うには変数や関数の名前がかぶらないように変数名を長くせざるを得ないなど、
ライブラリを作る方も使う方もちょっと不便です。
あまつさえMk2まであった「APPEND」が無くなったため、「いったいどうやってソース結合すればいいんだぁ?」と思った人もいるかもしれません(コピペすればいいんですが)
そんなこんなでプチコンの抱えるライブラリ云々の不満を解決するためのツールです。
1.プチコンのプログラムソースに対して、SmileBasic3CustomCompilerがサポートする命令や書式を記述します
(※この段階のプログラムはプチコン3号では実行できません、手順4まで進みコンパイルする必要があります)
2.SmileBasic3CustomCompilerを実行し、自分の作ったプログラム名を指定します。
3.コンパイルが始まるので待ちます
4.書式にエラーがなければ処理が完了し、プチコン3号で実行可能なプログラムが保存されます
SmileBasic3CustomCompilerがサポートする機能の一覧です
ライブラリとして作った外部プログラムを結合します。
ライブラリを埋め込みたい箇所に
- #INCLUDE [PRGNAME]
のように記述します。
コンパイル後、この命令を記述した行に指定したプログラムが埋め込まれます。
以下記述例
- DIM ABC
- ABC=FUNC1()
- END
- #INCLUDE LIB1
- DEF FUNC1()
- RRETURN 512
- END
- DIM ABC
- ABC=FUNC1()
- END
- DEF FUNC1()
- RRETURN 512
- END
- ’INCLUDED:LIB1
プログラムの一部をモジュール化し、変数や関数などの要素をメインプログラムから隠蔽します
プログラム中のモジュール化したい箇所を
「#MODULE」~「#GLOBAL」で囲うことによってその箇所をモジュールとして扱います
「#INCLUDE」を「#MODULE」~「#GLOBAL」で囲えばライブラリを丸ごとモジュール指定することになります
「#MODULE」~「#GLOBAL」で囲われた領域の変数や関数は、
コンパイル時に自動変換され、「#MODULE」の引数に指定したモジュール名特有の名称になります
※モジュール変数は必ず「DIM」で宣言する必要があります宣言しない場合、モジュール変数として扱われません
記述例
- #MODULE TESTMODULE
- DIM ABC
- DEF SETABC VALUE
- ABC=VALUE
- END
- #GLOBAL
コンパイル後
- ’#MODULE TESTMODULE
- DIM TESTMODULE_ABC
- DEF TESTMODULE_SETABC VALUE
- TESTMODULE_ABC=VALUE
- END
- ’#GLOBAL
また、モジュールは階層型にネストすることが可能で
「#MODULE」~「#GLOBAL」で囲われた領域をさらに「#MODULE」~「#GLOBAL」で囲うことにより、ネストします
記述例
- #MODULE TESTMODULE2
- DIM ABC
- #MODULE TESTMODULE1
- DIM ABC
- DEF SETABC VALUE
- ABC=VALUE
- END
- #GLOBAL
- #GLOBAL
コンパイル後
- ’#MODULE TESTMODULE2
- DIM TESTMODULE2_ABC
- ’#MODULE TESTMODULE1
- DIM TESTMODULE2_TESTMODULE1_ABC
- DEF TESTMODULE2_TESTMODULE1_SETABC VALUE
- TESTMODULE2_TESTMODULE1_ABC=VALUE
- END
- ’#GLOBAL
- ’#GLOBAL
モジュール化された要素に外部からアクセスするには
[モジュール名].[変数名]
のようにモジュール名を指定して記述します。
またネストした下位モジュールから親モジュールへアクセスするには
SUPER.[変数名]
のように記述します、また、親の親にアクセスするには
SUPER.SUPER.[変数名]
のように記述します
モジュール中から非モジュール空間の要素へアクセスするには
G.[変数名]
のように「G.」の後に記述します
モジュールがネストしている場合は、モジュール名を[.]で区切って階層指定します
モジュール中で非モジュール空間の要素を宣言したい場合は
#PUBLIC [DIM等の宣言式]
と記述します
以下記述例
- DIM XXX
- XXX=123
- GOSUB@TESTMODULE2.INIT
- GOSUB@TESTMODULE2.TESTMODULE1.INIT
- GOSUB@TESTMODULE3.INIT
- TESTMODULE2.SETABC
- TESTMODULE2.TESTMODULE1.SETABC(TESTMODULE2.GETABC())
- ?TESTMODULE2.TESTMODULE1.GETABC
- END
- #MODULE TESTMODULE2
- @INIT
- DIM ABC
- RETURN
- DEF SETABC
- ABC=G.XXX
- END
- DEF GETABC()
- RETURN ABC
- END
- #MODULE TESTMODULE1
- @INIT
- DIM ABC
- RETURN
- DEF SETABC VALUE
- ABC=VALUE
- END
- DEF GETABC()
- RETURN SUPER.ABC + G.TESTMODULE3.ZZZ
- END
- #GLOBAL
- #GLOBAL
- #MODULE TESTMODULE3
- @INIT
- DIM ZZZ
- ZZZ=1024
- RETURN
- #GLOBAL
「#」から始まる追加命令の一覧です
#PUBLIC DEF FUNTION1(PARAM1)
プチコン3号用の公開キーです。トップメニューの「作品公開とダウンロード」から公開キーを入力すると、作品をダウンロードすることができます。
この作品に対する感想や要望、バグ報告などがあれば一言どうぞ。(作品に直接関係ない質問や雑談は掲示板へ)
表示モード : [ スマホ・3DS対応表示 | クラシック表示 ]
PukiWiki 1.4.7 Copyright © 2001-2006 PukiWiki Developers Team. License is GPL. Based on "PukiWiki" 1.3 by yu-ji
ページの処理時間 : 0.128 秒 | このページの最終更新 : 2022/09/20 (火) 12:48:51 (565d) | ログイン
Copyright(C) 2011-2014 プチコンまとめWiki ◆1sxkymI8ji30