前回までの授業で2分探索木の説明をしてきたが、このデータ構造は他のデータを扱う際にも用いられる。説明しプログラムを紹介。noの木の2つの枝を持つデータである。これは2分木と同じであり、このような処理は以下のように記述ができる。回答に応じてyes/noの枝に進む。;}decision-tree.cxxコンパイラと言語処理系2分木の応用の構文木について、この後説明を行うが、構文木を使うコンパイラなどの一般知識を事前に説明しておく。高級言語で書かれたプログラムを計算機で実行するソフトウェアは、言語処理系と呼ばれる。その実行形式によりインタプリタ(interpreter:翻訳)ソースプログラムの意味を解析しながら、その意味に沿った処理を行うコンパイラ(compiler:通訳)ソースプログラムから機械語を生成し、実行する際には機械語を実行トランスレーターソースから他の言語のソースコードを生成し、それをさらにコンパイルし実行バイトコードインタプリタソースからバイトコード(機械語に近いコードを生成)、実行時にはバイトコードの命令に沿った処理を行うに分けられる。コンパイラが命令を処理する際には、以下の処理が行われる。generation)実際の命令コードとして出力バイトコードインタプリタとは例年だと説明していなかったけど最近利用されるプログラム言語の特徴を説明。インタプリタといった説明となる。最近のこういった言語がどのように処理されるのかは、微妙である。Engine)の上で中間コードをインタプリタ方式で実行あらかじめコンパイルされた中間コードを、JREの上でインタプリタ的に実行するものは、バイトコードインタプリタ方式と呼ぶ。Compiler)により、中間コードを機械語に変換してから実行する。JavaScriptなどは(というか最近のインタプリタの殆どPython,PHP,Perl,...は)、一般的にはインタプリタに分類されるが、実行開始時に高級言語でかかれたコードから中間コードを生成し、そのバイトコードをインタプリタ的に動かしている。インタプリタは、ソースコードがユーザの所に配布されて実行するので、プログラムの内容が見られてしまう。プログラムの考え方が盗まれてしまう。このため、変数名を短くしたり、空白を除去したり(...部分的に暗号化したり)といった難読化を行うのが一般的である。expression)が用いられる。「go+gle」は、gogle,google,gooogle正規表現は、sed,awk,Perl,PHPといった文字列処理の得意なプログラム言語でも利用できる。いった言語では、以下のようなパターンを記述できる。言語の文法を表現する時、バッカス記法(BNF)が良く使われる。;例えば、加減乗除記号と数字だけの式の場合、以下の様なBNFとなる。;上記のバッカス記法には、間違いがある。”1+2+3′′を正しく認識できない。どこが間違っているだろうか?このような構文が与えられた時、”1+23*456′′と入力されたものを、“1,+,23,*,456”と区切る処理が、字句解析である。バッカス記法での文法に合わせ、以下のような構文木を生成するのが構文解析である。正規表現,BNF記法問題にて理解度を確認せよ。