 WHAT'S THIS? HEADLINESLICENSEPROJECT ARCHIVE+ RSS/1+ JESSIE+ HttpVirtualUsers- NSXBASIC- CONCEPT- SPEC- INTERNAL- EXPRESSION- PORTING- DOWNLOAD CONTACT US　 ・NSXBASIC - 処理系非依存BASICインタプリタ　1.　NSX-BASICの基本コンセプト1.1.　コンパイラ型言語処理系とインタプリタ型言語処理系　人間が何らかの方法をもってコンピュータに対して任意の仕事をさせようと希望するなら，必然的に仕事の内容をプログラム言語で記述することを要求されるでしょう．　本来であれば，マイクロプロセッサの理解できる機械語で記述するべきなのでしょうが，それは容易なことではありませんし，一昔前とは違い，最近のプロセッサの複雑さでは，それは人間が効率良く行なえる仕事ではありません．　より複雑で大規模なソフトウェアを開発するために，高級言語が考案され，これを機械語に翻訳するためにプログラム言語コンパイラやインタプリタが開発されました．マイクロプロセッサの処理能力が低かった時代には，機械語での記述が最良，続いてコンパイラの存在する言語での記述が望ましい，最も非効率的なのはインタプリタの形態をとっている言語処理系であるとされてきましたが，昨今のプロセッサ能力を考えてみると，多少状況が違ってきています．　まず機械語が冷遇されてきていること．昨今のRISCプロセッサのパフォーマンスを最大限に引き出すコードを，機械語で直接人間が記述するのは非常に困難であるし，例え可能であったにしろ，生産コストの面から考えて最適な手段であるとは言い難いのが現状です．移植性の悪さも一因していると言えるでしょう．　コンパイラが存在する処理系にしても，プログラムに組み込んだライブラリが特定の処理系に依存するものであったなら，移植性の悪さを増大させる結果になる上に，ライブラリリンクにおける法的な問題がからんできたりと，少なからずややこしい部分があるのは否定できません．またソースコードでの配布を考えた場合，確かにマルチプラットフォームに対応しているとはいえ，処理系ごとの微細な仕様の相違によって，希望通りの動作結果が得られなかったり，一般のユーザーにコンパイラのセット(ライブラリやヘッダファイル群など)を要求するのは，いささか無理があったりと，配布における問題もでてきます．　機械語やコンパイラ型言語処理系の問題点が指摘されてきている中で，最近になって表舞台に登場する回数を増やしているのは，インタプリタ型言語処理系です．　インタプリタ型の処理系は，仮想的な実行コードを解釈しながら，それに応じた処理をインタプリタに組み込まれているライブラリで実現する形態をとっているため，危険なコードが混ざることがありませんし，仮に混ざっていたにしても，実行の段階で取り除くことができます．　一昔前には，どうしても処理速度の面で不利でありましたが，昨今のプロセッサの処理性能ないしネットワークに接続されているコンピュータの数や種類を考えると，実行コードを直接出力するコンパイラよりは仮想的なプラットフォームで動作するインタプリタのほうが，有利で有効な状況にあると言えるでしょう．仮想マシン上での動作が想定されているために，実行結果も各マシンの違いに依存しない上に，実行コードを直接配布することができるのも，強みの一つです．　JavaにしろInfernoで採用されている仮想マシン用の言語にしろ，最近になって登場している言語処理系は，そのほとんどがインタプリタ型であると言えるでしょう．そんな中で，インタプリタ型言語処理系の元祖とでも言うべき，BASICインタプリタについて，今回は制作／解説していきたいと思います．1.2.　JIS/Full BASICとNSX-BASIC　現在，公的機関により認証されているBASIC言語の基本仕様としては，日本工業規格(JIS)にて定義されているJIS BASICと，ANSI(American National Standard Institute)にて定義されているFull-BASICとがあります．　NSX-BASICについては，その参考文献として「JISハンドブック1997 情報処理 プログラム言語編」を採用しているため，ここに記載されているFull-BASIC(以下JIS-X3003)を基本としています．　しかしながら，X3003の「2.2 規格合致処理系」(p.787)として規定されている内容については，本BASICでは以下の項目のみ条件を満たしているため，完全にX3003に準拠しているわけではありません．　　(c)　誤り及び例外状態を，規格の定めるところに従って解釈する　　(d)　規格合致プログラム中のおのおのの文の意味を，規格の定めるところに従って解釈する　　(e)　規格合致プログラムの全体としての意味を，規格の定めるところに従って解釈する　　(f)　少なくとも規格で定められた精度と範囲の数値を，入力，処理及び出力する　　(g)　少なくとも規格で定められた長さと文字集合の文字列を，入力，処理及び出力する　また，本BASICにおいてはANSI X3.113の3.2にある予約語の存在は全て無視し，予約語に関してはMSX BASIC，およびN88-DISK BASIC(86) MS-DOS版のセットを主な参考対象としています．　ただし，日本で流通している基本的なBASIC言語の予約語セットの中でも，機能語の途中に空白が含まれてもよいもの(例えばLINE INPUT, PRINT USING等)については，空白の混入を禁止しています．　これは，外部命令群の拡張性とモジュール化の面から考えて決定した仕様です．もし仮にLINE INPUTが有効であるならば，LINEまで解釈した段階で，文字列入力とは何ら関係のないLINE命令に制御が渡るようになってしまうでしょう．この点に関し，X3003において「4.1.2 プログラム要素 - 構文 (13)」(p.795)で規定されている通りの内容に従っています．　  COPYRIGHT 2001 - LOGICAL-PARADOX.ORG