2 single: シンタックスの柔軟性; はじめに
8 Ring コンパイラに標準装備されているシンタックスの柔軟性に関する選択肢を学びます。
11 pair: シンタックスの柔軟性; キーワード変更
16 ChangeRingKeyword 命令はキーワードを変更します。
18 .. note:: 共同プロジェクトのチーム間で記法の混用があるときは、キーワードの復元を心がけてください。
21 .. tip:: ChangeRingKeyword 命令は字句解析の段階でコンパイラにより実行されます (構文解析の前に)。
28 ChangeRingKeyword <旧キーワード> <新キーワード>
34 ChangeRingKeyword see print
38 ChangeRingKeyword print see
46 ChangeRingKeyword func function
47 ChangeRingKeyword see print
48 ChangeRingKeyword ok endif
49 ChangeRingKeyword next endfor
50 ChangeRingKeyword end endwhile
57 print "number three" + nl
67 print "message from test" + nl
69 ChangeRingKeyword function func
70 ChangeRingKeyword print see
71 ChangeRingKeyword endif ok
72 ChangeRingKeyword endfor next
73 ChangeRingKeyword endwhile end
77 pair: シンタックスの柔軟性; 演算子の変更
82 ChangeRingOperator 命令は演算子を変更します。
84 .. note:: 共同プロジェクトのチーム間で記法の混用があるときは、演算子の復元を心がけてください。
86 .. tip:: ChangeRingOperartor 命令は字句解析の段階でコンパイラにより実行されます (構文解析の前に)。
93 ChangeRingOperator <旧キーワード> <新キーワード>
97 このプログラムは、 + 演算子を _+ へ変更することで隠します。
101 changeringoperator + _+
102 changeringkeyword SEE PRINT
107 print nl print "error" print nl
110 changeringoperator _+ +
112 このプログラムは、 + 演算子を “plus” へ変更します。
116 changeringoperator + plus
117 changeringkeyword SEE PRINT
121 changeringoperator plus +
122 changeringkeyword PRINT SEE
125 pair: シンタックスの柔軟性; シンタックスファイルの読み込み
129 ==============================
131 複数のソースファイルから後で使用するために、ファイルへ ChangeRingKeyword と ChangeRingOperator 命令のグループを格納です。
132 これらのファイルを呼び出すため、 Load 命令は使用できません。理由として、
134 * ChangeRingKeyword および ChangeRingOperator 命令は字句解析の段階で、コンパイラにより実行されます (構文解析の前に)。
135 * Load 命令は構文解析の段階で実行されます (字句解析後の段階で)。
137 解決方法: LoadSyntax 命令を字句解析の段階で実行します。
143 LoadSyntax "syntaxfile.ring"
147 ファイル : StyleBasicOn.ring
151 ChangeRingKeyword see print
152 ChangeRingKeyword ok endif
153 ChangeRingKeyword next endfor
154 ChangeRingKeyword end endwhile
156 ファイル : StyleBasicOff.ring
160 ChangeRingKeyword print see
161 ChangeRingKeyword endif ok
162 ChangeRingKeyword endfor next
163 ChangeRingKeyword endwhile end
165 ファイル : UseStyleBasic.ring
169 LoadSyntax "stylebasicon.ring"
173 print "x = " + x + nl
176 print "number three" + nl
182 LoadSyntax "stylebasicoff.ring"
186 .. note:: LoadSyntax 命令により呼び出されるファイルの内容は ChangeRingKeyword と ChangeRingOperator 命令のみ記述してください。
188 .. tip:: LoadSyntax により呼び出されたファイルは関数、パッケージおよびクラスには対応していません。命令型の命令のみ対応しています。
190 .. note:: この機能により、同じプロジェクトで使用できる多種多様な記法を作成できます。また、 Ring の訳文では日本語、アラビア語、フランス語などの自然言語に対応できます。
192 .. tip:: LoadSyntax 命令の効果は、現在のソースコードに関連するものだけに限られます (ファイルスコープ)。
196 pair: シンタックスの柔軟性; 関数の引数を“()” で囲うには
199 =============================
201 関数の引数は“()”で囲います (オプション扱い)。
227 myfunc = func x,y { see x + y + nl }
231 myfunc2 = func (x,y) { see x+y+nl }
243 pair: シンタックスの柔軟性; ステートメントの末尾および間でセミコロンを使うには
245 ステートメントの末尾および間でセミコロンを使うには
246 ==================================================
248 Ring ではステートメントの末尾、および間でセミコロンを使えます (オプション扱い)。
254 # セミコロンの使用はオプション扱いです。
256 see "Hello" + nl ; see "How are you?" + nl ; see "Welcome to Ring" + nl ;
257 one() ; two() ; three() ;
258 func one ; see "one" + nl ;
259 func two ; see "two" + nl ;
260 func three ; see "three" + nl ;
276 pair: シンタックスの柔軟性; 変数名に $ と @ を使うには
279 ==========================
281 変数名には Unicode 文字に加えて $ と @ を使用することもできます。
283 この機能は便利です。例えば、グローバル変数は $ で、そしてオブジェクトの属性は @ で書き始められます。
285 これは Ruby などでは規則ですが、 Ring ではコンパイラへ影響を及ぼさないオプション扱いのものです。
297 @instance_variable = 10
303 see "Global : " + $global_variable + nl +
304 "Instance : " + @instance_variable + nl +
305 "Local : " + local_variable + nl
317 pair: シンタックスの柔軟性; If ステートメントで‘but’の代わりに‘elseif’キーワードを使うには
319 If ステートメントで‘but’の代わりに‘elseif’キーワードを使うには
320 ==================================================================
322 If ステートメントで‘but’を使いたくないときは、
323 ‘elseif’キーワードへ変更できます。
332 elseif x=3 see "three"
333 elseif x=4 see "four"
339 pair: シンタックスの柔軟性; Switch ステートメントで‘other’の代わりに‘else’キーワードを使うには
341 Switch ステートメントで‘other’の代わりに‘else’キーワードを使うには
342 ======================================================================
344 Switch ステートメントで‘other’を使いたくないときは、
347 また If ステートメントで‘else’を‘other’キーワードへ置き換えることもできます。
349 つまり‘other’キーワードは‘else’キーワードと同じ扱いです。
370 pair: シンタックスの柔軟性; 制御構造で‘end’キーワードを使うには
373 =====================================
375 ‘end’ キーワードは制御構造を閉じます。
387 see "if statement.." + nl
396 see "for loop.." + nl
409 see "try catch..." + nl
413 see "catching error" + nl
430 pair: シンタックスの柔軟性; 制御構造の開始と終了で括弧 { } を使うには
432 制御構造の開始と終了で括弧 { } を使うには
433 =========================================
435 制御構造の開始と終了で括弧 { } を使えます。
447 see "if statement.." + nl
456 see "for loop.." + nl
469 see "try catch..." + nl
473 see "catching error" + nl
491 pair: シンタックスの柔軟性; ‘see’と‘give’ の代わりに‘put’と‘get’を使うには
493 ‘see’と‘give’ の代わりに‘put’と‘get’を使うには
494 ======================================================
496 ‘see’キーワードを‘put’キーワードへ置き換えられます。
498 また‘give’キーワードを‘get’キーワードへ置き換えることもできます。
504 put "Hello World" + nl
505 put "Enter Your Name ? " Get Name
509 pair: シンタックスの柔軟性; Switch ステートメントで‘on’の代わりに‘case’を使うには
511 Switch ステートメントで‘on’の代わりに‘case’を使うには
512 =========================================================
514 Switch ステートメントで‘on’キーワードを‘case’キーワードへ置き換えられます。
522 case 1 put "one" + nl
523 case 2 put "two" + nl
524 case 3 put "thre" + nl
535 case 1 put "one" + nl
536 case 2 put "two" + nl
537 case 3 put "thre" + nl
544 pair: シンタックスの柔軟性; 関数とメソッドの定義で‘func’の代わりに‘def’を使うには
546 関数とメソッドの定義で‘func’の代わりに‘def’を使うには
547 =========================================================
549 関数、およびメソッドの定義で ‘func’ の代わりに ‘def’ キーワードを使えます。
557 def one put "one" + nl
558 def two put "two" + nl
561 pair: シンタックスの柔軟性; Package/Class/Function で括弧 { } を使うには
563 Package/Class/Function で括弧 { } を使うには
564 ============================================
584 print("Hello, World!\n")
590 pair: シンタックスの柔軟性; Package/Class/Function キーワードの後で‘end’を使うには
592 Package/Class/Function キーワードの後で‘end’を使うには
593 ========================================================
614 pair: シンタックスの柔軟性; Package/Class/Function キーワードの後で‘endpackage’/’endclass’/’endfunc’を使うには
616 Package/Class/Function キーワードの後で‘endpackage’/’endclass’/’endfunc’を使うには
617 ========================================================================================
625 new myclass { myfunc() }
637 pair: シンタックスの柔軟性; キーワードの後にくる行を無視
640 ============================
642 Ring 1.8 からコンパイラは、キーワードの後に続く行をトークンとみなして無視するようになりました。
655 #======================#
657 #======================#
662 Hello from the Test function
674 Hello from the Test function