疑問解決(字句解析、構文解析)

2007/2/20

「字句解析」、「構文解析」は余り聞き慣れない言葉だと思います。
ここでは、できる限り簡単に説明してみたいと思います。

・字句解析
 文章を、最小の意味のある単語に分解する事です。
・構文解析
 文章の構造を解析する事です。
 字句解析で取り出した単語の並び解析し意味付けをします。
・スタック
 スタックとは、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検索で  
Google
・TOPへ戻る

メールはこちらに