疑問解決(字句解析、構文解析)
「字句解析」、「構文解析」は余り聞き慣れない言葉だと思います。
ここでは、できる限り簡単に説明してみたいと思います。
・字句解析 |
文章を、最小の意味のある単語に分解する事です。 |
・構文解析 |
文章の構造を解析する事です。 字句解析で取り出した単語の並び解析し意味付けをします。 |
・スタック |
スタックとは、LIFO(後に入れたものを先に出す。LastIn FirstOut)のデータ構造です。 データをスタックに積むことをプッシュと言い、スタックから取り出すときをポップと言います。 |
・構文木(Syntax Tree または Parse Tree) |
構文解析の結果を木構造として表したものです。 構文木は、解析対象を全て取り込みます。 この中には、見易さのために付加されたものがあります。 構文木から、それらの冗長な物を取り除いた物を抽象構文木(abstract syntax tree :AST)と呼びます。 |
・逆ポーランド記法(Reverse Polish Notation:RPN) |
後置記法(Postfix Notation)ともいいます。 演算子を操作対象の後ろに記述する手法。 実際に実現する際は、スタックを利用すると容易に可能。 利点としては、()(括弧)操作が必要なくなります。 難点としては、操作対象同士が並ぶため、その区切りとなるデリミタが必要になる。 |
・ポーランド記法(Polish Notation) |
前置記法(Prefix Notation)ともいいます。 演算子を操作対象の前に記述する手法。 難点としては、操作対象同士が並ぶため、その区切りとなるデリミタが必要になる。 |
・中置記法(Infix Notation) |
演算子を操作対象の真中に記述する手法。 数学等で扱う方法がこれにあたります。 難点としては、演算子の優先順位や()が必要になる。 |
・覚書 |
・再帰的降下型 ・LL文法構文解析 ・LR構文解析 ・演算子優先順位構文解析 ・レキシカルアナライザ lexical analyzer ・パーサ parser ・lex/flex/yacc/bison ・JavaCC/JFlex/CUP/ANTLR ・演算子順位法 ・「インタプリタ」パターン ・構文木 ・「コンポジット」パターン ・BNF Backus Naur Form バッカス・ナウア・フォーム ・EBNF ・N組 (N-tuple) |
さらに情報が欲しい方は、Google検索で
|
・TOPへ戻る |