私はGroovyを使用していましたが、セミコロンなしで同様のC/C++構文を処理できるようです。私の質問は、C/C++にセミコロンが必要な理由は何ですか?コンパイルを簡単にするのですか?あるいは、私が実際に気付いていないあいまいさがありますか(もしそうなら、例を挙げてください)?C/C++にセミコロンが必要なのはなぜですか?
これは自分の言語のコンパイラ設計を助けるためで、セミコロンが必要かどうかを判断しようとしています。
私はGroovyを使用していましたが、セミコロンなしで同様のC/C++構文を処理できるようです。私の質問は、C/C++にセミコロンが必要な理由は何ですか?コンパイルを簡単にするのですか?あるいは、私が実際に気付いていないあいまいさがありますか(もしそうなら、例を挙げてください)?C/C++にセミコロンが必要なのはなぜですか?
これは自分の言語のコンパイラ設計を助けるためで、セミコロンが必要かどうかを判断しようとしています。
「理由」はありません。それが言語構造がどのように書かれたかです。構文には、著者が述べたように;
の使用法が含まれています。
だけで、C11
からチャプター§5.1.1.2を、関連する段落を引用する、翻訳段階
トークンを分離
- 空白文字はもはや重要ではありません。各 前処理トークンはトークンに変換されます。結果のトークンは、 であり、構文的および意味的に解析され、翻訳単位として翻訳されます。
私が知らない構文にあいまいさがありますか? –
@ChrisSmith:セミコロンのために、行末を含むすべての空白を無視しても問題ありません。 'int main(void){戻り値0; } 'が有効です。 – usr2564301
@ChrisSmith cとC++は '\ n'を文の区切り文字として扱わないので、多くのあいまいさがあります。 –
です。 –
良い関連の質問:[なぜコンパイラはセミコロンがないと報告していないのですか?](http://stackoverflow.com/questions/40135392/why-doesnt-the-compiler-report-a-missing-semicolon) –
文を区切るために改行を使いません。 – glauxosdever