さて、私は字句解析器の一部として、キーワードとの一致を「検索」または検索する関数を作成しています。私のレクサーは、単一文字および複数文字の演算子(+ - * / > < = == etc
)などのすべての明白なトークンをキャッチします(コメントと空白もすでに削除されています)ので、英数字(アンダースコアを含む)のみのストリームを収集した後、関数を呼び出しますstring
。次に、文字列は既知のキーワードまたは識別子として一致する必要があります。
それで、私はそれをどのように特定するのか疑問に思いましたか?基本的に、リストや配列、またはすべての組み込みキーワードの何かと比較する必要があることを知っています。それが1つのリターンに一致する場合は、対応する列挙値に一致します。それ以外の場合、一致するものがない場合は、関数または変数の識別子である必要があります。では、どのように一致を探す必要がありますか?二分探索木と呼ばれるものがそれを行うための効率的な方法であるか、ハッシュテーブルを使用することによってどこかで読んだことがあります。問題は私も一度も使用したことがないので、それが正しい方法かどうかわかりません。MySQLデータベースを使用できますか?