A = B ;AにBを代入
このように行の末尾にコメントを挿入できます
ただし、一部例外があり、「PRINT」命令のように引数が単純文字列の命令の場合にはコメント化されず文字列の一部と評価されます
PRINT foobar;ほげほげ
この場合、「foobar;ほげほげ」がPRINTされます
{
DIM CONST HOGE =
1,2,3,4
と書くと「#DIM CONST HOGE = 1,2,3,4」と解釈されます
'{'、'}'の行にはホワイトスペース以外の他の文字が存在してはなりません
改行記号のある位置には半角スペースが補われます
つまり関数名・変数名の途中で行を分割することはできないほか、
PRINTなどを分割すると表示文字列の中に改行だった半角スペースが含まれます
Emueraの文法解釈において行連結処理はコメントの解釈より先に行われます
つまり
{
#DIM CONST HOGE =
1,2,3,4 ;コメント
,5,6,7,8
は「#DIM CONST HOGE = 1,2,3,4 ;コメント ,5,6,7,8」となり、
「,5,6,7,8」は行末コメントの一部とみなされ無視されます
Emuera、eramakerのいずれでも、;で始まる行はコメント行とみなされますが、Emueraは;!;で始まる行はコメントではなく有効な行とみなします。
eramakerでは実行してほしくない文を記述する際に使ってください。
例えば@SHOWSHOPに以下のスクリプトを加えるとEmueraでの動作を禁止できます。
;!;PRINTW このスクリプトはEmueraでは実行できません ;!;QUIT
また、[SKIPSTART]や[SKIPEND]と併用することで、以下のスクリプトのようにEmuera以外での動作を禁止できます。
Emuera以外では実行してほしくない文を記述する際に使ってください。
;!;[SKIPSTART] PRINTW このスクリプトはEmuera以外では実行できません QUIT ;!;[SKIPEND]
;#;で始まる行はデバッグモード時のみ実行されます。
非デバッグモード時ではコメント行と見なされ実行されません。
ただし、DEBUG系命令は元々非デバッグモード時には無視されるので、;#;を行頭に付ける必要はありません。
同様にデバッグ変数も非デバッグモード時には空文字列又は0のため、エラーの心配はありません。
デバッグモードについてはこちらを参照してください。
eramakerで扱える整数は32ビット符号付整数、すなわち-2147483648〜2147483647の範囲です。
Emueraでは吉里吉里と同じく64ビット符号付整数、-9223372036854775808〜9223372036854775807の範囲の値を扱います。
文字列変数への代入の際、PRINTFORMと同じ形式で代入する文字列を指定できます。
SAVESTR:0 = %RESULTS%
この文でSAVESTR:0にRESULTSの中身を代入することができます。
同じ文はeramakerではSAVESTR:0に%RESULTS%という文字列そのものを代入したことになります。
Emueraで%RESULTS%という文字列そのものを代入したい場合、以下のように書いてください。
SAVESTR:0 = \%RESULT\%
\記号の直後の文字はシステム記号として扱われません。
\記号自体を文字列に含めたい場合は\\としてください。
あまりないケースですが、eramakerとEmueraで同じ動作をさせたい場合は以下のように書く必要があります。
;!;SAVESTR:0 = \%RESULT\% ;!;[SKIPSTART] SAVESTR:0 = %RESULTS% ;!;[SKIPEND]
ver1813以降のEmueraでは新たに、代入演算子'=と文字列式を用いて文字列変数への代入を行うことができます。
;「STR = あいう」と同様 STR '= "あいう" ;「STR = %TSTR:0%いろは」と同様 STR '= TSTR:0 + "いろは"
PRINTFORMなどでつかわれる書式付文字列のうち、{}、%%に表示桁数(文字数)を指定できます。
{変数・数式等, 表示桁数, 揃え(LEFT or RIGHT)}、%変数、文字列式等, 表示桁数, 揃え(LEFT or RIGHT)%という形式で指定します。
文字数は全角文字を2文字と数えます。
表示桁数(文字数)に足りない部分は半角スペースが追加されます。
通常は右揃えですが、キーワードLEFTを指定すると左揃えになります。
指定された表示桁数よりもとの桁数の方が大きい場合、そのまま表示します。
A = 123456
STR:0 = あいう
PRINTFORML [{A}]
PRINTFORML [{A,10}]
PRINTFORML [{A,10,LEFT}]
PRINTFORML [%STR:0%]
PRINTFORML [%STR:0,10%]
PRINTFORML [%STR:0,10,LEFT%]
PRINTFORML [{A,2}]
PRINTFORML [%STR:0,2%]
;結果 [123456] [ 123456] [123456 ] [あいう] [ あいう] [あいう ] [123456] [あいう]
PRINTSやユーザー定義の式中関数の引数といった文字列式中でFORM構文を使用するとエラーになります。
そのため文字列式中で書式付文字列を使用する場合、文字列式中で定文字列を使うときに“〜”を使用するのと同じように
@“〜”を使用します。 また、@“〜”の中の文字列が\@〜\@を用いた三項演算子による記載のみである場合、@“〜”を省略して直接\@〜\@と書くことができます
正しい例 ;代入はFORM構文 STR:0 = あいう ;加算は文字列式 RESULTS += STR:0 ;文字列式に定文字列を使用する例 RESULTS += "えお" ;文字列式にFORM構文を使用する例 PRINTS @"%RESULTS%かきくけこ" ;以下の4行はすべて同じである PRINTS STR:0 + "!" PRINTFORM %STR:0%! PRINTS @"%STR:0%!" PRINTFORM %STR:0 + "!"%
間違った例 ;中身が「RESULTS」になる STR:0 = RESULTS ;エラーが出る RESULTS += えお ;エラーが出る RESULTS += %STR:0% ;「@"」と「"」も表示される PRINTFORM @"%RESULTS%かきくけこ"
INPUTSやそれに類する入力受付命令で、マクロ式を用いることができます。
マクロの書式については利用方法のマクロの項目を確認してください。
マクロ構文を使わず、単なる文字列として()を使用する場合、\を用いてエスケープしてください。
処理的には
IF <条件式> <代入先変数> = <真の場合の代入値> ELSE <代入先変数> = <偽の場合の代入値> ENDIF
と同じになります。
なお、数値の三項演算子については、()の中に入れることにより、通常の計算の中で使うこともできますし、文字列の三項演算子については、そのままPRINTFORM系命令に使うことができます。
ただし、\@〜\@形式の三項演算子では#を省略することはできません。
'= 文字列式を用いた文字列型変数への代入を行う演算子 詳しくはこちら
代入文の代わりに使います。他の演算子と組み合わせることはできません。
分類 優先度 代入複合演算 記号 否定演算子 高 × ~, ! 算術演算子 ↑ ○ *, /, % ○ +, - ビットシフト演算子 ○ <<, >> 比較演算子 × <, >, <=, >= × ==, != 論理演算子 ○ &, |, ^ ↓ × &&, !&, |?|, !|, ^^ 三項演算子 低 × 〜?…#_
STR:0 = % "あ" * 10 % PRINTFORML STR:0 = "%STR:0%" WAIT ;結果 STR:0 = "ああああああああああ"
短絡評価とはたとえば(X && Y)という式でXが0である時、Yの値によらず演算結果が0になることが明らかなのでYを評価しない、という評価法です。
吉里吉里を含む多くの言語では論理演算子を短絡評価します。
この評価法により以下のような書き方ができます。
IF (ASSI >= 0) && (NO:ASSI == 1) 〜〜〜 ELSE 〜〜〜 ENDIF
ASSIが0以下の場合、(NO:ASSI == 1)の結果によらず全体の結果は0なのでNO:ASSIは参照されません。 したがってエラーも発生しません。
評価順は左項が先、右項が後です。
IF (NO:ASSI == 1) && (ASSI >= 0)
このように書くと先に(NO:ASSI == 1)を計算しようとするのでASSI < 0のときエラーになります。
Emueraでは8進数表記を除き、吉里吉里で使える定数の表記がそのまま使えます。
例えば以下の行は全て同じ意味になります。
X = 32 X = 0b100000 X = 0x20 X = 1p5
上から順に、普通の10進表記、2進数、16進数、1×2の5乗、になります。
1p5のような表記はビット演算子と組み合わせ、各ビットを取得・設定したい時に便利です。
例えば下の条件文はAの下0ビット目または3ビット目が立っているときに真になります。
IF (A & 1p0)||(A & 1p3)
また、pの代わりにeを使うことでn×10のm乗を表せます。
例えば13e3は13000に等しくなります。
以上はあくまでも定数の表記ですので式を使うことはできません。
以下のような表記はエラーになります。
X = 13e(A + 1)
8進数表記についてはeramakerとの互換性の問題から採用していません。
“012”は10ではなく12と解釈されます。