第一部 - 言語主要部 1. はじめに
1.1 サンプルプログラム 下記は完全なEuphoriaのプログラムの一例です。
sequence list, sorted_list function merge_sort(sequence x) -- 再帰的なマージソートを用いて x 内の順位を上げて再配置する。 integer n, mid sequence merged, a, b n = length(x) if n = 0 or n = 1 then return x -- 通常の場合 end if mid = floor(n/2) a = merge_sort(x[1..mid]) -- xの最初の半分をソートする。 b = merge_sort(x[mid+1..n]) -- xの次の半分をソートする。 -- 二つのソート済みの半分を一つへマージする。 merged = {} while length(a) > 0 and length(b) > 0 do if compare(a[1], b[1]) < 0 then merged = append(merged, a[1]) a = a[2..length(a)] else merged = append(merged, b[1]) b = b[2..length(b)] end if end while return merged & a & b -- 残りのデータを merged に付け加える。 end function procedure print_sorted_list() -- list から sorted_list を生成する。 list = {9, 10, 3, 1, 4, 5, 8, 7, 6, 2} sorted_list = merge_sort(list) ? sorted_list end procedure print_sorted_list() -- この命令文はプログラムを開始するためのものです。 上記の一例は4つに分かれた命令文を含み、命令文ごとに処理されます。一つ目は変数が二つ宣言されています: list と sorted_list は シーケンス(可変長配列)です。 二つ目は merge_sort() が関数として定義されています。 三つ目は print_sorted_list() が手続きとして定義されています。 最後の命令文は手続きである print_sorted_list() を呼び出します。
プログラムは次のような結果を出力します: merge_sort()は {1.5, -9, 1e6, 100} または {"oranges", "apples", "bananas"} に簡単なソートを行います。 この例はeuphoria\tutorial\example.exに格納されています。これは、Euphoriaのソートとしては高速な方法ではありません。euphoria\demoディレクトリへ移動して "ex allsorts" と入力すると、ソート対象のオブジェクトの個数を加算しながら、様々なソートアルゴリズムの処理速度比較を見ることができます。Euphoriaプログラミングにおけるクイックチュートリアルに関してはeuphoria\demo\bench\filesort.exを参照してください。
1.2 インストール方法 Euphoria をインストールする前に、最初にinstall.docをお読みください。インストール手順はハードディスクに"euphoria"ディレクトリを作成してeuphoria関連ファイルのコピーを行い、autoexec.batファイルにeuphoria\bin の検索パスとEuphoriaのディレクトリを設定すために環境変数EUDIRを追加します。 インストール後のeuphoriaディレクトリはこのようになります:
Linuxサブディレクトリは DOS/Windowsディストリビュージョンには含まれておらず、dos32 および win32 サブディレクトリはLinux/FreeBSDディストリビュージョンには含まれていません。このマニュアルでは、ディレクトリ名を表すのにバックスラッシュ(\)を使用しています。Linux/FreeBSDの利用者はフォワードスラッシュ(/)へ読み替えてください。 1.3 プログラムの実行方法 Euphoriaのプログラムはex, exwまたはexuの後に続けてEuphoriaで記述されたソースのメインファイル名を入力することによって実行されます。この行はコマンドラインとして知られており追加の語句(引数として知られています)を入力できます。プログラムで組み込み関数command_line()を呼び出すことによりコマンドラインの入力内容を読み取ることができます。DOS32版のEuphoriaインタプリタはex.exeと呼ばれています。WIN32ウィンドウ版はexw.exeと呼ばれています。WIN32コンソール版はexwc.exeと呼ばれています。Linux/FreeBSD版はexuと呼ばれています。慣例として、主にEuphoriaのファイルは拡張子として .ex, .exw または .exuを持ちます。その他のEuphoriaのファイルとして、末尾が .e または、稀に .ew か .eu の場合は大規模プログラムからインクルードされることを意味します。入力文字数を減らすために.exを省略できexが自動的に拡張子を補完します。なお、exwまたはexwcは.exwを補完し、exuは.exuを補完します。なお規定値の拡張子でファイル見つからない場合は同様に、その他の可能性としてありうる拡張子での検索を試みます。もしファイルが現在のディレクトリで見つからない場合、パスを検索します(可能性の高い拡張子、またはその他のものを使用します)。次の例のように、Euphoriaのプログラム実行時に標準入力および標準出力をリダイレクトすることができます: ex filesort.ex < raw.txt > sorted.txtまたは簡潔に、 ex filesort < raw.txt > sorted.txt 他のコンパイラやインタプリタとは違い、これら ex, exw, exwc または exu には特殊なコマンドラインオプションはありません。ファイル名だけを除いた場合および未入力のときは、プロンプトでファイル名の入力を求められます。 Windows/DOS環境においてよく使用するプログラムのために小さな .bat (バッチ)ファイルを作成したい場合があり、おそらくmyprog.batと呼ばれるもので、それは次のような二つの命令文を含みます。 @echo off ex myprog.ex %1 %2 %3最初の命令文はスクリーンに対してコマンドのエコー出力を無効にします。次の構文は最大3つまでのコマンドライン引数をex myprog.exに与えて実行します。なお、引数を読む方法の例はcommand_line()を参照してください。もしプログラムの引数をより多く必要とするならば、%4 %5 などを追加する必要があります。.batファイルを作成しておくと常にex(またはexw, exwc)に関する些細な不便から開放されます。すなわち、こう入力することができます: myprog実際は: ex myprog残念ですが.batファイル使用時において、標準出入力のリダイレクトがDOSでは許されていません。 Linux/FreeBSD環境において、Euphoriaインタプリタのパスをあなたのメインプログラムファイルの最初の行に記述することができます。すなわち、もしあなたのプログラムが foo.exu だとすると: #!/home/rob/euphoria/bin/exu procedure foo() ? 2+2 end procedure foo()ファイルを実行可能にしたとき: chmod +x foo.exuこのように入力できます: foo.exuこれによりプログラムを簡単に実行できます。あなたはプログラムの名前を "foo" といった単純で短いものにすることができます。Euphoriaでは!#(Shebang 構文) が最初の一行目にあるときは無視します。気をつけてほしいのは最初の行(Shebang 構文)の末尾の改行コードがLinux/FreeBSD流(\n)ではなく、DOS/Windows流(\r\n)である場合はLinux/FreeBSDのシェルプログラムは解釈を正しく行うことができず理解しづらいエラーメッセージを出力して、結果としてユーザに混乱を引き起こするかもしれません。もしshorud(しゅらうど)を施したファイルを実行するならば、exuにではなくbackenduに対してパスを与える必要があります。 bind.bat (DOS32) かbindw.bat (WIN32) またはbindu (Linux/FreeBSD) を実行することによって、あなたのEuphoriaプログラムとex.exe, exw.exe, exwc.exe または exu をバインディングをした(ひとつにまとめた)スタンドアロンの実行ファイルを作成できます(DOS/Windowsでは.exe ファイル)。スタンドアロン.exeファイルは標準出入力のリダイレクトができます。バインディング(Binding)は1.5 プログラムの配布方法において詳しい議論があります。 Euphoria → C言語トランスレータを使用しても、スタンドアロン .exe ファイルを作成でき、通常はバインディングされたプログラムより非常に高速に動作します。 exu またはex.exe およびexw.exe, exwc.exe といったファイルは通常euphoria\bin ディレクトリ にあり、これらには検索パスを通す必要があります。環境変数 EUDIR はメインの Euphoria ディレクトリを設定しなければなりません。たとえばc:\euphoria といったディレクトリです。 Windows環境またはWindowsから実行したDOSシェル(コマンドプロンプト)からプログラムを直接的に実行することができます。 なお、.exファイルをex.exeに、.exwファイルをexw.exeに"関連付ける"ことによって.exまたは.exwをダブルクリックのみで簡単に実行できます。Windows環境では(マイ)コンピュータ / 表示 / オプション / ファイルタイプによって.ex, .exwファイルの拡張子の関連付けを新規に行うことができます(訳注:Windowsのバージョンによって設定方法が異なります。詳しくはWindows添付のヘルプファイルを参照してください)。また、複数のEuphoriaプログラムを、それぞれ異なる独立したウィンドウで実行可能です(マルチタスク)。さらに、あなたのプログラムを.exeファイルへ変換した場合は単純にダブルクリックするだけで実行できます。 もしLinux/WindowsまたはWindows(Windowsから実行したDOSシェル(コマンドプロンプトを含む)環境においてEuphoriaのプログラムを実行すると、プログラムの実行で物理メモリーが不足したときに"仮想メモリー"の使用を開始します。オペレーティングシステムは自動的に最後に使用したコードとデータをスワップアウトすることによって仮想メモリーを提供します。Windowsのスワップサイズの大きさを変更するにはコントロールパネル / 386 エンハンスドモード / "仮想メモリー"をクリックしてください(訳注:Windowsのバージョンによって設定方法が異なりますので詳しくはWindows添付のヘルプファイルを参照してください)。 OS/2環境においては "DPMI_MEMORY_LIMIT" を調整するには、仮想DOSマシンのアイコン / "DOS設定" をクリックすることによって、より多くの拡張メモリーをあなたのプログラムに割り当てることができます。 純粋なDOS環境において、Windows環境の範囲外であり、システムはスワップファイル機構を持ち合わせておらずex.exe (DOS32) に組み込まれているDOSエクステンダは単一のプログラムだけしか実行できません(シングルタスク)。詳しくはplatform.doc を参照してください。
1.4 プログラムの編集方法 あなたは好きなテキストエディタを使用してEuphoriaのプログラムを編集することができます。さらに、Euphoriaには全てEuphoriaで記述された特別なエディタが付属しています。起動方法: ed の後に完全なファイル名を与えれば編集できます。(拡張子を .ex/.exw/.exu と仮定しません)。あなたはこのエディタを様々な種類のテキストファイルの編集に使用することができます。あなたがEuphoriaのファイルを編集するならば、いくつかの追加機能、たとえば文法によって色分けして反転表示にして読みやすくしたり自動的に命令文を補完して、あなたの作業をより簡単にするために利用できます。 Euphoriaのプログラムを実行しようとしてエラーメッセージを受け取ったときは ex.err を出力して、その(ex.errが存在し続けるか、エラーを解決するまでの)コンパイルまたは実行時の間、ファイル名を入力せずに単にed と入力すると自動的にエラーを含むファイルを読み込み、そのエラーが発生している(訂正すべき)行と桁を指摘して(正確には移動して)、スクリーン最上部にエラーメッセージを表示します。 Windowsではed.bat に対して様々なテキストファイルを関連付けて好きなように編集できます。文法の色分けによる反転表示は拡張子 .ex, .exw, .exu, .e, .ew, .eu, および .pro(プロファイル) のファイルに対して提供されます。 大部分のキーにおいて入力は現在開いているファイルのカーソル位置に入力されます。Escを一回を押すとメニューバーが表示されて特殊コマンドが入力できます。このとき、カーソルキー、Insert/Delete/Home/End/PageUp/PageDownキー は無効にならず常に入力可能です。Linux/FreeBSD において、いくつかのキーは入力ができない仕様となっていますが、代替手段として別のキーマップが割り当てられています。詳細はeuphoria\doc\ed.doc(euphoria\html\ed.htm)に編集コマンドに関する完全な解説があります。 編集中にEsc h(help)を入力すると ed.docを閲覧することができます。 もしエディタの詳細な動作に関して理解または変更する必要がある場合はeuphoria\binにあるed.exを編集することができます(編集結果を失うことがないよう予めバックアップコピーを作成してください)。もしあなたのシステムでedと他のコマンド名が衝突する場合は、単純にeuphoria\bin\ed.batを他のファイル名に変更してください。このエディタは Euphroia で記述されており、それは非常に簡潔であり容易に理解しやすいものです。同じ機能をC言語のようなもので実装しようとすると、はるかにもっと多量の行をコードとして記述する必要があります。 edはシンプルなテキストモードエディタでDOS, Linux, FreeBSD および Windowsコンソール上で動作します。 関連するものとしてディビッド・キューニー(David Cuny)によるDOS およびLinux/FreeBSD向けの ee.exというすばらしいエディタがあります。ee.exはRapid Euphoriaのウェブサイトからダウンロードできます。また、Windowsで動作するEuphoria用エディタもいくつかあります。 これらについても同ウェブサイト上にあります。
1.5 プログラムの配布方法 Euphoriaはプログラムの配布において4つの異なる方法が用意されています。 最初の方法は単にあなたのプログラムのユーザにex.exeまたはexw.exeあるいはexuといったEuphoriaのファイルと、あなたのメインファイル(.ex, .exw, または .exu) と実行に必要な様々なインクルードファイル(.e)を一緒に提供する方法です(様々なインクルードファイルは標準ではeuphoria\includeにあります)。もしEuphoriaソースファイルが同一のひとつのディレクトリに一緒に配置され ex.exe, exw.exe または exu が同じディレクトリか検索パスのどこかに配置されているならば、ex(exw)または(exu)の後に続けて主要な.ex, .exw, または .exu ファイルのパスと入力するとあなたのユーザーがプログラムを実行できます。あなたは人々がex(exw)と入力しなくて済むように小さな.batファイルを提供するのもよいでしょう。なお、この方法はあなたのEuphoriaプログラムのソースコードをあなたのユーザと共有したいと決めたときに選択してください。 バインダー(Binder)はあなたに二つの配布方法を提供します。Shroud(シュラウド:包む)はプログラムで必要とするすべての .e ファイルを一つにシュラウディング(Shrouding)した .li ファイルを作成します。バインディング(Binding)は シュラウドを施してひとつにまとめたプログラムと backend.exe, backendw.exe また backendu をひとつにして、単一のスタンドアロン実行ファイル (.exe)を作成します。例として、プログラムが "myprog.ex" と呼ばれているならば、全く同じ動作をする "myprog.exe" を作成できます。なおshrouding および binding に関しての詳しい情報はbind.docを参照してください。 最後の方法は、Euphoria → C言語トランスレータにより、EuphoriaのプログラムをC言語ソースへトランスレート(翻訳または変換) を行い、その後C言語コンパイラでコンパイルを行うと実行(.exe)ファイルを得ることができます。 この製品はフリーかつオープンソースであり、たくさんの人々による善意の寄付によるものです。あなたが開発した、どのようなEuphoriaのプログラムにおいてもロイヤリティフリーで配布することが許可されています。だれでもあなたのプログラムを実行できるようにするためにex.exe, exw.exeおよびexuファイルは自由に配布できます。また、あなたはバックエンドインタプリタ(backend.exe, backendw.exeおよびbackendu)も配布することができます。なお、あなたのプログラムに shroudまたはbindを施した結果として生成されたファイルに関してもロイヤリティフリーになります。 このパッケージのEuphoriaソースファイルを「あるがまま」または「手を加えた」かのいずれかの状態のファイルをあなたのプログラムに添付する場合があるかもしれません(どの規模のプログラムでも euphoria\includeにある 標準インクルードファイルをいくつか必要とする場合があります)。 あなたがEuphroiaを使用してプログラムを開発するさい、人々に次のアドレスを告知していただけたら幸いです: ウェブページはhttp://www.RapidEuphoria.comにありますが、リンクに対して告知や許可および承認も不要です。 アイコンファイル、たとえばeuphoria\bin にあるeuphoria.icoは変更の有無に関係なく配布できます。 高速版のEuphoriaインタプリタバックエンドは ANSI Cで記述されており、多くの異なる開発元のC言語コンパイラでコンパイル可能です。完全なソースコードは euphoria\source にあり、Euphroiaでコーディングされた、代替のバックエンドは execute.eという名称で格納されています。寛大なオープンソースライセンスは個人または営利目的での両方の利用において、他のオープンソースライセンスと違い、あなたによる変更がなくてもオープンソースを作成することを許可しています。 なお、Euphoria → C トランスレータを使用する場合は各種ライブラリやランタイムライブラリなどサードパティによるいくつかの追加の法的制限に同意する必要がある場合があります。
|