2016-09-16 5 views
1

これらの2つのエラー、レキシカルとセマンティックの違いは何ですか?レキシカルエラーとセマンティックエラーの区別

int d = "orange"; 
inw d = 4; 

最初のエラーは意味エラーですか?あなたはintにリテラルを割り当てることができないので? 2番目のものに関しては、個々のトークンが台無しになっているので、それは字句になりますか?それが私の思考プロセスですが、私は間違っているかもしれませんが、もう少し理解したいと思います。

答えて

1

実際には、レキシカル、シンタックス、セマンティックの3つの解釈レベルがあります。字句解析は文字列をトークンに変換し、構文はトークンを言語内の有効な文に構築し、意味論はこれらの文を正しく解釈してアルゴリズムを実行します。

最初のエラーは意味です。すべてのトークンは正当なものですが、Javaでは文字定数を整数変数に割り当てることは合法ではありません。

2番目のエラーは、文字列 "inw"が有効なキーワードではないため、または構文として( "inw"は変数の名前である可能性がありますが、変数名を持つ正当な構文ではありませんそのコンテキスト)。

セマンティックエラーは、言語では合法ですが、意図したアルゴリズムを表すものではありません。たとえば、"1" + nは完全に有効なコードですが、算術加算を行う場合は意味的なエラーがあります。いくつかの意味的エラーは現代のコンパイラによって取り上げられるかもしれませんが、そのようなものはプログラマの意図に依存します。

詳細はwhats-the-difference-between-syntax-and-semanticsの回答を参照してください。

+0

int y = int;意味論的であるか? – user181421

+0

@Sprinter最初の行は意味エラーではないでしょうか? http://www.tutorialspoint.com/compiler_design/compiler_design_semantic_analysis.htm –

+0

これは私が前に似たようなことを読んで以来私が混乱していたものです。 – user181421

関連する問題