OSDN Git Service

タグを打ち忘れていたついでに、html版ドキュメントを追加しました。
[ring-lang-081/ring.git] / docs / build / html / programstructure.html
diff --git a/docs/build/html/programstructure.html b/docs/build/html/programstructure.html
new file mode 100644 (file)
index 0000000..5181ef1
--- /dev/null
@@ -0,0 +1,265 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+  <head>
+    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+    
+    <title>プログラムの構造 &mdash; プログラミング言語 Ring 1.12 取扱説明書</title>
+    
+    <link rel="stylesheet" href="_static/bootstrap-astropy.css" type="text/css" />
+    <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
+    
+    <script type="text/javascript">
+      var DOCUMENTATION_OPTIONS = {
+        URL_ROOT:    './',
+        VERSION:     '1.12',
+        COLLAPSE_INDEX: false,
+        FILE_SUFFIX: '.html',
+        HAS_SOURCE:  true
+      };
+    </script>
+    <script type="text/javascript" src="_static/jquery.js"></script>
+    <script type="text/javascript" src="_static/underscore.js"></script>
+    <script type="text/javascript" src="_static/doctools.js"></script>
+    <script type="text/javascript" src="_static/translations.js"></script>
+    <link rel="top" title="プログラミング言語 Ring 1.12 取扱説明書" href="index.html" />
+    <link rel="next" title="リスト" href="lists.html" />
+    <link rel="prev" title="関数 - 第三形式" href="functions3.html" />
+    <link href='https://fonts.googleapis.com/css?family=Source+Sans+Pro:200,600' rel='stylesheet' type='text/css'/>
+
+  </head>
+  <body role="document">
+<div class="topbar">
+  <a class="brand" title="Documentation Home" href="index.html"><span id="logotext1">&#x1f369;Ring</span><span id="logotext2"> 1.12</span><span id="logotext3">:docs</span></a>
+  <ul>
+    
+    <li><a href="http://ring-lang.sourceforge.net/news.html">News</a></li>
+    <li><a href="http://ring-lang.sourceforge.net/download.html">Download</a></li>
+    <li><a href="https://groups.google.com/forum/#!forum/ring-lang">Get Help</a></li>
+    <li><a href="https://github.com/ring-lang/ring">Contribute</a></li>
+    <li><a href="http://ring-lang.sourceforge.net/resources.html">Resources</a></li>
+    <li><a href="http://ring-lang.sourceforge.net/team.html">Team</a></li>
+    
+    <li><a title="Ring Homepage" href="http://ring-lang.net/">Website</a></li>
+    <li><a title="総合索引" href="genindex.html">Index</a></li>
+    <li>
+      
+      
+<form action="search.html" method="get">
+  <input type="text" name="q" placeholder="Search" />
+  <input type="hidden" name="check_keywords" value="yes" />
+  <input type="hidden" name="area" value="default" />
+</form>
+      
+    </li>
+  </ul>
+</div>
+
+<div class="related">
+    <h3>ナビゲーション</h3>
+    <ul>
+      <li class="right">
+       <a href="lists.html" title="リスト">
+         next &raquo;
+       </a>
+      </li>
+      <li class="right">
+       <a href="functions3.html" title="関数 - 第三形式">
+         &laquo; previous
+       </a>
+        |
+      </li>
+      <li>
+       <a href="index.html">プログラミング言語 Ring 1.12 取扱説明書</a>
+        &raquo;
+      </li>
+      
+      <li>プログラムの構造</li> 
+    </ul>
+</div>
+  
+
+    <div class="document">
+      <div class="documentwrapper">
+        <div class="bodywrapper">
+          <div class="body" role="main">
+            
+  <div class="section" id="index-0">
+<span id="id1"></span><h1>プログラムの構造<a class="headerlink" href="#index-0" title="このヘッドラインへのパーマリンク">¶</a></h1>
+<p>複数のソースコードファイルを同じプロジェクトで扱う方法を学びます。</p>
+<div class="section" id="index-1">
+<span id="id2"></span><h2>ソースコードファイルの階層<a class="headerlink" href="#index-1" title="このヘッドラインへのパーマリンク">¶</a></h2>
+<p>ソースコードは下記の各階層から構成されています (同一順)。</p>
+<table border="1" class="docutils">
+<colgroup>
+<col width="100%" />
+</colgroup>
+<thead valign="bottom">
+<tr class="row-odd"><th class="head">ソースコードの階層</th>
+</tr>
+</thead>
+<tbody valign="top">
+<tr class="row-even"><td>ファイルの読み込み</td>
+</tr>
+<tr class="row-odd"><td>ステートメントとグローバル変数</td>
+</tr>
+<tr class="row-even"><td>関数</td>
+</tr>
+<tr class="row-odd"><td>パッケージとクラス</td>
+</tr>
+</tbody>
+</table>
+<p>アプリケーションは一本以上のファイルから構成されています。</p>
+</div>
+<div class="section" id="index-2">
+<span id="id3"></span><h2>複数のソースコードファイルを扱う方法<a class="headerlink" href="#index-2" title="このヘッドラインへのパーマリンク">¶</a></h2>
+<p>Load 命令はプロジェクトへ別のソースファイルをインクルードします。</p>
+<p>文法:</p>
+<div class="highlight-ring"><div class="highlight"><pre><span class="k">Load</span>  <span class="s">&quot;filename.ring&quot;</span>
+</pre></div>
+</div>
+<div class="admonition note">
+<p class="first admonition-title">注釈</p>
+<p class="last">Load 命令は、コンパイラの構文解析処理の段階で直接実行します。</p>
+</div>
+<div class="admonition tip">
+<p class="first admonition-title">ちなみに</p>
+<p class="last">実行時までファイル名がわからない、または関数でファイルのパスを取得する必要がある場合は、 eval() を使用します。</p>
+</div>
+<p>用例:</p>
+<div class="highlight-ring"><div class="highlight"><pre><span class="c"># ファイル : Start.ring</span>
+
+<span class="k">Load</span> <span class="s">&quot;sub.ring&quot;</span>
+
+<span class="n">sayhello</span><span class="p">(</span><span class="s">&quot;Mahmoud&quot;</span><span class="p">)</span>
+</pre></div>
+</div>
+<div class="highlight-ring"><div class="highlight"><pre><span class="c"># ファイル : sub.ring</span>
+
+<span class="k">func</span> <span class="n">sayhello</span> <span class="n">cName</span>
+        <span class="k">see</span> <span class="s">&quot;Hello &quot;</span> <span class="o">+</span> <span class="n">cName</span> <span class="o">+</span> <span class="n">nl</span>
+</pre></div>
+</div>
+</div>
+<div class="section" id="load-package">
+<span id="index-3"></span><h2>Load Package<a class="headerlink" href="#load-package" title="このヘッドラインへのパーマリンク">¶</a></h2>
+<p>&#8216;Load&#8217; 命令により、複数の Ring ソースファイルをプロジェクトで使えますが、</p>
+<p>グローバルスコープを共有しているため、グローバル変数の名前衝突が起きることがあります。</p>
+<p>この問題は &#8220;Load Package&#8221; 命令で解決します。</p>
+<p>&#8220;Load Package&#8221; 命令で新規生成したグローバルスコープへライブラリ (*.ring ファイル) を読み込みます。</p>
+<p>これにより既存のグローバル変数との名前衝突を回避できます。これはライブラリ開発でも非常に便利です。</p>
+<p>用例:</p>
+<p>ファイル: loadpackage.ring</p>
+<div class="highlight-ring"><div class="highlight"><pre><span class="n">x</span> <span class="o">=</span> <span class="mi">100</span>
+<span class="o">?</span> <span class="s">&quot;Hello, World!&quot;</span>
+<span class="k">load</span> <span class="n">package</span> <span class="s">&quot;testloadpackage.ring&quot;</span>
+
+<span class="o">?</span> <span class="n">x</span>
+<span class="n">test</span><span class="p">()</span>
+</pre></div>
+</div>
+<p>ファイル: testloadpackage.ring</p>
+<div class="highlight-ring"><div class="highlight"><pre><span class="o">?</span> <span class="s">&quot;Hello from testloadpackage.ring&quot;</span>
+
+<span class="n">x</span> <span class="o">=</span> <span class="mi">1000</span>
+
+<span class="n">test</span><span class="p">()</span>
+
+<span class="k">func</span> <span class="n">test</span>
+        <span class="o">?</span> <span class="n">x</span>
+</pre></div>
+</div>
+<p>実行結果:</p>
+<div class="highlight-none"><div class="highlight"><pre>Hello, World!
+Hello from testloadpackage.ring
+1000
+100
+1000
+</pre></div>
+</div>
+</div>
+<div class="section" id="load-again">
+<span id="index-4"></span><h2>Load Again<a class="headerlink" href="#load-again" title="このヘッドラインへのパーマリンク">¶</a></h2>
+<p>Ring 1.12 から Load Again コマンドが使えるようになりました。</p>
+<p>このコマンドを使うと Ring ソースファイルにある定数を何度でも読み込めます。</p>
+<p>これはグローバル定数による翻訳用 Ring ソースファイルを使用するときに便利です。</p>
+<p>用例:</p>
+<p>下記はアラビア語と英語に対応するプロジェクトからの引用です。</p>
+<p>english.ring と arabic.ring ファイルには翻訳で使う定数があります。</p>
+<p>これらのファイルはプログラムの開始時に読み込まれます。</p>
+<p>Load コマンドで同じファイルの再読み込みはできません。</p>
+<p>Load コマンドは同じソースファイルを一度だけ読み込み、それ以降の読み込み指定は無視するからです。</p>
+<p>しかし Load Again コマンドならできます。</p>
+<p>よって、下記のコードを使うと実行中にファイルの再利用ができます。</p>
+<div class="highlight-ring"><div class="highlight"><pre><span class="k">func</span> <span class="n">setLang</span> <span class="n">nLanguage</span>
+        <span class="k">if</span> <span class="n">C_ENV_DEFAULT_LANG</span> <span class="o">=</span> <span class="n">nLanguage</span>
+                <span class="k">return</span>
+        <span class="k">ok</span>
+        <span class="n">C_ENV_DEFAULT_LANG</span> <span class="o">=</span> <span class="n">nLanguage</span>
+        <span class="c"># 言語の変更</span>
+                <span class="k">switch</span> <span class="n">nLanguage</span>
+                        <span class="k">on</span> <span class="n">C_TRANSLATION_ENGLISH</span>
+                                <span class="k">load</span> <span class="k">again</span> <span class="s">&quot;translation/english.ring&quot;</span>
+                        <span class="k">on</span> <span class="n">C_TRANSLATION_ARABIC</span>
+                                <span class="k">load</span> <span class="k">again</span> <span class="s">&quot;translation/arabic.ring&quot;</span>
+                <span class="k">off</span>
+</pre></div>
+</div>
+</div>
+</div>
+
+
+          </div>
+        </div>
+      </div>
+      <div class="sphinxsidebar" role="navigation" aria-label="main navigation">
+        <div class="sphinxsidebarwrapper"><h3>ページの内容</h3>
+<ul>
+<li><a class="reference internal" href="#">プログラムの構造</a><ul>
+<li><a class="reference internal" href="#index-1">ソースコードファイルの階層</a></li>
+<li><a class="reference internal" href="#index-2">複数のソースコードファイルを扱う方法</a></li>
+<li><a class="reference internal" href="#load-package">Load Package</a></li>
+<li><a class="reference internal" href="#load-again">Load Again</a></li>
+</ul>
+</li>
+</ul>
+
+
+  <h4>前のトピックへ</h4>
+  <p class="topless"><a href="functions3.html"
+                        title="前の章へ">関数 - 第三形式</a></p>
+  <h4>次のトピックへ</h4>
+  <p class="topless"><a href="lists.html"
+                        title="次の章へ">リスト</a></p>
+  <div role="note" aria-label="source link">
+    <h3>このページ</h3>
+    <ul class="this-page-menu">
+      <li><a href="_sources/programstructure.txt"
+            rel="nofollow">ソースコードを表示</a></li>
+    </ul>
+   </div>
+      
+<form action="search.html" method="get">
+  <input type="text" name="q" placeholder="Search" />
+  <input type="hidden" name="check_keywords" value="yes" />
+  <input type="hidden" name="area" value="default" />
+</form>
+      
+        </div>
+      </div>
+      <div class="clearer"></div>
+    </div>
+<footer class="footer">
+  <p class="pull-right">
+    <a href="_sources/programstructure.txt"
+       rel="nofollow">Page Source</a> &nbsp;
+    <a href="#">Back to Top</a></p>
+  <p>
+    &copy; Copyright 2016-2020, Ring Team.<br/>
+    Created using <a href="http://www.sphinx-doc.org/en/stable/">Sphinx</a> 1.3.6. / astropy-sphinx-theme 1.1 (isVowel)
+  </p>
+</footer>
+  </body>
+</html>
\ No newline at end of file