2016-11-12 9 views
-3

私はGroovyを使用していましたが、セミコロンなしで同様のC/C++構文を処理できるようです。私の質問は、C/C++にセミコロンが必要な理由は何ですか?コンパイルを簡単にするのですか?あるいは、私が実際に気付いていないあいまいさがありますか(もしそうなら、例を挙げてください)?C/C++にセミコロンが必要なのはなぜですか?

これは自分の言語のコンパイラ設計を助けるためで、セミコロンが必要かどうかを判断しようとしています。

+2

です。 –

+3

良い関連の質問:[なぜコンパイラはセミコロンがないと報告していないのですか?](http://stackoverflow.com/questions/40135392/why-doesnt-the-compiler-report-a-missing-semicolon) –

+2

文を区切るために改行を使いません。 – glauxosdever

答えて

2

「理由」はありません。それが言語構造がどのように書かれたかです。構文には、著者が述べたように;の使用法が含まれています。

だけで、C11からチャプター§5.1.1.2を、関連する段落を引用する、翻訳段階

    トークンを分離
  • 空白文字はもはや重要ではありません。各 前処理トークンはトークンに変換されます。結果のトークンは、 であり、構文的および意味的に解析され、翻訳単位として翻訳されます。

およびnewline is a whitespace

+0

私が知らない構文にあいまいさがありますか? –

+0

@ChrisSmith:セミコロンのために、行末を含むすべての空白を無視しても問題ありません。 'int main(void){戻り値0; } 'が有効です。 – usr2564301

+2

@ChrisSmith cとC++は '\ n'を文の区切り文字として扱わないので、多くのあいまいさがあります。 –

関連する問題