→HSP関連文書に戻る
HSP3キーワードと式は主に以下の種類があります。
命令以外のキーワードは基本的に式中に記述できます。
(一部、できないものもあり)
変数以外は値を代入できません。
HSP3 では対応キーワードの種類が増えたりと分かりづらくなっているので簡単に
説明したいと思います。
間違いがたくさんあるかも知れないので気がついた方は修正お願いします。
定数
定数とは数値や文字列そのもののことです。
また、それらを #define や #const などで置き換えたものも含みます。
- 例
- 整数値定数
0, 1, 2, 3, 4
- 実数値定数
0.1, 0.2, 0.3
- 文字列定数
"test"
- #const
#const ONE 1
- #define
#define TEST "test"
- 10 進数負数(整数)
-1
- 10 進数負数(実数)
-0.1
- 2 進数(1)
%11111111
- 2 進数(2)
0b11111111
- 16 進数(1)
$ffffffff
- 16 進数(2)
0xffffffff
- 文字コード
'A'
- スケープシーケンス
"\n", "\r", "\"", "\'", "\t", "\\"
マクロ
マクロとは #define で置き換えた式や命令のことです。
- 例
- 命令型のマクロ
#define hyouji(%1 = "PRM=", %2 = 123) mes %1 + %2
hyouji "AAA", a
hyouji "BBB"
hyouji ,b
- 関数型のマクロ
#define ctype kansu(%1) %1 * 5 + 1
mes kansu(5)
命令型のマクロ...というより、展開後の状態に命令などが含まれていた
場合は式中に記述はできません。
(パラメータに式を受け取ることは可能です)
関数型のマクロ...というより展開後の状態が式中に入力のできる式のみの
場合は当然ですが式中に記述できます。
論理演算子は hspdef.as にてマクロとして別名が定義されています。
他、いくつかの命令が hspdef.as にてマクロとして定義されています。
- 例(hspdef.as より一部抜粋)
#define global do %tbreak %i0 %tcontinue %i0 %tdo *%i
#define global until(%1=1) %tcontinue *%o : %tdo if %1=0 { goto *%o } %tbreak *%o
#define global while(%1=1) %tcontinue %i0 %twhile *%i :%tbreak if %1=0 { goto *%i }
#define global wend %tcontinue *%o : %twhile goto *%o: %tbreak *%o
#define global for(%1,%2=0,%3=0,%4=1) %tcontinue %i0 %tfor %1=%2:*%i %s4 %s1 :%tbreak exgoto %1,%4,%3,*%i
#define global next %tcontinue *%o :%tfor %o +=%o :goto *%o :%tbreak *%o
#define global _break %tbreak goto *%p
#define global _continue %tcontinue goto *%p
他にも、 hspdef.as でマクロとして登録されているキーワードがあります。
詳細は hspdef.as をご覧下さい。
関数
パラメータ(引数)を受け取りそれを特定の条件に基づき変換した値を
返す式です。
HSP 内蔵関数
HSP のシステムに標準で実装されている関数です。
HSP 拡張関数
HSP 拡張プラグインで実装された関数です。
ユーザー定義関数
#defcfunc によりスクリプト内で定義された関数です。
DLL 定義関数
Win32API を始め、標準の Win32 DLL のエクスポート関数を #uselib と
#cfunc にてHSP から利用できるように定義した関数です。
変数
唯一、値を代入できるキーワードです。
ほとんどの場合、定数の代わりに利用できます。
(コンパイラが解釈するのでプリプロセッサ命令では通りません)
配列変数
一つの変数名に番号(添字)をつけることで複数の値を管理します。
クローン変数
dup/dupptr 命令にて作成された他の変数のクローン(アドレスが同じ変数)。
モジュール変数
モジュール内でのみ有効な変数。
この変数をモジュール外から参照するには「@モジュール名」を添えます。
型
型とは定数や変数がどのような値を保持しているか、又は保持できるかという情報を表します。
標準型
- 標準型とは最初から用意されている型のことで、以下のものがあります。
- 文字列型
文字列を扱う為の型です。型名は"str"です。
- 実数型
実数を扱う為の型です。型名は"double"です。
- 整数型
整数を扱う為の型です。型名は"int"です。
- モジュール型
モジュール変数を扱う為の型です。型名は"struct"です。
- COMオブジェクト型
COMオブジェクトを操作するための型です。型名は"comobj"です。
拡張型
- 拡張プラグインなどで導入されるユーザー(プラグイン)定義の型です。
プラグインによって拡張される型は様々です。
演算子
式の計算に利用されるキーワードです。
算術演算子
式の加減/乗除などの基本演算子です。
- 例
- +
加算演算子
- -
減算演算子
- *
乗算演算子
- /
除算演算子
- \
剰余演算子
代入演算子
変数に値を代入するための演算子です。
式中には記述できません。
式の結果を受け取ります。
- 例
- =
代入演算子
- +=
加算代入演算子
- -=
減算代入演算子
- *=
乗算代入演算子
- /=
除算代入演算子
インクリメント/デクリメント演算子
変数の値に 1 を加算または減算します。
式中には記述できません。
- 例
- +
インクリメント演算子(1)
- ++
インクリメント演算子(2)
- -
デクリメント演算子(1)
- --
デクリメント演算子(2)
論理代入演算子
変数との論理演算の結果を代入します。
式中には記述できません。
式の結果を受け取ります。
- 例
- &=
論理積代入演算子
- |=
論理和代入演算子
- ^=
排他的論理和代入演算子
ビットシフト代入演算子
変数のビットシフトの結果を代入します。
式中には記述できません。
式の結果を受け取ります。
- 例
- <<=
左ビットシフト代入演算子
- >>=
右ビットシフト代入演算子
論理演算子
論理値の計算演算子です。
- 例
- &
論理積演算子
- |
論理和演算子
- ^
排他的論理和演算子
比較演算子
二つの値を比較する演算子です。
- 例
- =
等価演算子
- !
否定演算子
- <
(右)より小さい
- >
(右)より大きい
- <=
(右)以下
- >=
(右)以上
ビットシフト演算子
ビット単位で左右にずらす演算子。
- 例
- <<
左ビットシフト演算子
- >>
右ビットシフト演算子
- 他にもいくつかあります。
- 実際には演算子は細かく分類することは難しいです。
命令
引数を受け取り特定の動作などをする HSP の基本コマンド。
一部の命令は実行結果などを stat や refstr などのシステム変数に返します。
式ではありません。
HSP 内蔵命令
HSP のシステムに標準で実装されている命令です。
HSP 拡張命令
HSP 拡張プラグインで実装された命令です。
ユーザー定義命令
#deffunc によりスクリプト内で定義された命令です。
DLL 定義命令
Win32API を始め、標準の Win32 DLL のエクスポート関数を #uselib と
#func にてHSP から利用できるように定義した命令です。
システム変数
命令の実行結果や特定の操作をした後の状態を保持しているキーワード。
変数という名称がついているが実際には任意で代入ができないので
引数なしの関数や定数に近い。
その他
その他のキーワードなどです。
他にもいくつかあります。
- 例
- ,
カンマ/コンマ(パラメータの区切り, 配列変数代入他)
- .
ドット/ピリオド(配列の変数名と添字区切り, 実数)
- ()
パーレン(配列の添字及び関数のパラメータ, 演算の優先順指定他)
- {}
ブレース(複数行の if, mes, 変数文字列代入など)
- ""
クオート/ダブルクオーテーション(文字列リテラル)
- ''
文字コード
- ;
行コメント(1)
- //
行コメント(2)
- /*〜*/
複数行/範囲コメント
- :
マルチステートメント
- @
モジュール空間
|