OSDN Git Service

タグを打ち忘れていたついでに、html版ドキュメントを追加しました。
[ring-lang-081/ring.git] / docs / ja-jp / build / html / _sources / reference.txt
1 .. index:: 
2         single: 言語リファレンス; はじめに
3
4 ================
5 言語リファレンス
6 ================
7
8 この章では下記を学びます。
9
10 * 言語のキーワード
11 * 言語の関数
12 * コンパイラのエラー
13 * 実行時のエラー
14 * 環境のエラー
15 * 言語の文法
16 * 仮想計算機 (VM) の命令
17
18
19 .. index:: 
20         pair: 言語リファレンス; 言語のキーワード
21
22 言語のキーワード
23 ================
24
25 キーワードの総数 : 49
26
27 * again
28 * and
29 * but
30 * bye
31 * call
32 * case
33 * catch
34 * changeringkeyword
35 * changeringoperator
36 * class
37 * def
38 * do
39 * done
40 * else
41 * elseif
42 * end
43 * exit
44 * for
45 * from
46 * func
47 * get
48 * give
49 * if
50 * import
51 * in
52 * load
53 * loadsyntax
54 * loop
55 * new
56 * next
57 * not
58 * off
59 * ok
60 * on
61 * or
62 * other
63 * package
64 * private
65 * put
66 * return
67 * see
68 * step
69 * switch
70 * to
71 * try
72 * while
73 * endfunc
74 * endclass
75 * endpackage
76
77
78 .. index:: 
79         pair: 言語リファレンス; 言語の関数
80
81 言語の関数
82 ==========
83
84 関数の総数 : 210
85
86 .. code-block:: ring
87
88         acos()                      add()                       addattribute()              adddays()
89         addmethod()                 ascii()                     asin()                      assert()
90         atan()                      atan2()                     attributes()                binarysearch()
91         bytes2double()              bytes2float()               bytes2int()                 callgc()
92         ceil()                      cfunctions()                char()                      chdir()
93         classes()                   classname()                 clearerr()                  clock()
94         clockspersecond()           closelib()                  copy()                      cos()
95         cosh()                      currentdir()                date()                      dec()
96         decimals()                  del()                       diffdays()                  dir()
97         double2bytes()              eval()                      exefilename()               exefolder()
98         exp()                       fabs()                      fclose()                    feof()
99         ferror()                    fexists()                   fflush()                    fgetc()
100         fgetpos()                   fgets()                     filename()                  find()
101         float2bytes()               floor()                     fopen()                     fputc()
102         fputs()                     fread()                     freopen()                   fseek()
103         fsetpos()                   ftell()                     functions()                 fwrite()
104         getattribute()              getchar()                   globals()                   hex()
105         hex2str()                   input()                     insert()                    int2bytes()
106         intvalue()                  isalnum()                   isalpha()                   isandroid()
107         isattribute()               iscfunction()               isclass()                   iscntrl()
108         isdigit()                   isfreebsd()                 isfunction()                isglobal()
109         isgraph()                   islinux()                   islist()                    islocal()
110         islower()                   ismacosx()                  ismethod()                  ismsdos()
111         isnull()                    isnumber()                  isobject()                  ispackage()
112         ispackageclass()            ispointer()                 isprint()                   isprivateattribute()
113         isprivatemethod()           ispunct()                   isspace()                   isstring()
114         isunix()                    isupper()                   iswindows()                 iswindows64()
115         isxdigit()                  left()                      len()                       lines()
116         list()                      list2str()                  loadlib()                   locals()
117         log()                       log10()                     lower()                     max()
118         mergemethods()              methods()                   min()                       murmur3hash()
119         nullpointer()               number()                    object2pointer()            objectid()
120         packageclasses()            packagename()               packages()                  perror()
121         pointer2object()            pow()                       prevfilename()              ptrcmp()
122         raise()                     random()                    read()                      remove()
123         rename()                    reverse()                   rewind()                    right()
124         ring_give()                 ring_see()                  
125         ring_state_delete()         ring_state_filetokens()        
126         ring_state_findvar()        ring_state_init()           ring_state_main()           
127         ring_state_mainfile()       ring_state_new()            ring_state_newvar()         
128         ring_state_runcode()        ring_state_runfile()        ring_state_runobjectfile()
129         ring_state_setvar()         ringvm_callfunc()           ringvm_calllist()           
130         ringvm_cfunctionslist()     ringvm_classeslist()        ringvm_evalinscope()        
131         ringvm_fileslist()          ringvm_functionslist()      ringvm_genarray()           
132         ringvm_give()               ringvm_hideerrormsg()       ringvm_info()               
133         ringvm_memorylist()         ringvm_packageslist()       ringvm_passerror()          
134         ringvm_scopescount()        ringvm_see()                ringvm_settrace()           
135         ringvm_tracedata()          ringvm_traceevent()         ringvm_tracefunc()
136         setattribute()              shutdown()                  sin()                       sinh()
137         sort()                      space()                     sqrt()                      srandom()
138         str2hex()                   str2hexcstyle()             str2list()                  strcmp()
139         string()                    substr()                    swap()                      sysget()
140         system()                    tan()                       tanh()                      tempfile()
141         tempname()                  time()                      timelist()                  trim()
142         type()                      ungetc()                    unsigned()                  upper()
143         varptr()                    version()                   windowsnl()                 write()
144
145 .. index:: 
146         pair: 言語リファレンス; コンパイラのエラー
147
148 コンパイラのエラー
149 ==================
150
151 * Error (C1)  : 要求された識別子において、仮引数リストにエラーがあります。
152 * Error (C2)  : クラス名にエラーがあります。
153 * Error (C3)  : ‘ok’ が欠落しているため、制御構造を閉じることができません。
154 * Error (C4)  : ‘end’ が欠落しているため、制御構造を閉じることができません。
155 * Error (C5)  : next が欠落しているため、制御構造を閉じることができません。
156 * Error (C6)  : 関数名にエラーがあります。
157 * Error (C7)  : リストの項目にエラーがあります。
158 * Error (C8)  : 丸括弧 ‘)’ が欠落しています。
159 * Error (C9)  : 角括弧 ‘]’ が欠落しています。
160 * Error (C10) : 親クラス名にエラーがあります。
161 * Error (C11) : 演算子の式にエラーがあります。
162 * Error (C12) : クラスが定義されていません。
163 * Error (C13) : 変数名にエラーがあります。
164 * Error (C14) : Try/Catch で Catch キーワードが欠落しています!
165 * Error (C15) : Try/Catch で Done キーワードが欠落しています!
166 * Error (C16) : Switch ステートメントの式でエラーがあります!
167 * Error (C17) : Switch ステートメントに OFF がありません。
168 * Error (C18) : 開いているブロックで括弧を閉じるのを忘れています!
169 * Error (C19) : 数値オーバーフロー!
170 * Error (C20) : パッケージ名にエラーがあります。
171 * Error (C21) : ‘again’ が欠落しているため、制御構造を閉じることができません。
172 * Error (C22) : 関数は既に存在しますが、関数が再定義されました!
173 * Error (C23) : 数値の後に ‘(‘ が使用されています!
174 * Error (C24) : 親クラス名はサブクラス名と重複しています。
175 * Error (C25) : オブジェクト名の後に自己参照アクセスをしようとしています。”
176 * Error (C26) : クラスは既に存在しますが、クラスが再定義されました!
177
178 * Warning (W1) : ファイル名が重複しています。
179 * Warning (W2) : コンパイラ命令 ChangeRingKeyword では二種類の語句が引数として必要です。
180 * Warning (W3) : コンパイラ命令 ChangeRingKeyword - キーワードが見つかりません!
181 * Warning (W4) : コンパイラ命令  ChangeRingOperator では二種類の語句が引数として必要です。
182 * Warning (W5) : コンパイラ命令 ChangeRingOperator - 演算子が見つかりません!
183 * Warning (W6) : ループの外側で EXIT 命令を使用しています。
184 * Warning (W7) : ループの外側で LOOP 命令を使用しています。
185
186 .. index:: 
187         pair: 言語リファレンス; 実行時のエラー
188
189 実行時のエラー
190 ==============
191
192 * Error (R1)  : ゼロ除算はできません!
193 * Error (R2)  : 配列へのアクセス (インデックスの範囲外です)!
194 * Error (R3)  : 未定義関数を呼び出そうとしました!
195 * Error (R4)  : スタックオーバーフロー!
196 * Error (R5)  : オブジェクトはリストではないため、リストの項目へアクセスできません!
197 * Error (R6)  : 変数が必要です。
198 * Error (R7)  : 文字列内にある文字には一文字以上割り当てることはできません。
199 * Error (R8)  : 変数は文字列ではありません。
200 * Error (R9)  : ループの外側で Exit 命令を使用しています。
201 * Error (R10) : 数値の範囲外で Exit 命令を使用しています。
202 * Error (R11) : クラスが見つからないため、クラス名にエラーがあります!
203 * Error (R12) : プロパティが見つからないため、プロパティ名にエラーがあります!
204 * Error (R13) : オブジェクトが必要です。
205 * Error (R14) : 未定義メソッドを呼び出そうとしました!
206 * Error (R15) : 親クラスが見つからないため、クラス名にエラーがあります!
207 * Error (R16) : 未知のオブジェクトへのアクセスで括弧を使用しようしました!
208 * Error (R17) : 親クラスのない状態で‘Super’を使用したためエラーになりました!
209 * Error (R18) : 数値オーバーフロー!
210 * Error (R19) : 関数の呼び出しで仮引数の個数が不足しています!
211 * Error (R20) : 関数の呼び出しで仮引数の個数が超過しています!
212 * Error (R21) : 演算子で不正な型の値を使用しています。
213 * Error (R22) : ループの外側で Loop 命令を使用しています。
214 * Error (R23) : 数値の範囲外で Loop 命令を使用しています。
215 * Error (R24) : 未初期化変数を使用しようとしました。
216 * Error (R25) : パッケージが見つからないため、パッケージ名にエラーがあります!
217 * Error (R26) : クラスの外側でプライベートメソッドを使用しようとしました。
218 * Error (R27) : クラスの外側でプライベート属性を使用しようとしました。
219 * Error (R28) : ステップ値で不正なデータ型が使用されています。
220 * Error (R29) : For ループで不正なデータ型が使用されています。
221 * Error (R30) : 親クラス名は子クラス名と重複しています。
222 * Error (R31) : オブジェクトを自己参照で破棄しようとしました。
223 * Error (R32) : CALL 命令で要求された変数に文字列があります!
224 * Error (R33) : 不正な十進数値です (正しい範囲は >= 0 から <=14 まで)!
225 * Error (R34) : 代入操作には変数が必要です。
226 * Error (R35) : ファイルを開く、または作成できません!
227 * Error (R36) : カラム番号が正しくありません! リストのカラム番号より大きいです。
228 * Error (R37) : 申し訳ございません。このコンテキストにおいてこの命令は対応していません。
229 * Error (R38) : 動的ライブラリの読み込み時に実行時エラーが発生しました!
230 * Error (R39) : 唯一無二のファイル名を作成するときにエラーが発生しました。
231
232
233 .. index:: 
234         pair: 言語リファレンス; 環境のエラー
235
236 環境のエラー
237 ============
238
239 * Error (E1) : セグメンテーション違反が発生しました!
240 * Error (E2) : メモリが足りません!
241 * Error (E3) : スコープが存在しないのにスコープを削除しようとしました!
242 * Error (E4) : 仮想計算機の命令が長すぎます!
243 * Error (E5) : ファイルの種類が正しくありません ― VM は Ring オブジェクトファイルのみ扱えます。
244 * Error (E6) : Ring オブジェクトファイルのバージョンが正しくありません!
245 * Error (E7) : sscanf() 関数で内部エラーが発生しました!
246 * Error (E8) : fscanf() 関数で内部エラーが発生しました!
247
248
249 .. index:: 
250         pair: 言語リファレンス; 言語の文法
251
252 言語の文法
253 ================
254
255 プログラム → {ステートメント}
256
257 ステートメント → ‘package’ <識別子> { ‘.’ <識別子> } [‘{‘ {ステートメント} ‘}’] [‘end’|’endpackage’]
258
259 ステートメント → ‘class’ <識別子> [ ‘from’|’:’|’<’ <識別子> ] [‘{‘ {ステートメント} ‘}’][‘end’|’endclass’]
260
261 ステートメント → ‘func’|’def’ <識別子> [仮引数リスト] [‘{‘ {ステートメント} ‘}’][‘end’|’endfunc’]
262
263 ステートメント → ‘import’ <識別子> { ‘.’ <識別子> }
264
265 ステートメント → ‘private’
266
267 ステートメント → ‘load’; [‘package'|'again' ] <リテラル>
268
269 ステートメント → ‘loadsyntax’ <リテラル>
270
271 ステートメント → ‘changeringkeyword’ <旧キーワード> <新キーワード>
272
273 ステートメント → ‘changeringoperator’ <旧演算子> <新演算子>
274
275 ステートメント → ‘see’|’put’ <式>
276
277 ステートメント → ‘give’|’get’ <識別子>
278
279 ステートメント → ‘if’ <式> [‘{‘] {ステートメント} [ {‘but’|’elseif’ <式> {ステートメント} } ] [‘else’ {ステートメント} ] ‘ok’|’end’|’}’
280
281 ステートメント → ‘Switch’ <式> [‘{‘] { ‘on’|’case’ <式> {ステートメント} } [‘other’ {ステートメント} ] ‘off’|’end’|’}’
282
283 ステートメント → ‘for’ <識別子> ‘=’ <式> ‘to’ <式> [ ‘step’ <式> ] [‘{‘] {ステートメント} ‘next’|’end’|’}’
284
285 ステートメント → ‘for’ <識別子> ‘in’ <式> [ ‘step’ <式> ] [‘{‘] {ステートメント} ‘next’|’end’|’}’
286
287 ステートメント → ‘while’ <式> [‘{‘] {ステートメント} ‘end’|’}’
288
289 ステートメント → ‘do’ {ステートメント} ‘again’ <式>
290
291 ステートメント → ‘try’ {ステートメント} [‘{‘] ‘catch’ {ステートメント} ‘done’|’end’|’}’
292
293 ステートメント → ‘return’ <式>
294
295 ステートメント → ‘bye’
296
297 ステートメント → ‘exit’
298
299 ステートメント → ‘loop’
300
301 ステートメント → <式>
302
303 ステートメント → エプシロン
304
305 仮引数リスト → エプシロン
306
307 仮引数リスト → [‘(‘] <識別子> [{ ‘,’ <識別子> }] [‘)’]
308
309 式 → <LogicNot> [{ ‘and’|’or’ <LogicNot> }]
310
311 LogicNot → [‘not’] <EqualOrNot>
312
313 EqualOrNot → [ ‘=’|’!=’ ] <比較>
314
315 比較 → <BitOrXor> [ { ‘<’ | ‘>’ | ‘<=’ | ‘>=’ <BitOrXor> } ]
316
317 BitOrXor → <BitAnd> [ { ‘|’ | ‘^’ <BitAnd> } ]
318
319 BitAnd → <BitShift> [ { ‘&’ <BitShift> } ]
320
321 BitShift → <演算> [ { ‘<<’ | ‘>>’ <演算> } ]
322
323 演算 → <項> [ { ‘+’ | ‘-‘ <項> } ]
324
325 項 → <範囲> [ { ‘*’ | ‘/’ | ‘%’ <範囲> } ]
326
327 範囲 → <要素> [ ‘:’ <要素> ]
328
329 要素 → <識別子> [ {混成} ] [ ‘=’ <式> ]
330
331 要素 → <数値>
332
333 要素 → <リテラル>
334
335 要素 → ‘:’ <識別子>
336
337 要素 → ‘-‘ <要素>
338
339 要素 → ‘(‘ <式> ‘)’
340
341 要素 → <リスト>
342
343 要素 → ‘new’ <識別子>
344
345 要素 → <無名関数>
346
347 要素 → ‘call’ <識別子> { ‘.’ <識別子> } ‘(‘ <仮引数> ‘)’
348
349 リスト → ‘[‘ [ <式> { ‘,’ <式> } ] ‘]’
350
351 混成 → { ‘.’ <識別子> }
352
353 混成 → ‘[‘ <式> ‘]’
354
355 混成 → ‘(‘ [ <式> [ { ‘,’ <式> }] ] ‘)’
356
357 混成 → ‘{‘ {ステートメント} ‘}’
358
359 無名関数 → ‘func’|’def’| [<仮引数リスト>] ‘{‘ {ステートメント} ‘}’
360
361
362 .. index:: 
363         pair: 言語リファレンス; 仮想計算機 (VM) の命令
364
365 仮想計算機 (VM) の命令
366 ======================
367
368 定義:
369
370 * VM : 仮想計算機
371 * Stack : VM スタック
372 * IR : 命令レジスタ
373 * PC : プログラムカウンタ
374 * VP : 変数のポインタ
375 * Stack[nSize] : スタックの最後にある項目 (LIFO 構造 : 末尾入力、先頭出力)
376 * VV : 変数の値 (変数にはポインタがあり、この変数の値へアクセスします。)
377
378 (スタックと変数)
379
380 ======================= ============================================================================
381 演算                    説明
382 ======================= ============================================================================
383 * ICO_PUSHC             IR からスタックへ文字列を追加します。
384 * ICO_PUSHN             IR からスタックへ数値を追加します。
385 * ICO_PUSHV             VP を stack[nSize] により変数の値で置換します。
386 * ICO_LOADADDRESS       IR から変数名を読み取り VP をスタックへ退避します。
387 * ICO_ASSIGNMENT        Stack[nSize-1] VV = Stack[nSize] VV , Stack[nSize] の復帰
388 * ICO_INC               Stack[nSize] の数値を 1 ずつ増分します。
389 * ICO_LOADAPUSHV        ICO_LOADADDRESS そして ICO_PUSHV と同じです。
390 * ICO_NEWLINE           新しい行番号を格納します (デバッグ情報)。
391 * ICO_FREESTACK         スタックから項目を全て削除します。 nSize = 0 になります。
392 * ICO_FILENAME          ソースコードのファイル名を格納します (デバッグ情報)。
393 * ICO_FREELOADASCOPE    現在の式にあるスコープリストを解放します。
394 ======================= ============================================================================
395
396 (ジャンプ)
397
398 ======================= =========================================================================================
399 演算                    説明
400 ======================= =========================================================================================
401 * ICO_JUMP              IR から PC へ新しい値を設定します。
402 * ICO_JUMPZERO          Stack[nSize] が number = 0 の場合は IR から PC へ新しい値を設定します。
403 * ICO_JUMPFOR           For ループの終了
404 * ICO_JUMPONE           Stack[nSize] が number = 1 の場合は IR から PC へ新しい値を設定します。
405 * ICO_JUMPZERO2         ICO_JUMPZERO と似ていますがスタックへ 1 加算します (複数の ‘AND’条件で必要となります)。
406 * ICO_JUMPONE2          ICO_JUMPONE  と似ていますがスタックへ 1 加算します (複数の ‘OR’ 条件で必要となります)。
407 ======================= =========================================================================================
408
409 (比較)
410
411 ======================= ==========================================================================================================
412 演算                    説明
413 ======================= ==========================================================================================================
414 * ICO_LESSEQUAL         If stack[nSize-1] <= stack[nSize] , POP stack[nSize], set Stack[nSize-1] = 1 else set Stack[nSize-1] = 0
415 * ICO_EQUAL             If stack[nSize-1] = stack[nSize] , POP stack[nSize], set Stack[nSize-1] = 1 else set Stack[nSize-1] = 0
416 * ICO_LESS              If stack[nSize-1] < stack[nSize] , POP stack[nSize], set Stack[nSize-1] = 1 else set Stack[nSize-1] = 0
417 * ICO_GREATER           If stack[nSize-1] > stack[nSize] , POP stack[nSize], set Stack[nSize-1] = 1 else set Stack[nSize-1] = 0
418 * ICO_GREATEREQUAL      If stack[nSize-1] >= stack[nSize] , POP stack[nSize], set Stack[nSize-1] = 1 else set Stack[nSize-1] = 0
419 * ICO_NOTEQUAL          If stack[nSize-1] != stack[nSize] , POP stack[nSize], set Stack[nSize-1] = 1 else set Stack[nSize-1] = 0
420 ======================= ==========================================================================================================
421
422 (算術)
423
424 ======================= ============================================================================
425 演算                    説明
426 ======================= ============================================================================
427 * ICO_SUM               Stack[nSize-1] = Stack[nSize-1] + Stack[nSize] , POP stack[nSize]
428 * ICO_SUB               Stack[nSize-1] = Stack[nSize-1] - Stack[nSize] , POP stack[nSize]
429 * ICO_MUL               Stack[nSize-1] = Stack[nSize-1] * Stack[nSize] , POP stack[nSize]
430 * ICO_DIV               Stack[nSize-1] = Stack[nSize-1] / Stack[nSize] , POP stack[nSize]
431 * ICO_MOD               Stack[nSize-1] = Stack[nSize-1] % Stack[nSize] , POP stack[nSize]
432 * ICO_NEG               Stack[nSize] = - Stack[nSize-1]
433 * ICO_PLUSPLUS          Stack[nSize] = Stack[nSize] + 1
434 * ICO_MINUSMINUS        Stack[nSize] = Stack[nSize] - 1
435 ======================= ============================================================================
436
437 (論理)
438
439 ======================= ============================================================================
440 演算                    説明
441 ======================= ============================================================================
442 * ICO_AND               Stack[nSize-1] = Stack[nSize-1] && Stack[nSize] , POP stack[nSize]
443 * ICO_OR                Stack[nSize-1] = Stack[nSize-1] || Stack[nSize] , POP stack[nSize]
444 * ICO_NOT               Stack[nSize]   = ! Stack[nSize]  
445 ======================= ============================================================================
446
447 (リスト)
448
449 ======================= ============================================================================
450 演算                    説明
451 ======================= ============================================================================
452 * ICO_LISTSTART         一時作業用メモリへ新しいリストを開始します。
453 * ICO_LISTITEM          リスト項目を追加します。
454 * ICO_LISTEND           リストを終了します。
455 * ICO_LOADINDEXADDRESS  Stack[nSize-1] = Stack[nSize-1] VV [ Stack[nSize] ] , POP stack[nSize]
456 ======================= ============================================================================
457
458 (関数)
459
460 ======================= ============================================================================
461 演算                    説明
462 ======================= ============================================================================
463 * ICO_LOADFUNC          関数を検索します。
464 * ICO_CALL              関数を呼び出します。
465 * ICO_RETURN            関数から返します。
466 * ICO_RETNULL           関数から NULL を返します。
467 * ICO_RETFROMEVAL       eval() の後に返します。
468 * ICO_RETITEMREF        リスト項目の参照を返します - 値ではありません。
469 * ICO_NEWFUNC           新しい関数を開始します。
470 * ICO_BLOCKFLAG         後でジャンプ先を決定するためにフラグを立てます (ICO_RETURN の後で)。
471 * ICO_FUNCEXE           関数の実行を開始します。
472 * ICO_ENDFUNCEXE        関数の実行を終了します。
473 * ICO_ANONYMOUS         無名関数
474 ======================= ============================================================================
475
476 (ユーザインタフェース)
477
478 ======================= ============================================================================
479 演算                    説明
480 ======================= ============================================================================
481 * ICO_PRINT             値を標準出力へ表示します。
482 * ICO_GIVE              キーボードからの標準入力
483 ======================= ============================================================================
484
485 (プログラムの終了・ループ)
486
487 ======================= ============================================================================
488 演算                    説明
489 ======================= ============================================================================
490 * ICO_BYE               仮想計算機の実行を終了します。
491 * ICO_EXITMARK          ループを終了する場所です。
492 * ICO_POPEXITMARK       exit マークを削除します。
493 * ICO_EXIT              一階層以上のループを打ち切ります。
494 * ICO_LOOP              次のループを継続します。
495 ======================= ============================================================================
496
497 (実行性能の改善)
498
499 ========================   ==============================================================================
500 演算                       説明
501 ========================   ==============================================================================
502 * ICO_PUSHP                スタックへポインタを退避します。
503 * ICO_INCP                 ポインタを使用して変数の値を増分します。
504 * ICO_PUSHPV               変数ポインタを使用して変数の値を退避します。
505 * ICO_INCJUMP              増分後にジャンプします。
506 * ICO_INCPJUMP             ポインタを使用して増分した後にジャンプします。
507 * ICO_JUMPVARLENUM         変数の値が <= 数値の値ならばジャンプします。
508 * ICO_JUMPVARPLENUM        変数の値が (ポインタを使用) <= 数値の値ならばジャンプします。
509 * ICO_LOADFUNCP            関数ポインタを退避します。
510 * ICO_PUSHPLOCAL           ローカル変数のポインタを退避します。
511 * ICO_INCLPJUMP            ローカル変数のポインタで値を増分した後にジャンプします。
512 * ICO_JUMPVARLPLENUM       変数の値が (ポインタを使用) <= 数値の値ならばジャンプします。
513 * ICO_INCPJUMPSTEP1        変数のポインタで値を増分した後にジャンプします (For ループ step = 1)。
514 * ICO_JUMPVARPLENUMSTEP1   変数のポインタで値を増分した後にジャンプします (For ループ step = 1)。
515 ========================   ==============================================================================
516
517 (Try~Catch~Done)
518
519 ======================= ============================================================================
520 演算                    説明
521 ======================= ============================================================================
522 * ICO_TRY               try の範囲を開始します。
523 * ICO_DONE              try の範囲を終了します。
524 ======================= ============================================================================
525
526 (複製と範囲)
527
528 ======================= ============================================================================
529 演算                    説明
530 ======================= ============================================================================
531 * ICO_DUPLICATE         スタックの値を複製します。
532 * ICO_RANGE                     値からリストの値を作成します。
533 ======================= ============================================================================
534
535 オブジェクト指向プログラミング(OOP)
536
537 ======================= =============================================================================================================
538 演算                    説明
539 ======================= =============================================================================================================
540 * ICO_NEWOBJ            新しいオブジェクトの作成してから、IR からクラス名を取得を行い、スタックへオブジェクトのポインタを退避します。
541 * ICO_SETSCOPE          オブジェクトのスコープへ有効なスコープを設定してから新しいオブジェクトの作成後に呼び出します。
542 * ICO_LOADSUBADDRESS    ポインタをスタックに退避してからオブジェクトの属性を取得します。
543 * ICO_LOADMETHOD        オブジェクトのメソッドを検索します。
544 * ICO_AFTERCALLMETHOD   メソッドの呼び出し後に使用されます - 通常時
545 * ICO_AFTERCALLMETHOD2  メソッドの呼び出し後に使用されます - 次の場合
546 * ICO_NEWCLASS          新しいクラスの範囲を開始します。
547 * ICO_BRACESTART        括弧を開きます。
548 * ICO_BRACEEND          括弧を閉じます。
549 * ICO_IMPORT            パッケージのインポート
550 * ICO_PRIVATE           プライベート属性の範囲を開始します。
551 * ICO_SETPROPERTY       属性の値を設定します - Setter を確認します。
552 * ICO_CALLCLASSINIT     init() クラスメソッドの呼び出し。
553 ======================= =============================================================================================================
554
555 (その他)
556
557 ======================= ============================================================================
558 演算                    説明
559 ======================= ============================================================================
560 * ICO_SETREFERENCE      参照によりコピーします。
561 * ICO_KILLREFERENCE     参照を削除します。
562 * ICO_ASSIGNMENTPOINTER 左辺側の変数を決定します。
563 * ICO_BEFOREEQUAL       += , -= , ... などの演算子を決定します。
564 ======================= ============================================================================
565
566 (ビット操作演算子)
567
568 ======================= ============================================================================
569 演算                    説明
570 ======================= ============================================================================
571 * ICO_BITAND            Stack[nSize-1] = Stack[nSize-1] & Stack[nSize] , POP stack[nSize]
572 * ICO_BITOR             Stack[nSize-1] = Stack[nSize-1] | Stack[nSize] , POP stack[nSize]
573 * ICO_BITXOR            Stack[nSize-1] = Stack[nSize-1] ^ Stack[nSize] , POP stack[nSize]
574 * ICO_BITNOT            Stack[nSize] = ! Stack[nSize] 
575 * ICO_BITSHL            Stack[nSize-1] = Stack[nSize-1] << Stack[nSize] , POP stack[nSize]
576 * ICO_BITSHR            Stack[nSize-1] = Stack[nSize-1] >> Stack[nSize] , POP stack[nSize]
577 ======================= ============================================================================
578
579 (For Step)
580
581 ======================= ============================================================================
582 演算                    説明
583 ======================= ============================================================================
584 * ICO_STEPNUMBER        For ループにおけるステップ数を決定します。
585 * ICO_POPSTEP           ステップスタックからステップ数を復帰 (POP) します。
586 * ICO_LOADAFIRST        変数名に関連する最初のアドレスを読み込みます。
587 ======================= ============================================================================
588
589 (カスタムグローバルスコープ)
590
591 ======================= ==============================================================================
592 演算                    説明
593 ======================= ==============================================================================
594 * ICO_NEWGLOBALSCOPE    新しいカスタムグローバルスコープの開始 - ‘load package’ 命令で使用されます。
595 * ICO_ENDGLOBALSCOPE    カスタムグローバルスコープの終了 - ‘load package’ 命令で使用されます。
596 * ICO_SETGLOBALSCOPE    現在のグローバルスコープを設定します。
597 ======================= ==============================================================================
598