構文と AST
ソースコードを直接扱うのは、非常に不便でエラーを起こしやすい作業です。 そのため、他の処理を行う前に、生のソースコードを 抽象構文木(AST)に変換します。 実際には、これには多くの作業が伴います。 その中には、字句解析、構文解析、マクロ展開、名前解決、条件付き コンパイル、feature gate チェック、および AST の検証が含まれます。 この章では、これらすべての手順を見ていきます。
特に、これらのタスクの間に常に明確な順序があるわけではありません。 たとえば、マクロ展開は、マクロとインポートの名前を解決するために名前解決に依存します。 また、構文解析にはマクロ展開が必要であり、そのマクロ展開ではさらにマクロの出力を構文解析する必要がある場合があります。