3,391
回編集
(→数値: s/ケタ落/浮動小数点数による誤差/、桁落ちは別の概念。また例が「丸め」を行わず「切り捨て」ていた。{{See also|浮動小数点数}}、{{See also|桁落ち}}) タグ: 2017年版ソースエディター |
(レキシカル・アナライザ+→パーサ) タグ: 2017年版ソースエディター |
||
==== インターネットとの関係 ====
ウェブページ用プログラミング言語としても <!-- "Node.js" --> 普及しているJavaScriptは、ブラウザ付属のインタプリタとしてウェブブラウザに実装されていることがほとんどだ。インタプリタかコンパイラかどうかは、けっして言語の仕様そのものによるものではなく、実装による違いだ。Pythonのようにインタプリタとして実装されているプログラミング言語に、追加モジュールとしてウェブプログラミング用モジュールを付け加えて(すでにそのようなモジュールが開発されており配布されている)、それでpythonなどでウェブプログラミングを行うという方法もあります。
==レキシカル・アナライザ==
ソースコードは通常の文字列ですが、文字列のママ構文解析を行うことは出来ないので、文字列からトークンを切りだします。
トークンを切り出すプログラムのことをレキシカル・アナライザあるいは構文解析器(こうぶんかいせきき)と呼びます。
トークンとは、プログラミング言語のキーワード・識別子・デリミターなどのこれ以上分解すると意味が変わってしまう構文単位で、自然言語学の語に近い概念です。
=== パーサ ===
レキシカル・アナライザの出力は、トークンの1次元配列(トークン列)でこれから直接機械語に変換する事はできません。
そこでトークン列をプログラミング言語の構文の何に当てはまるか解析して内部表現(構文木)に変換します。
このようなプログラムのことを、トークン列をを解析して解釈する機械という意味で、「構文解析器」(こうぶんかいしゃくき、パーサ parser)と言います。
字句解析と構文解析を別々に行うことが可能なプリグラミング言語もありますが、多くのプログラミング言語では(文法に曖昧さがあったり、字句に対し意味論が重複しているなどの理由で)字句解析と構文解析は連携するする必要があります。
== 文法 ==
|
回編集