.. index:: 
	single: コマンドラインオプション; はじめに

========================
コマンドラインオプション
========================

Ring はソースコードファイル (\*.ring) または、オブジェクトファイル (\*.ringo) とオプションを指定するとプログラムを実行します。


書式:

.. code-block:: bash

	ring <ファイル名.ring>|<ファイル名.ringo> [オプション]

オプション:

.. csv-table::
	:header: "オプション", "説明"
	:widths:       18,     82

	"-tokens", 		"ソースコードファイルのトークンリストを表示します。"
	"-rules", 		"トークンに適用された文法規則を表示します。"
	"-ic", 			"中間バイトコードを表示します (実行前)。"
	"-icfinal", 	"最終バイトコードを表示します (実行後)。"
	"-cgi", 		"エラーメッセージの前に http レスポンスヘッダを表示します。"
	"-norun", 		"コンパイル後にプログラムを実行しません。"
	"-ins", 		"実行前に命令演算コードを表示します。"
	"-performance",	"プログラムの実行前後に処理時間測定結果を表示します。"
	"-go", 			"オブジェクトファイルを生成します。"
	"-geo",			"組込型オブジェクトファイル (C ソースコード) を生成します。"
	"-w",		 	"警告を表示します。"

.. note:: オブジェクトファイル形式では、一部使用できないオプションがあります。


.. index:: 
	pair: コマンドラインオプション; トークンの表示

トークンの表示
==============

用例:

.. code-block:: ring

	Func Main
		See "Hello World" + nl
		for x = 1 to 10
			see x + nl
		next
		test()

	func test
		see "welcome" + nl
		o1 = new point { x=10 y=20 z=30 }
		see o1

	class point x y z

コマンド:

.. code-block:: ring

	ring test.ring -tokens -norun

実行結果:

.. code-block:: ring

	===================================================
	Tokens - Generated by the Scanner
	===================================================

	   Keyword : FUNC
	Identifier : main
	   EndLine
	   Keyword : SEE
	   Literal : Hello World
	  Operator : +
	Identifier : nl
	   EndLine
	   Keyword : FOR
	Identifier : x
	  Operator : =
	    Number : 1
	   Keyword : TO
	    Number : 10
	   EndLine
	   Keyword : SEE
	Identifier : x
	  Operator : +
	Identifier : nl
	   EndLine
	   Keyword : NEXT
	   EndLine
	Identifier : test
	  Operator : (
	  Operator : )
	   EndLine
	   Keyword : FUNC
	Identifier : test
	   EndLine
	   Keyword : SEE
	   Literal : welcome
	  Operator : +
	Identifier : nl
	   EndLine
	Identifier : o1
	  Operator : =
	   Keyword : NEW
	Identifier : point
	  Operator : {
	Identifier : x
	  Operator : =
	    Number : 10
	Identifier : y
	  Operator : =
	    Number : 20
	Identifier : z
	  Operator : =
	    Number : 30
	  Operator : }
	   EndLine
	   Keyword : SEE
	Identifier : o1
	   EndLine
	   Keyword : CLASS
	Identifier : point
	Identifier : x
	Identifier : y
	Identifier : z
	   EndLine

	===================================================

.. index:: 
	pair: コマンドラインオプション; 文法規則の表示

文法規則の表示
==============

コマンド:

.. code-block:: ring

	ring test.ring -rules -norun

実行結果:

.. code-block:: ring

	===================================================
	Grammar Rules Used by The Parser
	===================================================

	Rule : Program --> {Statement}

	Line 1
	Rule : Statement  --> 'Func' Identifier [ParaList]

	Line 2
	Rule : Factor --> Literal
	Rule : Range --> Factor
	Rule : Term --> Range
	Rule : Arithmetic --> Term
	Rule : Factor --> Identifier [ {Mixer} | Assignment | PlusPlus | MinusMinus]
	Rule : Range --> Factor
	Rule : Term --> Range
	Rule : Arithmetic --> Term
	Rule : Arithmetic --> Arithmetic + Arithmetic
	Rule : BitShift --> Arithmetic
	Rule : BitAnd --> BitShift
	Rule : BitOrXOR -->  BitAnd
	Rule : Compare --> BitOrXOR
	Rule : EqualOrNot --> Compare
	Rule : LogicNot -> EqualOrNot
	Rule : Expr --> LogicNot
	Rule : Statement  --> 'See' Expr

	Line 3
	Rule : Factor --> Number
	Rule : Range --> Factor
	Rule : Term --> Range
	Rule : Arithmetic --> Term
	Rule : BitShift --> Arithmetic
	Rule : BitAnd --> BitShift
	Rule : BitOrXOR -->  BitAnd
	Rule : Compare --> BitOrXOR
	Rule : EqualOrNot --> Compare
	Rule : LogicNot -> EqualOrNot
	Rule : Expr --> LogicNot
	Rule : Factor --> Number
	Rule : Range --> Factor
	Rule : Term --> Range
	Rule : Arithmetic --> Term
	Rule : BitShift --> Arithmetic
	Rule : BitAnd --> BitShift
	Rule : BitOrXOR -->  BitAnd
	Rule : Compare --> BitOrXOR
	Rule : EqualOrNot --> Compare
	Rule : LogicNot -> EqualOrNot
	Rule : Expr --> LogicNot
	Rule : Statement  --> 'For' Identifier '=' Expr to Expr ['step' Expr]

	Line 4
	Rule : Factor --> Identifier [ {Mixer} | Assignment | PlusPlus | MinusMinus]
	Rule : Range --> Factor
	Rule : Term --> Range
	Rule : Arithmetic --> Term
	Rule : Factor --> Identifier [ {Mixer} | Assignment | PlusPlus | MinusMinus]
	Rule : Range --> Factor
	Rule : Term --> Range
	Rule : Arithmetic --> Term
	Rule : Arithmetic --> Arithmetic + Arithmetic
	Rule : BitShift --> Arithmetic
	Rule : BitAnd --> BitShift
	Rule : BitOrXOR -->  BitAnd
	Rule : Compare --> BitOrXOR
	Rule : EqualOrNot --> Compare
	Rule : LogicNot -> EqualOrNot
	Rule : Expr --> LogicNot
	Rule : Statement  --> 'See' Expr

	Line 5
	Rule : Next --> 'Next'

	Line 6
	Rule : Mixer -> '(' [Expr { ',' Expr} ] ')'

	Line 8
	Rule : Factor --> Identifier [ {Mixer} | Assignment | PlusPlus | MinusMinus]
	Rule : Range --> Factor
	Rule : Term --> Range
	Rule : Arithmetic --> Term
	Rule : BitShift --> Arithmetic
	Rule : BitAnd --> BitShift
	Rule : BitOrXOR -->  BitAnd
	Rule : Compare --> BitOrXOR
	Rule : EqualOrNot --> Compare
	Rule : LogicNot -> EqualOrNot
	Rule : Expr --> LogicNot
	Rule : Statement  --> Expr
	Rule : Statement  --> 'Func' Identifier [ParaList]

	Line 9
	Rule : Factor --> Literal
	Rule : Range --> Factor
	Rule : Term --> Range
	Rule : Arithmetic --> Term
	Rule : Factor --> Identifier [ {Mixer} | Assignment | PlusPlus | MinusMinus]
	Rule : Range --> Factor
	Rule : Term --> Range
	Rule : Arithmetic --> Term
	Rule : Arithmetic --> Arithmetic + Arithmetic
	Rule : BitShift --> Arithmetic
	Rule : BitAnd --> BitShift
	Rule : BitOrXOR -->  BitAnd
	Rule : Compare --> BitOrXOR
	Rule : EqualOrNot --> Compare
	Rule : LogicNot -> EqualOrNot
	Rule : Expr --> LogicNot
	Rule : Statement  --> 'See' Expr

	Line 10
	Rule : Factor --> New Identifier {'.' Identifier }
	Rule : Mixer --> '{' {Statement} BraceEnd
	Rule : Factor --> Number
	Rule : Range --> Factor
	Rule : Term --> Range
	Rule : Arithmetic --> Term
	Rule : BitShift --> Arithmetic
	Rule : BitAnd --> BitShift
	Rule : BitOrXOR -->  BitAnd
	Rule : Compare --> BitOrXOR
	Rule : EqualOrNot --> Compare
	Rule : LogicNot -> EqualOrNot
	Rule : Expr --> LogicNot
	Rule : Assignment -> '=' Expr
	Rule : Factor --> Identifier [ {Mixer} | Assignment | PlusPlus | MinusMinus]
	Rule : Range --> Factor
	Rule : Term --> Range
	Rule : Arithmetic --> Term
	Rule : BitShift --> Arithmetic
	Rule : BitAnd --> BitShift
	Rule : BitOrXOR -->  BitAnd
	Rule : Compare --> BitOrXOR
	Rule : EqualOrNot --> Compare
	Rule : LogicNot -> EqualOrNot
	Rule : Expr --> LogicNot
	Rule : Statement  --> Expr
	Rule : Factor --> Number
	Rule : Range --> Factor
	Rule : Term --> Range
	Rule : Arithmetic --> Term
	Rule : BitShift --> Arithmetic
	Rule : BitAnd --> BitShift
	Rule : BitOrXOR -->  BitAnd
	Rule : Compare --> BitOrXOR
	Rule : EqualOrNot --> Compare
	Rule : LogicNot -> EqualOrNot
	Rule : Expr --> LogicNot
	Rule : Assignment -> '=' Expr
	Rule : Factor --> Identifier [ {Mixer} | Assignment | PlusPlus | MinusMinus]
	Rule : Range --> Factor
	Rule : Term --> Range
	Rule : Arithmetic --> Term
	Rule : BitShift --> Arithmetic
	Rule : BitAnd --> BitShift
	Rule : BitOrXOR -->  BitAnd
	Rule : Compare --> BitOrXOR
	Rule : EqualOrNot --> Compare
	Rule : LogicNot -> EqualOrNot
	Rule : Expr --> LogicNot
	Rule : Statement  --> Expr
	Rule : Factor --> Number
	Rule : Range --> Factor
	Rule : Term --> Range
	Rule : Arithmetic --> Term
	Rule : BitShift --> Arithmetic
	Rule : BitAnd --> BitShift
	Rule : BitOrXOR -->  BitAnd
	Rule : Compare --> BitOrXOR
	Rule : EqualOrNot --> Compare
	Rule : LogicNot -> EqualOrNot
	Rule : Expr --> LogicNot
	Rule : Assignment -> '=' Expr
	Rule : Factor --> Identifier [ {Mixer} | Assignment | PlusPlus | MinusMinus]
	Rule : Range --> Factor
	Rule : Term --> Range
	Rule : Arithmetic --> Term
	Rule : BitShift --> Arithmetic
	Rule : BitAnd --> BitShift
	Rule : BitOrXOR -->  BitAnd
	Rule : Compare --> BitOrXOR
	Rule : EqualOrNot --> Compare
	Rule : LogicNot -> EqualOrNot
	Rule : Expr --> LogicNot
	Rule : Statement  --> Expr
	Rule : BraceEnd --> '}'
	Rule : Range --> Factor
	Rule : Term --> Range
	Rule : Arithmetic --> Term
	Rule : BitShift --> Arithmetic
	Rule : BitAnd --> BitShift
	Rule : BitOrXOR -->  BitAnd
	Rule : Compare --> BitOrXOR
	Rule : EqualOrNot --> Compare
	Rule : LogicNot -> EqualOrNot
	Rule : Expr --> LogicNot
	Rule : Assignment -> '=' Expr
	Rule : Factor --> Identifier [ {Mixer} | Assignment | PlusPlus | MinusMinus]
	Rule : Range --> Factor
	Rule : Term --> Range
	Rule : Arithmetic --> Term
	Rule : BitShift --> Arithmetic
	Rule : BitAnd --> BitShift
	Rule : BitOrXOR -->  BitAnd
	Rule : Compare --> BitOrXOR
	Rule : EqualOrNot --> Compare
	Rule : LogicNot -> EqualOrNot
	Rule : Expr --> LogicNot
	Rule : Statement  --> Expr

	Line 11
	Rule : Factor --> Identifier [ {Mixer} | Assignment | PlusPlus | MinusMinus]
	Rule : Range --> Factor
	Rule : Term --> Range
	Rule : Arithmetic --> Term
	Rule : BitShift --> Arithmetic
	Rule : BitAnd --> BitShift
	Rule : BitOrXOR -->  BitAnd
	Rule : Compare --> BitOrXOR
	Rule : EqualOrNot --> Compare
	Rule : LogicNot -> EqualOrNot
	Rule : Expr --> LogicNot
	Rule : Statement  --> 'See' Expr

	Line 13
	Rule : Statement  --> 'Class' Identifier
	Rule : Factor --> Identifier [ {Mixer} | Assignment | PlusPlus | MinusMinus]
	Rule : Range --> Factor
	Rule : Term --> Range
	Rule : Arithmetic --> Term
	Rule : BitShift --> Arithmetic
	Rule : BitAnd --> BitShift
	Rule : BitOrXOR -->  BitAnd
	Rule : Compare --> BitOrXOR
	Rule : EqualOrNot --> Compare
	Rule : LogicNot -> EqualOrNot
	Rule : Expr --> LogicNot
	Rule : Statement  --> Expr
	Rule : Factor --> Identifier [ {Mixer} | Assignment | PlusPlus | MinusMinus]
	Rule : Range --> Factor
	Rule : Term --> Range
	Rule : Arithmetic --> Term
	Rule : BitShift --> Arithmetic
	Rule : BitAnd --> BitShift
	Rule : BitOrXOR -->  BitAnd
	Rule : Compare --> BitOrXOR
	Rule : EqualOrNot --> Compare
	Rule : LogicNot -> EqualOrNot
	Rule : Expr --> LogicNot
	Rule : Statement  --> Expr
	Rule : Factor --> Identifier [ {Mixer} | Assignment | PlusPlus | MinusMinus]
	Rule : Range --> Factor
	Rule : Term --> Range
	Rule : Arithmetic --> Term
	Rule : BitShift --> Arithmetic
	Rule : BitAnd --> BitShift
	Rule : BitOrXOR -->  BitAnd
	Rule : Compare --> BitOrXOR
	Rule : EqualOrNot --> Compare
	Rule : LogicNot -> EqualOrNot
	Rule : Expr --> LogicNot
	Rule : Statement  --> Expr

	===================================================

.. index:: 
	pair: コマンドラインオプション; 中間コードの表示

中間コードの表示
================

コマンド:

.. code-block:: ring

	ring test.ring -ic -norun

実行結果:

.. code-block:: ring

	===================================================
	Byte Code - Before Execution by the VM
	===================================================

		 PC      OPCode        Data

		  1  ReturnNull
		  2        Func    main
		  3     NewLine       2
		  4     FuncExE
		  5       PushC   Hello World
		  6       LoadA      nl      0
		  7       PushV
		  8         SUM       0
		  9       Print
		 10     NewLine       3
		 11    ExitMark      29     28
		 12  LoadAFirst       x
		 13       PushN   1.000000
		 14  BeforeEqual       0
		 15  Assignment
		 16       PushN   1.000000
		 17  StepNumber
		 18  JumpVarLENum       x  10.000000    29
		 19     NewLine       4
		 20     FuncExE
		 21       LoadA       x      0
		 22       PushV
		 23       LoadA      nl      0
		 24       PushV
		 25         SUM       0
		 26       Print
		 27     NewLine       5
		 28     IncJump       x     18
		 29  POPExitMark
		 30     POPStep
		 31     NewLine       6
		 32    LoadFunc    test
		 33        Call       0
		 34  NoOperation
		 35     NewLine       8
		 36       PushV
		 37   FreeStack
		 38  ReturnNull
		 39        Func    test
		 40     NewLine       9
		 41     FuncExE
		 42       PushC   welcome
		 43       LoadA      nl      0
		 44       PushV
		 45         SUM       0
		 46       Print
		 47     NewLine      10
		 48       LoadA      o1      0
		 49  AssignmentPointer
		 50         New   point
		 51    SetScope
		 52       PushV
		 53  BraceStart
		 54       LoadA       x      0     58
		 55  AssignmentPointer
		 56       PushN   10.000000
		 57  BeforeEqual       0
		 58  Assignment       0      0
		 59   FreeStack
		 60       LoadA       y      0     64
		 61  AssignmentPointer
		 62       PushN   20.000000
		 63  BeforeEqual       0
		 64  Assignment       0      0
		 65   FreeStack
		 66       LoadA       z      0     70
		 67  AssignmentPointer
		 68       PushN   30.000000
		 69  BeforeEqual       0
		 70  Assignment       0      0
		 71   FreeStack
		 72    LoadFunc   ismethod
		 73       LoadA    self      0
		 74       PushV
		 75       PushC   braceend
		 76        Call
		 77  NoOperation
		 78       PushV
		 79       JumpZ      85
		 80    LoadFunc   braceend
		 81        Call
		 82  NoOperation
		 83       PushV
		 84   FreeStack
		 85    BraceEnd
		 86   FreeStack
		 87     NewLine      11
		 88     FuncExE
		 89       LoadA      o1      0
		 90       PushV
		 91       Print
		 92     NewLine      13
		 93  ReturnNull
		 94       Class   point  006E8BC0
		 95    NewLabel
		 96       LoadA       x      0
		 97       PushV
		 98   FreeStack
		 99       LoadA       y      0
		100       PushV
		101   FreeStack
		102       LoadA       z      0
		103       PushV
		104   FreeStack
		105  ReturnNull

	===================================================

.. index:: 
	pair: コマンドラインオプション; 最終中間コードの表示

最終中間コードの表示
====================

コマンド:

.. code-block:: ring

	ring test.ring -icfinal

実行結果:

.. code-block:: ring

	Hello World
	1
	2
	3
	4
	5
	6
	7
	8
	9
	10
	welcome
	x: 10.000000
	y: 20.000000
	z: 30.000000


	===================================================
	Byte Code - After Execution by the VM
	===================================================

		 PC      OPCode        Data

		  1  ReturnNull
		  2        Func    main
		  3     NewLine       2
		  4     FuncExE
		  5       PushC   Hello World
		  6       PushP   007D3670      0
		  7       PushV
		  8         SUM       0
		  9       Print
		 10     NewLine       3
		 11    ExitMark      29     28
		 12  LoadAFirst       x
		 13       PushN   1.000000
		 14  BeforeEqual       0
		 15  Assignment
		 16       PushN   1.000000
		 17  StepNumber
		 18  JumpVarLPLENum       x  10.000000    29
		 19     NewLine       4
		 20     FuncExE
		 21  PushPLocal       x      0
		 22       PushV
		 23       PushP   007D3670      0
		 24       PushV
		 25         SUM       0
		 26       Print
		 27     NewLine       5
		 28   IncLPJump       x     18
		 29  POPExitMark
		 30     POPStep
		 31     NewLine       6
		 32   LoadFuncP    test
		 33        Call       0
		 34  NoOperation
		 35     NewLine       8
		 36       PushV
		 37   FreeStack
		 38  ReturnNull
		 39        Func    test
		 40     NewLine       9
		 41     FuncExE
		 42       PushC   welcome
		 43       PushP   007D3670      0
		 44       PushV
		 45         SUM       0
		 46       Print
		 47     NewLine      10
		 48  PushPLocal      o1      0
		 49  AssignmentPointer
		 50         New   point
		 51    SetScope
		 52       PushV
		 53  BraceStart
		 54       LoadA       x      0     58
		 55  AssignmentPointer
		 56       PushN   10.000000
		 57  BeforeEqual       0
		 58  SetProperty       0    106
		 59   FreeStack
		 60       LoadA       y      0     64
		 61  AssignmentPointer
		 62       PushN   20.000000
		 63  BeforeEqual       0
		 64  SetProperty       0    141
		 65   FreeStack
		 66       LoadA       z      0     70
		 67  AssignmentPointer
		 68       PushN   30.000000
		 69  BeforeEqual       0
		 70  SetProperty       0    176
		 71   FreeStack
		 72    LoadFunc   ismethod
		 73       LoadA    self      0
		 74       PushV
		 75       PushC   braceend
		 76        Call
		 77  NoOperation
		 78       PushV
		 79       JumpZ      85
		 80    LoadFunc   braceend
		 81        Call
		 82  NoOperation
		 83       PushV
		 84   FreeStack
		 85    BraceEnd
		 86   FreeStack
		 87     NewLine      11
		 88     FuncExE
		 89  PushPLocal      o1      0
		 90       PushV
		 91       Print
		 92     NewLine      13
		 93  ReturnNull
		 94       Class   point  007D8470
		 95    NewLabel
		 96       LoadA       x      0
		 97       PushV
		 98   FreeStack
		 99       LoadA       y      0
		100       PushV
		101   FreeStack
		102       LoadA       z      0
		103       PushV
		104   FreeStack
		105  ReturnNull
		106    LoadFunc   ismethod
		107       LoadA   ring_gettemp_var      0
		108       PushV
		109       PushC    setx
		110        Call       0
		111  NoOperation
		112       PushV
		113       JumpZ     132
		114     NewLine       2
		115       LoadA   ring_gettemp_var      0
		116  LoadMethod    setx
		117       LoadA   ring_settemp_var      0
		118       PushV
		119        Call       0      1
		120  AfterCallMethod
		121       PushV
		122   FreeStack
		123     NewLine       3
		124       LoadA   ring_tempflag_var      0    128
		125  AssignmentPointer
		126       PushN   0.000000
		127  BeforeEqual       0
		128  Assignment       0      0
		129   FreeStack
		130     NewLine       4
		131        Jump     140
		132     NewLine       5
		133       PushP   007D37D8      0    137
		134  AssignmentPointer
		135       PushN   1.000000
		136  BeforeEqual       0
		137  Assignment       0      0
		138   FreeStack
		139     NewLine       6
		140      Return
		141    LoadFunc   ismethod
		142       LoadA   ring_gettemp_var      0
		143       PushV
		144       PushC    sety
		145        Call       0
		146  NoOperation
		147       PushV
		148       JumpZ     167
		149     NewLine       2
		150       LoadA   ring_gettemp_var      0
		151  LoadMethod    sety
		152       LoadA   ring_settemp_var      0
		153       PushV
		154        Call       0      1
		155  AfterCallMethod
		156       PushV
		157   FreeStack
		158     NewLine       3
		159       LoadA   ring_tempflag_var      0    163
		160  AssignmentPointer
		161       PushN   0.000000
		162  BeforeEqual       0
		163  Assignment       0      0
		164   FreeStack
		165     NewLine       4
		166        Jump     175
		167     NewLine       5
		168       PushP   007D37D8      0    172
		169  AssignmentPointer
		170       PushN   1.000000
		171  BeforeEqual       0
		172  Assignment       0      0
		173   FreeStack
		174     NewLine       6
		175      Return
		176    LoadFunc   ismethod
		177       LoadA   ring_gettemp_var      0
		178       PushV
		179       PushC    setz
		180        Call       0
		181  NoOperation
		182       PushV
		183       JumpZ     202
		184     NewLine       2
		185       LoadA   ring_gettemp_var      0
		186  LoadMethod    setz
		187       LoadA   ring_settemp_var      0
		188       PushV
		189        Call       0      1
		190  AfterCallMethod
		191       PushV
		192   FreeStack
		193     NewLine       3
		194       LoadA   ring_tempflag_var      0    198
		195  AssignmentPointer
		196       PushN   0.000000
		197  BeforeEqual       0
		198  Assignment       0      0
		199   FreeStack
		200     NewLine       4
		201        Jump     210
		202     NewLine       5
		203       PushP   007D37D8      0    207
		204  AssignmentPointer
		205       PushN   1.000000
		206  BeforeEqual       0
		207  Assignment       0      0
		208   FreeStack
		209     NewLine       6
		210      Return

	===================================================

.. index:: 
	pair: コマンドラインオプション; CGI への対応


CGI への対応
============

コマンド:

.. code-block:: ring

	ring test.ring -cgi

.. index:: 
	pair: コマンドラインオプション; コンパイルの実行

コンパイルの実行
================

コマンド:

.. code-block:: ring

	ring test.ring -norun

.. index:: 
	pair: コマンドラインオプション; 命令演算コードの表示

命令演算コードの表示
====================

コマンド:

.. code-block:: ring

	ring test.ring -ins


実行結果:

.. code-block:: ring

	===================================================

	Operation  : ReturnNull  
	PC         : 1  
	Line Number    : 1  , File test.ring 
	 
	SP (After) : 0  - FuncSP : 0 
	 LineNumber 1 
	===================================================
	.....
	.....
	.....
	
.. tip:: 前述の用例は非常に大きいので実行結果を省略してあります！

.. index:: 
	pair: コマンドラインオプション; 実行性能の計測

実行性能の計測
==============

コマンド:

.. code-block:: ring

	ring test.ring -performance

実行結果:

.. code-block:: ring

	===================================================
	Date  : 2015/09/15 Time : 15:56:17
	Clock : 0 
	===================================================
	Hello World
	1
	2
	3
	4
	5
	6
	7
	8
	9
	10
	welcome
	x: 10.000000
	y: 20.000000
	z: 30.000000
	
	===================================================
	Date  : 2015/09/15 Time : 15:56:17
	Clock : 0 
	===================================================

.. index:: 
	pair: コマンドラインオプション; オブジェクトファイルの生成

オブジェクトファイルの生成
==========================

-go オプションは、ソースコードファイル (\*.ring) からオブジェクトファイル (\*.ringo) を生成します。

.. tip:: アプリケーション (商用またはオープンソース) の Ring ソースファイル一式を非公開 (保管) または配布できます。
	また、アプリケーションの配布または実行用のオブジェクトファイルも生成できます。

コマンド:

.. code-block:: ring

	ring test.ring -go

コンパイル済みのオブジェクトファイルを実行するには、

.. code-block:: ring

	ring test.ringo


.. index:: 
	pair: コマンドラインオプション; 組込型オブジェクトファイルの生成

組込型オブジェクトファイルの生成
================================

-geo オプションはソースコードファイル (\*.ring) から組込型オブジェクトファイル (C ソースコード) を生成します。

コマンド:

.. code-block:: ring

	ring test.ring -geo

このコマンドは最低でも 3 ファイルを生成します。

.. code-block:: ring

	test.c
	ringappcode.c
	ringappcode.h

プロジェクトの規模により、それ以上のファイルを生成します。

生成後のファイルは Ring VM のバイトコードとして実行されます。
