プログラミング言語 (C、C++ など) の構文とセマンティクスの違いは何ですか?
11 に答える
構文とは言語の構造を指し、その語源をたどって物事がどのように組み立てられるかをたどります。
たとえば、型を宣言してから名前を宣言し、次にセミコロンを宣言して、構文的に正しいコードにする必要がある場合があります。
Type token;
一方、セマンティクスは意味に関するものです。コンパイラーまたはインタープリターは、構文エラーについて不平を言う可能性があります。あなたの同僚はセマンティクスについて不平を言うでしょう。
ウィキペディアに答えがあります。構文 (プログラミング言語)と意味論 (コンピューター サイエンス)のウィキページを読みます。
あるいは、コンパイラーやインタープリターの仕事について考えてみてください。最初のステップは字句解析 で、文字列を語彙素に分割して を解析することでトークンが生成されます。これにより、抽象的な構文ツリー(構文の表現) が構築されます。次のステップでは、これらの AST (セマンティクス) を変換または評価します。
また、すべてのキーワードが対応するフランス語に変換された C のバリアントを定義した場合 (つまり、 にif
なるsi
、 にdo
なるfaire
、 にelse
なるsinon
など)、言語の構文は間違いなく変更されますが、あまり変更されないことに注意してください。セマンティクス: そのフランス語-C でのプログラミングは簡単ではありません!
セマンティクスとは、コードが意味するもの、つまり疑似コードで記述できるものです。構文は実際の構造です。変数名からセミコロンまでのすべてです。
- コンパイルするには正しい構文が必要です。
- それを機能させるには、正しいセマンティクスが必要です。
彼はご飯を飲みます (間違った意味 - 無意味、正しい構文 - 文法)
こんにちは、水を飲みます (正しいセマンティック - 意味がありますが、間違った構文 - 文法)
構文: 言語の文法構造を指しています.C言語を書いている場合. データ型、トークンの使用には細心の注意を払う必要があります [リテラルまたは "printf()" のようなシンボルにすることができます。"printf, (, )" ] の 3 つのトークンがあります。同様に、関数の使用方法、関数の構文、関数の宣言、定義、初期化、および呼び出しにも非常に注意する必要があります。
セマンティクスである一方で、文またはステートメントの論理または概念に関係します。概念や論理から外れて何かを言ったり書いたりすると、意味的に間違っています。