この質問が一部の人にとって明らかである場合はご容赦ください。しかし、私はインタープリターの書き方を独学しようとしています。私はPythonでこれをやっています.Lexerはすでにプログラムされています.
作成されたトークンのリストを取得しましたが、解析ツリーの構築で行き詰まっています。ここからどこへ行くべきかについてはある程度の考えがありますが、正しく考えているかどうかはわかりません。
これは、正規表現を使用した単純な算術式の文法で定義した構文です。
<a_expression> = <identifier | number> <operator> <identifier | number>
しかし、パーサーがレクサーからこのパターンに一致するトークンのストリームを受け取った場合:
<identifier | number> <operator> <identifier | number> <operator> <identifier | number>
2 つのオペランドではなく、2 つの演算子と 3 つのオペランドがあるため、これを解析するにはどうすればよいですか?
さらに、n 個のオペランドと n-1 個の演算子をどのように処理すればよいですか? これは再帰的に行うべきだと思いますが、さまざまなタイプの式に対してさらにパーサーを定義する必要があるかどうか、またはここからどこへ行くべきかはわかりません。n 個のオペランドと n-1 個の演算子のパターンを正規表現と一致させることはできますか?