20 pair: 言語リファレンス; 言語のキーワード
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()
146 pair: 言語リファレンス; コンパイラのエラー
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) : クラスは既に存在しますが、クラスが再定義されました!
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 命令を使用しています。
187 pair: 言語リファレンス; 実行時のエラー
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) : 唯一無二のファイル名を作成するときにエラーが発生しました。
234 pair: 言語リファレンス; 環境のエラー
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() 関数で内部エラーが発生しました!
250 pair: 言語リファレンス; 言語の文法
257 ステートメント → ‘package’ <識別子> { ‘.’ <識別子> } [‘{‘ {ステートメント} ‘}’] [‘end’|’endpackage’]
259 ステートメント → ‘class’ <識別子> [ ‘from’|’:’|’<’ <識別子> ] [‘{‘ {ステートメント} ‘}’][‘end’|’endclass’]
261 ステートメント → ‘func’|’def’ <識別子> [仮引数リスト] [‘{‘ {ステートメント} ‘}’][‘end’|’endfunc’]
263 ステートメント → ‘import’ <識別子> { ‘.’ <識別子> }
267 ステートメント → ‘load’; [‘package'|'again' ] <リテラル>
269 ステートメント → ‘loadsyntax’ <リテラル>
271 ステートメント → ‘changeringkeyword’ <旧キーワード> <新キーワード>
273 ステートメント → ‘changeringoperator’ <旧演算子> <新演算子>
275 ステートメント → ‘see’|’put’ <式>
277 ステートメント → ‘give’|’get’ <識別子>
279 ステートメント → ‘if’ <式> [‘{‘] {ステートメント} [ {‘but’|’elseif’ <式> {ステートメント} } ] [‘else’ {ステートメント} ] ‘ok’|’end’|’}’
281 ステートメント → ‘Switch’ <式> [‘{‘] { ‘on’|’case’ <式> {ステートメント} } [‘other’ {ステートメント} ] ‘off’|’end’|’}’
283 ステートメント → ‘for’ <識別子> ‘=’ <式> ‘to’ <式> [ ‘step’ <式> ] [‘{‘] {ステートメント} ‘next’|’end’|’}’
285 ステートメント → ‘for’ <識別子> ‘in’ <式> [ ‘step’ <式> ] [‘{‘] {ステートメント} ‘next’|’end’|’}’
287 ステートメント → ‘while’ <式> [‘{‘] {ステートメント} ‘end’|’}’
289 ステートメント → ‘do’ {ステートメント} ‘again’ <式>
291 ステートメント → ‘try’ {ステートメント} [‘{‘] ‘catch’ {ステートメント} ‘done’|’end’|’}’
293 ステートメント → ‘return’ <式>
307 仮引数リスト → [‘(‘] <識別子> [{ ‘,’ <識別子> }] [‘)’]
309 式 → <LogicNot> [{ ‘and’|’or’ <LogicNot> }]
311 LogicNot → [‘not’] <EqualOrNot>
313 EqualOrNot → [ ‘=’|’!=’ ] <比較>
315 比較 → <BitOrXor> [ { ‘<’ | ‘>’ | ‘<=’ | ‘>=’ <BitOrXor> } ]
317 BitOrXor → <BitAnd> [ { ‘|’ | ‘^’ <BitAnd> } ]
319 BitAnd → <BitShift> [ { ‘&’ <BitShift> } ]
321 BitShift → <演算> [ { ‘<<’ | ‘>>’ <演算> } ]
323 演算 → <項> [ { ‘+’ | ‘-‘ <項> } ]
325 項 → <範囲> [ { ‘*’ | ‘/’ | ‘%’ <範囲> } ]
327 範囲 → <要素> [ ‘:’ <要素> ]
329 要素 → <識別子> [ {混成} ] [ ‘=’ <式> ]
347 要素 → ‘call’ <識別子> { ‘.’ <識別子> } ‘(‘ <仮引数> ‘)’
349 リスト → ‘[‘ [ <式> { ‘,’ <式> } ] ‘]’
355 混成 → ‘(‘ [ <式> [ { ‘,’ <式> }] ] ‘)’
357 混成 → ‘{‘ {ステートメント} ‘}’
359 無名関数 → ‘func’|’def’| [<仮引数リスト>] ‘{‘ {ステートメント} ‘}’
363 pair: 言語リファレンス; 仮想計算機 (VM) の命令
366 ======================
375 * Stack[nSize] : スタックの最後にある項目 (LIFO 構造 : 末尾入力、先頭出力)
376 * VV : 変数の値 (変数にはポインタがあり、この変数の値へアクセスします。)
380 ======================= ============================================================================
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 ======================= ============================================================================
398 ======================= =========================================================================================
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 ======================= =========================================================================================
411 ======================= ==========================================================================================================
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 ======================= ==========================================================================================================
424 ======================= ============================================================================
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 ======================= ============================================================================
439 ======================= ============================================================================
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 ======================= ============================================================================
449 ======================= ============================================================================
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 ======================= ============================================================================
460 ======================= ============================================================================
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 関数の実行を終了します。
474 ======================= ============================================================================
478 ======================= ============================================================================
480 ======================= ============================================================================
481 * ICO_PRINT 値を標準出力へ表示します。
482 * ICO_GIVE キーボードからの標準入力
483 ======================= ============================================================================
487 ======================= ============================================================================
489 ======================= ============================================================================
490 * ICO_BYE 仮想計算機の実行を終了します。
491 * ICO_EXITMARK ループを終了する場所です。
492 * ICO_POPEXITMARK exit マークを削除します。
493 * ICO_EXIT 一階層以上のループを打ち切ります。
494 * ICO_LOOP 次のループを継続します。
495 ======================= ============================================================================
499 ======================== ==============================================================================
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 ======================== ==============================================================================
519 ======================= ============================================================================
521 ======================= ============================================================================
522 * ICO_TRY try の範囲を開始します。
523 * ICO_DONE try の範囲を終了します。
524 ======================= ============================================================================
528 ======================= ============================================================================
530 ======================= ============================================================================
531 * ICO_DUPLICATE スタックの値を複製します。
532 * ICO_RANGE 値からリストの値を作成します。
533 ======================= ============================================================================
537 ======================= =============================================================================================================
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 ======================= =============================================================================================================
557 ======================= ============================================================================
559 ======================= ============================================================================
560 * ICO_SETREFERENCE 参照によりコピーします。
561 * ICO_KILLREFERENCE 参照を削除します。
562 * ICO_ASSIGNMENTPOINTER 左辺側の変数を決定します。
563 * ICO_BEFOREEQUAL += , -= , ... などの演算子を決定します。
564 ======================= ============================================================================
568 ======================= ============================================================================
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 ======================= ============================================================================
581 ======================= ============================================================================
583 ======================= ============================================================================
584 * ICO_STEPNUMBER For ループにおけるステップ数を決定します。
585 * ICO_POPSTEP ステップスタックからステップ数を復帰 (POP) します。
586 * ICO_LOADAFIRST 変数名に関連する最初のアドレスを読み込みます。
587 ======================= ============================================================================
591 ======================= ==============================================================================
593 ======================= ==============================================================================
594 * ICO_NEWGLOBALSCOPE 新しいカスタムグローバルスコープの開始 - ‘load package’ 命令で使用されます。
595 * ICO_ENDGLOBALSCOPE カスタムグローバルスコープの終了 - ‘load package’ 命令で使用されます。
596 * ICO_SETGLOBALSCOPE 現在のグローバルスコープを設定します。
597 ======================= ==============================================================================