OSDN Git Service

タグを打ち忘れていたついでに、html版ドキュメントを追加しました。
[ring-lang-081/ring.git] / docs / build / html / naturallibrary.html
diff --git a/docs/build/html/naturallibrary.html b/docs/build/html/naturallibrary.html
new file mode 100644 (file)
index 0000000..42c991a
--- /dev/null
@@ -0,0 +1,502 @@
+<!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="ウェブ開発 (CGI ライブラリ)" href="web.html" />
+    <link rel="prev" title="自然言語プログラミング" href="natural.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="web.html" title="ウェブ開発 (CGI ライブラリ)">
+         next &raquo;
+       </a>
+      </li>
+      <li class="right">
+       <a href="natural.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>
+<p>自然言語ライブラリの使用前に naturallib.ring ライブラリを読み込みます。</p>
+<div class="highlight-ring"><div class="highlight"><pre><span class="k">load</span> <span class="s">&quot;naturallib.ring&quot;</span>
+</pre></div>
+</div>
+<p>ライブラリの読み込み後、このメソッドで自然言語を使えます。</p>
+<ul class="simple">
+<li>SetLanguageName(cLanguageName)</li>
+<li>setCommandsPath(cFolder)</li>
+<li>SetPackageName(cPackageName)</li>
+<li>UseCommand(cCommandName)</li>
+<li>SetOperators(cOperators)</li>
+<li>RunFile(cFileName)</li>
+<li>RunString(cString)</li>
+</ul>
+<div class="section" id="index-1">
+<span id="id2"></span><h2>自然言語ライブラリ - デモプログラム<a class="headerlink" href="#index-1" title="このヘッドラインへのパーマリンク">¶</a></h2>
+<p>例えば、テキストファイル program.txt に自然言語コードを記述します。</p>
+<p>ファイル: program.txt</p>
+<div class="highlight-none"><div class="highlight"><pre>Welcome to the Ring programming language!
+What you are reading now is not comments, I swear!
+
+After many years of programming I decided to think different about
+programming and solve the problems in a better way.
+
+We are writing commands or code and the Ring language is reading
+it to understand us! Sure, What you are seeing now is
+just ***part of the code - Not the Complete Program***
+You have to write little things before and after this
+part to be able to run it!
+
+It is the natural part of our code where we can write in English,
+Arabic or any Natural Language Then we will tell the computer
+through the Ring language what must happens! in a way that we can scale
+for large frameworks and programs.
+
+Just imagine what will happens to the world of programming once
+we create many powerful frameworks using the Ring language that
+uses this way (Natural Programming).
+
+For example When we say Hello to the Machine, It can reply! and when we
+say count from 1 to 5 it will understand us, Also if
+we said count from 5 to 1 it will
+understand us too! You can see the Output window!
+
+This Goal is not new, but the Ring language comes
+with an innovative solution to this problem.
+</pre></div>
+</div>
+<p>実行結果:</p>
+<div class="highlight-none"><div class="highlight"><pre>Hello, Sir!
+
+
+The Numbers!
+
+1
+
+2
+
+3
+
+4
+
+5
+
+I will count Again!
+
+5
+
+4
+
+3
+
+2
+
+1
+</pre></div>
+</div>
+<p>自然言語コードを実行するには start.ring が必要です。</p>
+<p>start.ring には言語と命令を定義します。</p>
+<p>ファイル: start.ring</p>
+<div class="highlight-ring"><div class="highlight"><pre><span class="k">load</span> <span class="s">&quot;stdlib.ring&quot;</span>
+<span class="k">load</span> <span class="s">&quot;naturallib.ring&quot;</span>
+
+<span class="k">New</span> <span class="n">NaturalLanguage</span> <span class="p">{</span>
+        <span class="n">SetLanguageName</span><span class="p">(:</span><span class="n">MyLanguage</span><span class="p">)</span>
+        <span class="n">SetCommandsPath</span><span class="p">(</span><span class="n">CurrentDir</span><span class="p">()</span><span class="o">+</span><span class="s">&quot;/../command&quot;</span><span class="p">)</span>
+        <span class="n">SetPackageName</span><span class="p">(</span><span class="s">&quot;MyLanguage.Natural&quot;</span><span class="p">)</span>
+        <span class="n">UseCommand</span><span class="p">(:</span><span class="n">Hello</span><span class="p">)</span>
+        <span class="n">UseCommand</span><span class="p">(:</span><span class="n">Count</span><span class="p">)</span>
+        <span class="n">RunFile</span><span class="p">(</span><span class="s">&quot;program.txt&quot;</span><span class="p">)</span>
+<span class="p">}</span>
+</pre></div>
+</div>
+<p>これで MyLanguage 言語名は定義済みになり、言語命令用のフォルダが指定されます。</p>
+<p>各命令は MyLanguage.Natural パッケージにあるクラスとして定義されています。</p>
+<p>Hello と Count の二つの命令を定義しています。</p>
+<p>CurrentDir()+”/../command” フォルダで命令を定義するために二つのファイルが必要です。</p>
+<p>ファイル: hello.ring</p>
+<div class="highlight-ring"><div class="highlight"><pre><span class="n">DefineNaturalCommand</span><span class="p">.</span><span class="n">SyntaxIsKeyword</span><span class="p">(</span><span class="o">[</span>
+        <span class="p">:</span><span class="n">Package</span> <span class="o">=</span> <span class="s">&quot;MyLanguage.Natural&quot;</span><span class="p">,</span>
+        <span class="p">:</span><span class="n">Keyword</span> <span class="o">=</span> <span class="p">:</span><span class="n">hello</span><span class="p">,</span>
+        <span class="p">:</span><span class="n">Function</span> <span class="o">=</span> <span class="k">func</span> <span class="p">{</span>
+                <span class="k">See</span>  <span class="s">&quot;Hello, Sir!&quot;</span> <span class="o">+</span> <span class="n">nl</span> <span class="o">+</span> <span class="n">nl</span>
+        <span class="p">}</span>
+<span class="o">]</span><span class="p">)</span>
+</pre></div>
+</div>
+<p>ファイル: count.ring</p>
+<div class="highlight-ring"><div class="highlight"><pre><span class="n">DefineNaturalCommand</span><span class="p">.</span><span class="n">SyntaxIsKeywordNumberNumber</span><span class="p">(</span><span class="o">[</span>
+        <span class="p">:</span><span class="n">Package</span> <span class="o">=</span> <span class="s">&quot;MyLanguage.Natural&quot;</span><span class="p">,</span>
+        <span class="p">:</span><span class="n">Keyword</span> <span class="o">=</span> <span class="p">:</span><span class="n">count</span><span class="p">,</span>
+        <span class="p">:</span><span class="n">Function</span> <span class="o">=</span> <span class="k">func</span> <span class="p">{</span>
+                <span class="k">if</span> <span class="ow">not</span> <span class="n">isattribute</span><span class="p">(</span><span class="n">self</span><span class="p">,:</span><span class="n">count_times</span><span class="p">)</span> <span class="p">{</span>
+                        <span class="n">AddAttribute</span><span class="p">(</span><span class="n">self</span><span class="p">,:</span><span class="n">count_times</span><span class="p">)</span>
+                        <span class="n">Count_Times</span> <span class="o">=</span> <span class="mi">0</span>
+                <span class="p">}</span>
+                <span class="k">if</span> <span class="n">Expr</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span> <span class="o">&gt;</span> <span class="n">Expr</span><span class="p">(</span><span class="mi">2</span><span class="p">)</span> <span class="p">{</span>
+                        <span class="n">nStep</span> <span class="o">=</span> <span class="o">-</span><span class="mi">1</span>
+                <span class="k">else</span>
+                        <span class="n">nStep</span> <span class="o">=</span> <span class="mi">1</span>
+                <span class="p">}</span>
+                <span class="k">if</span> <span class="n">Count_Times</span> <span class="o">=</span> <span class="mi">0</span> <span class="p">{</span>
+                        <span class="k">see</span> <span class="n">nl</span><span class="o">+</span><span class="s">&quot;The Numbers!&quot;</span> <span class="o">+</span> <span class="n">nl</span>
+                        <span class="n">Count_Times</span><span class="o">++</span>
+                <span class="k">else</span>
+                        <span class="k">see</span> <span class="n">nl</span> <span class="o">+</span> <span class="s">&quot;I will count Again!&quot;</span> <span class="o">+</span><span class="n">nl</span>
+                <span class="p">}</span>
+                <span class="k">for</span> <span class="n">x</span> <span class="o">=</span> <span class="n">Expr</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span> <span class="k">to</span> <span class="n">Expr</span><span class="p">(</span><span class="mi">2</span><span class="p">)</span> <span class="k">step</span> <span class="n">nStep</span> <span class="p">{</span>
+                        <span class="k">see</span> <span class="n">nl</span><span class="o">+</span><span class="n">x</span><span class="o">+</span><span class="n">nl</span>
+                <span class="p">}</span>
+                <span class="n">CommandReturn</span><span class="p">(</span><span class="n">fabs</span><span class="p">(</span><span class="n">Expr</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span><span class="o">-</span><span class="n">Expr</span><span class="p">(</span><span class="mi">2</span><span class="p">))</span><span class="o">+</span><span class="mi">1</span><span class="p">)</span>
+        <span class="p">}</span>
+<span class="o">]</span><span class="p">)</span>
+</pre></div>
+</div>
+</div>
+<div class="section" id="index-2">
+<span id="id3"></span><h2>命令の定義<a class="headerlink" href="#index-2" title="このヘッドラインへのパーマリンク">¶</a></h2>
+<p>DefineNaturalCommand オブジェクトで新しい命令を定義します。</p>
+<p>このオブジェクトでは、下記のメソッドが使えます。</p>
+<ul class="simple">
+<li>SyntaxIsKeyword(aPara)</li>
+<li>SyntaxIsKeywordNumber(aPara)</li>
+<li>SyntaxIsKeywordNumberNumber(aPara)</li>
+<li>SyntaxIsKeywordNumbers(aPara,nCount)</li>
+<li>SyntaxIsKeywordString(aPara)</li>
+<li>SyntaxIsKeywordStringString(aPara)</li>
+<li>SyntaxIsKeywordStrings(aPara,nCount)</li>
+<li>SyntaxIsKeywordExpression(aPara)</li>
+<li>SyntaxIsKeywordExpressionExpression(aPara)</li>
+<li>SyntaxIsKeywordExpressions(aPara,nCount)</li>
+<li>SyntaxIsCommand(aPara)</li>
+<li>SyntaxIsCommandNumber(aPara)</li>
+<li>SyntaxIsCommandNumberNumber(aPara)</li>
+<li>SyntaxIsCommandNumbers(aPara,nCount)</li>
+<li>SyntaxIsCommandString(aPara)</li>
+<li>SyntaxIsCommandStringString(aPara)</li>
+<li>SyntaxIsCommandStrings(aPara,nCount)</li>
+<li>SyntaxIsCommandExpression(aPara)</li>
+<li>SyntaxIsCommandExpressionExpression(aPara)</li>
+<li>SyntaxIsCommandExpressions(aPara,nCount)</li>
+</ul>
+<p>ファイル: mylanguage.ring</p>
+<div class="highlight-ring"><div class="highlight"><pre><span class="k">load</span> <span class="s">&quot;stdlib.ring&quot;</span>
+<span class="k">load</span> <span class="s">&quot;naturallib.ring&quot;</span>
+
+<span class="n">MyLanguage</span> <span class="o">=</span> <span class="k">New</span> <span class="n">NaturalLanguage</span> <span class="p">{</span>
+        <span class="n">SetLanguageName</span><span class="p">(:</span><span class="n">MyLanguage</span><span class="p">)</span>
+        <span class="n">SetCommandsPath</span><span class="p">(</span><span class="n">CurrentDir</span><span class="p">()</span><span class="o">+</span><span class="s">&quot;/../command&quot;</span><span class="p">)</span>
+        <span class="n">SetPackageName</span><span class="p">(</span><span class="s">&quot;MyLanguage.Natural&quot;</span><span class="p">)</span>
+        <span class="n">UseCommand</span><span class="p">(:</span><span class="n">Hello</span><span class="p">)</span>
+        <span class="n">UseCommand</span><span class="p">(:</span><span class="n">Count</span><span class="p">)</span>
+        <span class="n">UseCommand</span><span class="p">(:</span><span class="n">Print</span><span class="p">)</span>
+        <span class="n">UseCommand</span><span class="p">(:</span><span class="n">IWantWindow</span><span class="p">)</span>
+        <span class="n">UseCommand</span><span class="p">(:</span><span class="n">WindowTitleIs</span><span class="p">)</span>
+        <span class="n">UseCommand</span><span class="p">(:</span><span class="n">IWantButton</span><span class="p">)</span>
+<span class="p">}</span>
+</pre></div>
+</div>
+<p>用例①</p>
+<p>この用例では、 Print 命令を定義します。</p>
+<p>SyntaxIsKeywordExpression() メソッドを使用します。</p>
+<p>メソッドにはリスト (ハッシュとして) を渡します。
+実行するパッケージ名、キーワード、および関数を決定します。</p>
+<p>この関数の内側で使用する Expr(nExprNumber) 関数はユーザがキーワードの後に記述する式の値を取得します。</p>
+<p>ファイル: print.ring</p>
+<div class="highlight-ring"><div class="highlight"><pre><span class="n">DefineNaturalCommand</span><span class="p">.</span><span class="n">SyntaxIsKeywordExpression</span><span class="p">(</span><span class="o">[</span>
+        <span class="p">:</span><span class="n">Package</span> <span class="o">=</span> <span class="s">&quot;MyLanguage.Natural&quot;</span><span class="p">,</span>
+        <span class="p">:</span><span class="n">Keyword</span> <span class="o">=</span> <span class="p">:</span><span class="n">print</span><span class="p">,</span>
+        <span class="p">:</span><span class="n">Function</span> <span class="o">=</span> <span class="k">func</span> <span class="p">{</span>
+                <span class="k">See</span>  <span class="n">Expr</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span>
+        <span class="p">}</span>
+<span class="o">]</span><span class="p">)</span>
+</pre></div>
+</div>
+<p>用法:</p>
+<div class="highlight-ring"><div class="highlight"><pre><span class="k">load</span> <span class="s">&quot;mylanguage.ring&quot;</span>
+
+<span class="n">MyLanguage</span><span class="p">.</span><span class="n">RunString</span><span class="p">(</span><span class="sc">&#39;</span>
+        <span class="n">print</span> <span class="s">&quot;Hello, World!&quot;</span>
+<span class="sc">&#39;)</span>
+</pre></div>
+</div>
+<p>実行結果:</p>
+<div class="highlight-none"><div class="highlight"><pre>Hello, World!
+</pre></div>
+</div>
+<p>用例②</p>
+<p>ファイル: iwantwindow.ring</p>
+<div class="highlight-ring"><div class="highlight"><pre><span class="n">DefineNaturalCommand</span><span class="p">.</span><span class="n">SyntaxIsCommand</span><span class="p">(</span><span class="o">[</span>
+        <span class="p">:</span><span class="n">Package</span> <span class="o">=</span> <span class="s">&quot;MyLanguage.Natural&quot;</span><span class="p">,</span>
+        <span class="p">:</span><span class="n">Command</span> <span class="o">=</span> <span class="s">&quot;i want window&quot;</span><span class="p">,</span>
+        <span class="p">:</span><span class="n">Function</span> <span class="o">=</span> <span class="k">func</span> <span class="p">{</span>
+                <span class="k">See</span>  <span class="s">&quot;Command: I want window&quot;</span> <span class="o">+</span> <span class="n">nl</span>
+        <span class="p">}</span>
+<span class="o">]</span><span class="p">)</span>
+</pre></div>
+</div>
+<p>用法:</p>
+<div class="highlight-ring"><div class="highlight"><pre><span class="k">load</span> <span class="s">&quot;mylanguage.ring&quot;</span>
+
+<span class="n">MyLanguage</span><span class="p">.</span><span class="n">RunString</span><span class="p">(</span><span class="sc">&#39;</span>
+        <span class="n">i</span> <span class="n">want</span> <span class="n">window</span>
+<span class="sc">&#39;)</span>
+</pre></div>
+</div>
+<p>実行結果:</p>
+<div class="highlight-none"><div class="highlight"><pre>Command: I want window
+</pre></div>
+</div>
+<p>用例③</p>
+<p>ファイル: windowtitleis.ring</p>
+<div class="highlight-ring"><div class="highlight"><pre><span class="n">DefineNaturalCommand</span><span class="p">.</span><span class="n">SyntaxIsCommandString</span><span class="p">(</span><span class="o">[</span>
+        <span class="p">:</span><span class="n">Package</span> <span class="o">=</span> <span class="s">&quot;MyLanguage.Natural&quot;</span><span class="p">,</span>
+        <span class="p">:</span><span class="n">Command</span> <span class="o">=</span> <span class="s">&quot;window title is&quot;</span><span class="p">,</span>
+        <span class="p">:</span><span class="n">Function</span> <span class="o">=</span> <span class="k">func</span> <span class="p">{</span>
+                <span class="k">See</span>  <span class="s">&quot;Command: Window title is &quot;</span> <span class="o">+</span> <span class="n">Expr</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span> <span class="o">+</span> <span class="n">nl</span>
+        <span class="p">}</span>
+<span class="o">]</span><span class="p">)</span>
+</pre></div>
+</div>
+<p>用法:</p>
+<div class="highlight-ring"><div class="highlight"><pre><span class="k">load</span> <span class="s">&quot;mylanguage.ring&quot;</span>
+
+<span class="n">MyLanguage</span><span class="p">.</span><span class="n">RunString</span><span class="p">(</span><span class="sc">&#39;</span>
+        <span class="n">I</span> <span class="n">want</span> <span class="n">window</span> <span class="ow">and</span> <span class="n">the</span> <span class="n">window</span> <span class="n">title</span> <span class="n">is</span> <span class="s">&quot;Hello World&quot;</span>
+<span class="sc">&#39;)</span>
+</pre></div>
+</div>
+<p>実行結果:</p>
+<div class="highlight-none"><div class="highlight"><pre>Command: I want window
+Command: Window title is Hello World
+</pre></div>
+</div>
+</div>
+<div class="section" id="index-3">
+<span id="id4"></span><h2>自然言語ライブラリ - 演算子<a class="headerlink" href="#index-3" title="このヘッドラインへのパーマリンク">¶</a></h2>
+<p>この用例は演算子ではなく Count 命令を使用しています。</p>
+<div class="highlight-ring"><div class="highlight"><pre><span class="k">load</span> <span class="s">&quot;mylanguage.ring&quot;</span>
+
+<span class="n">MyLanguage</span><span class="p">.</span><span class="n">RunString</span><span class="p">(</span><span class="s">&quot;</span>
+        <span class="n">Hello</span>
+        <span class="n">Count</span> <span class="mi">1</span> <span class="mi">5</span>
+        <span class="n">Count</span> <span class="mi">5</span> <span class="mi">1</span>
+<span class="s">&quot;)</span>
+</pre></div>
+</div>
+<p>詳述すると、</p>
+<div class="highlight-ring"><div class="highlight"><pre><span class="k">load</span> <span class="s">&quot;mylanguage.ring&quot;</span>
+
+<span class="n">MyLanguage</span><span class="p">.</span><span class="n">RunString</span><span class="p">(</span><span class="s">&quot;</span>
+        <span class="n">Hello</span><span class="p">,</span> <span class="n">Please</span>   <span class="n">Count</span> <span class="k">from</span> <span class="mi">1</span> <span class="k">to</span> <span class="mi">5</span> <span class="n">then</span> <span class="n">count</span> <span class="k">from</span> <span class="mi">5</span> <span class="k">to</span> <span class="mi">1</span>
+<span class="s">&quot;)</span>
+</pre></div>
+</div>
+<p>また、命令は “(” や ”)” などの演算子で囲むことができます。</p>
+<div class="highlight-ring"><div class="highlight"><pre><span class="k">load</span> <span class="s">&quot;mylanguage.ring&quot;</span>
+
+<span class="n">MyLanguage</span> <span class="p">{</span>
+        <span class="n">SetOperators</span><span class="p">(</span><span class="s">&quot;()&quot;</span><span class="p">)</span>
+        <span class="n">RunString</span><span class="p">(</span><span class="s">&quot;</span>
+                <span class="n">Here</span> <span class="n">we</span> <span class="n">will</span> <span class="n">play</span> <span class="ow">and</span> <span class="n">will</span> <span class="k">try</span> <span class="n">something</span>
+                <span class="n">that</span> <span class="n">looks</span> <span class="n">like</span> <span class="n">Lisp</span> <span class="n">Syntax</span>
+                <span class="p">(</span><span class="n">count</span>  <span class="p">(</span><span class="n">count</span> <span class="mi">1</span> <span class="mi">5</span><span class="p">)</span>  <span class="p">(</span><span class="n">count</span> <span class="mi">20</span> <span class="mi">15</span><span class="p">))</span>
+                <span class="n">Just</span> <span class="k">for</span> <span class="n">fun</span><span class="o">!</span>
+        <span class="s">&quot;)</span>
+<span class="p">}</span>
+</pre></div>
+</div>
+</div>
+<div class="section" id="index-4">
+<span id="id5"></span><h2>クラスによる命令の定義<a class="headerlink" href="#index-4" title="このヘッドラインへのパーマリンク">¶</a></h2>
+<p>本章は詳細な実装と関係があります。</p>
+<p>新しい命令を定義するとき、各命令は自然言語ライブラリにより、クラスとして定義されます。</p>
+<p>DefineNaturalCommand オブジェクト、またはこの用例のように、新しいクラスの定義することで使える単純明快なインタフェースでコマンドを定義する選択肢があります。</p>
+<p>DefineNaturalCommand (最も簡単な方法) は実行時にクラスを定義します。</p>
+<p>ファイル: hello.ring</p>
+<div class="highlight-ring"><div class="highlight"><pre><span class="n">Package</span> <span class="n">MyLanguage</span><span class="p">.</span><span class="n">Natural</span>
+
+<span class="k">class</span> <span class="n">Hello</span>
+
+        <span class="k">func</span> <span class="n">AddAttributes_Hello</span>
+                <span class="n">AddAttribute</span><span class="p">(</span><span class="n">self</span><span class="p">,:</span><span class="n">hello</span><span class="p">)</span>
+
+        <span class="k">func</span> <span class="n">GetHello</span>
+                <span class="k">See</span>  <span class="s">&quot;Hello, Sir!&quot;</span> <span class="o">+</span> <span class="n">nl</span> <span class="o">+</span> <span class="n">nl</span>
+</pre></div>
+</div>
+<p>ファイル: count.ring</p>
+<div class="highlight-ring"><div class="highlight"><pre><span class="n">Package</span> <span class="n">MyLanguage</span><span class="p">.</span><span class="n">Natural</span>
+
+<span class="k">class</span> <span class="n">Count</span>
+
+        <span class="k">func</span> <span class="n">Getcount</span>
+                <span class="n">StartCommand</span><span class="p">()</span>
+                <span class="n">CommandData</span><span class="p">()</span><span class="o">[</span><span class="p">:</span><span class="n">name</span><span class="o">]</span> <span class="o">=</span> <span class="p">:</span><span class="n">Count</span>
+                <span class="n">CommandData</span><span class="p">()</span><span class="o">[</span><span class="p">:</span><span class="n">nExpr</span><span class="o">]</span> <span class="o">=</span> <span class="mi">0</span>
+                <span class="n">CommandData</span><span class="p">()</span><span class="o">[</span><span class="p">:</span><span class="n">aExpr</span><span class="o">]</span> <span class="o">=</span> <span class="o">[]</span>
+
+        <span class="k">func</span> <span class="n">BraceExprEval_Count</span> <span class="n">nValue</span>
+                <span class="k">if</span> <span class="n">isCommand</span><span class="p">()</span> <span class="ow">and</span> <span class="n">CommandData</span><span class="p">()</span><span class="o">[</span><span class="p">:</span><span class="n">name</span><span class="o">]</span> <span class="o">=</span> <span class="p">:</span><span class="n">Count</span> <span class="p">{</span>
+                        <span class="k">if</span> <span class="n">isNumber</span><span class="p">(</span><span class="n">nValue</span><span class="p">)</span> <span class="p">{</span>
+                                <span class="n">CommandData</span><span class="p">()</span><span class="o">[</span><span class="p">:</span><span class="n">nExpr</span><span class="o">]++</span>
+                                <span class="n">CommandData</span><span class="p">()</span><span class="o">[</span><span class="p">:</span><span class="n">aExpr</span><span class="o">]</span> <span class="o">+</span> <span class="n">nValue</span>
+                                <span class="k">if</span> <span class="n">CommandData</span><span class="p">()</span><span class="o">[</span><span class="p">:</span><span class="n">nExpr</span><span class="o">]</span> <span class="o">=</span> <span class="mi">2</span> <span class="p">{</span>
+                                        <span class="n">Count_Execute</span><span class="p">()</span>
+                                <span class="p">}</span>
+                        <span class="p">}</span>
+                <span class="p">}</span>
+
+        <span class="k">func</span> <span class="n">AddAttributes_Count</span>
+                <span class="n">AddAttribute</span><span class="p">(</span><span class="n">self</span><span class="p">,:</span><span class="n">count</span><span class="p">)</span>
+
+        <span class="k">func</span> <span class="n">Count_Execute</span>
+                <span class="k">if</span> <span class="ow">not</span> <span class="n">isattribute</span><span class="p">(</span><span class="n">self</span><span class="p">,:</span><span class="n">count_times</span><span class="p">)</span> <span class="p">{</span>
+                        <span class="n">AddAttribute</span><span class="p">(</span><span class="n">self</span><span class="p">,:</span><span class="n">count_times</span><span class="p">)</span>
+                        <span class="n">Count_Times</span> <span class="o">=</span> <span class="mi">0</span>
+                <span class="p">}</span>
+                <span class="k">if</span> <span class="n">Expr</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span> <span class="o">&gt;</span> <span class="n">Expr</span><span class="p">(</span><span class="mi">2</span><span class="p">)</span> <span class="p">{</span>
+                        <span class="n">nStep</span> <span class="o">=</span> <span class="o">-</span><span class="mi">1</span>
+                <span class="k">else</span>
+                        <span class="n">nStep</span> <span class="o">=</span> <span class="mi">1</span>
+                <span class="p">}</span>
+                <span class="k">if</span> <span class="n">Count_Times</span> <span class="o">=</span> <span class="mi">0</span> <span class="p">{</span>
+                        <span class="k">see</span> <span class="n">nl</span><span class="o">+</span><span class="s">&quot;The Numbers!&quot;</span> <span class="o">+</span> <span class="n">nl</span>
+                        <span class="n">Count_Times</span><span class="o">++</span>
+                <span class="k">else</span>
+                        <span class="k">see</span> <span class="n">nl</span> <span class="o">+</span> <span class="s">&quot;I will count Again!&quot;</span> <span class="o">+</span><span class="n">nl</span>
+                <span class="p">}</span>
+                <span class="k">for</span> <span class="n">x</span> <span class="o">=</span> <span class="n">Expr</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span> <span class="k">to</span> <span class="n">Expr</span><span class="p">(</span><span class="mi">2</span><span class="p">)</span> <span class="k">step</span> <span class="n">nStep</span> <span class="p">{</span>
+                        <span class="k">see</span> <span class="n">nl</span><span class="o">+</span><span class="n">x</span><span class="o">+</span><span class="n">nl</span>
+                <span class="p">}</span>
+                <span class="n">CommandReturn</span><span class="p">(</span><span class="n">fabs</span><span class="p">(</span><span class="n">Expr</span><span class="p">(</span><span class="mi">1</span><span class="p">)</span><span class="o">-</span><span class="n">Expr</span><span class="p">(</span><span class="mi">2</span><span class="p">))</span><span class="o">+</span><span class="mi">1</span><span class="p">)</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="#index-3">自然言語ライブラリ - 演算子</a></li>
+<li><a class="reference internal" href="#index-4">クラスによる命令の定義</a></li>
+</ul>
+</li>
+</ul>
+
+
+  <h4>前のトピックへ</h4>
+  <p class="topless"><a href="natural.html"
+                        title="前の章へ">自然言語プログラミング</a></p>
+  <h4>次のトピックへ</h4>
+  <p class="topless"><a href="web.html"
+                        title="次の章へ">ウェブ開発 (CGI ライブラリ)</a></p>
+  <div role="note" aria-label="source link">
+    <h3>このページ</h3>
+    <ul class="this-page-menu">
+      <li><a href="_sources/naturallibrary.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/naturallibrary.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