2017-07-17 3 views
1

は、私は、例えば、コンパイラの段階で異なるエラーの違いを理解する上で、このプログラムをいくつかの問題を抱えている:コンパイラの次のエラーのあるプログラムを検出するステージはどれですか?

int main() 
{ 
     int x = 5; 
     int x = 6; 
} 

私の推測では、これが意味分析フェーズで失敗するだろうが、私はありませんということです(int x)の重複トークンが生成されるため、字句解析段階で失敗する可能性はありますか?)

あなたのご協力をお待ちしております。

+1

字句解析フェーズでシンボルテーブルに挿入すると、衝突が発生し、「重複シンボル」エラーが発生します。 –

+0

@DavidBrabantありがとう、あなたの助けに感謝します。 –

答えて

0

このプログラムは、ここで説明する言語が標準CまたはC++であると仮定すると、字句的および構文的には正解ですがセマンティクスではありません。

C/C++では変数の再定義ができません。これはセマンティクスです。あなたの言語が変数の再定義を許せば、それは意味的に正しいプログラムになります。

関連する問題