2016-09-16 2 views
1

어휘와 의미의 두 가지 오류의 차이점은 무엇입니까?어휘 오류와 의미 오류의 구분

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

첫 번째가 의미 론적 오류일까요? int에 리터럴을 할당 할 수 없으므로? 둘째로 개별 토큰이 엉망이되어서 어휘가 될 것입니까? 그것이 내 사고 과정이며 잘못된 것일 수 있습니다.하지만 조금 더 이해하고 싶습니다.

답변

1

실제로는 세 가지 수준의 해석이 있습니다. 어휘, 구문 및 의미입니다. 어휘 분석은 문자 스트링을 토큰으로 바꾸고, 구문 론적으로 토큰을 언어로 된 유효한 문장으로 만들고 의미 론적으로 해석하여 일부 알고리즘을 수행합니다.

첫 번째 오류는 의미 론적입니다. 모든 토큰이 유효하지만 Java에서 문자열 변수를 정수 변수에 할당하는 것은 유효하지 않습니다.

두 번째 오류는 "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

관련 문제