LR(1) パーサーを使用した C の解析: 不可能な試み
LR 解析は、文脈自由文法を解析するための強力な手法です。ただし、Wikipedia で指摘されているように、C は LR パーサーにとって大きな課題となります。この記事では、LR(1) パーサーによる解析に適さない C の特定の機能について詳しく掘り下げます。
曖昧な文法規則
LR パーサーは、次のように設計されていません。曖昧な文法規則を処理します。しかし、C にはあいまいさをもたらす悪名高いステートメントが含まれています。
x * y ;
このステートメントは、型 x へのポインターとしての y の宣言、または結果を破棄する x と y の乗算のいずれかとして解釈できます。
LR パーサー固有のもの制限事項
LR(1) パーサーは、限られた数のトークン (通常は 1 つまたは 2 つ) のみを先読みできます。この制限により、前述のステートメントのあいまいさを解決できなくなります。最終的な判断を下すには、コードの後半にある情報を確認する必要があります。
代替アプローチ
C を正常に解析するコンパイラは、制限を克服するためにさまざまな戦略を使用します。純粋な LR パーサーの。これらの手法には次のようなものがあります:
結論
特定の文法の曖昧な性質C のルールにより、LR(1) パーサーを使用して言語を確実に解析することができなくなります。 C を正常に解析するコンパイラは、その言語によってもたらされる特定の課題に対処するために代替技術を採用します。
以上がLR(1) パーサーが C を処理できないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。