5

言語パーサーの文法を定義するとき、テキストの任意の場所で発生する可能性があるコメント (例: /* .... */) などをどのように処理しますか?

タグ内のタグから文法を構築することは、物事が構造化されている場合にうまく機能するように見えますが、コメントはすべてをスローするようです.

テキストを 2 つのステップで解析する必要があるだけですか? 最初にこれらの項目を削除してから、コードの実際の構造を分解するには?

ありがとう

4

2 に答える 2

4

通常、コメントはメインの文法の範囲外で字句解析器によって処理されます。実際には、それらは (通常) 空白であるかのように扱われます。

于 2011-09-26T13:46:08.150 に答える
2

1 つのアプローチは、別のレクサーを使用することです。もう 1 つのはるかに柔軟な方法は、現在のコンテキストで有効な暗黙の空白プレフィックスを使用して、すべてのトークンのようなエントリ (キーワード、語彙要素など) を修正することです。これは、最新の Packrat パーサーのほとんどが空白を処理する方法です。

于 2011-09-26T14:07:25.503 に答える