어휘와 의미의 두 가지 오류의 차이점은 무엇입니까?어휘 오류와 의미 오류의 구분
int d = "orange";
inw d = 4;
첫 번째가 의미 론적 오류일까요? int에 리터럴을 할당 할 수 없으므로? 둘째로 개별 토큰이 엉망이되어서 어휘가 될 것입니까? 그것이 내 사고 과정이며 잘못된 것일 수 있습니다.하지만 조금 더 이해하고 싶습니다.
어휘와 의미의 두 가지 오류의 차이점은 무엇입니까?어휘 오류와 의미 오류의 구분
int d = "orange";
inw d = 4;
첫 번째가 의미 론적 오류일까요? int에 리터럴을 할당 할 수 없으므로? 둘째로 개별 토큰이 엉망이되어서 어휘가 될 것입니까? 그것이 내 사고 과정이며 잘못된 것일 수 있습니다.하지만 조금 더 이해하고 싶습니다.
실제로는 세 가지 수준의 해석이 있습니다. 어휘, 구문 및 의미입니다. 어휘 분석은 문자 스트링을 토큰으로 바꾸고, 구문 론적으로 토큰을 언어로 된 유효한 문장으로 만들고 의미 론적으로 해석하여 일부 알고리즘을 수행합니다.
첫 번째 오류는 의미 론적입니다. 모든 토큰이 유효하지만 Java에서 문자열 변수를 정수 변수에 할당하는 것은 유효하지 않습니다.
두 번째 오류는 "inw"문자열이 유효한 키워드가 아니므로 구문 변수로 분류 될 수 있습니다 ("inw"는 변수 이름 일 수 있지만 변수 이름을 포함하는 올바른 구문은 아닙니다). 그 문맥).
의미 오류는 언어에서 합법적이지만 의도 한 알고리즘을 나타내지 않을 수도 있습니다. 예 : "1" + n
은 완벽하게 유효한 코드이지만 산술 연산을 수행하려는 경우 의미 오류가 발생합니다. 일부 의미 론적 오류는 현대 컴파일러에 의해 선택 될 수 있지만 이것들과 같은 것들은 프로그래머의 의도에 달려있다.
자세한 내용은 whats-the-difference-between-syntax-and-semantics에 대한 답변을 참조하십시오.
int y = int; 의미 론적일까요? – user181421
@Sprinter 첫 번째 줄이 의미 론적 오류가 아니어야합니까? http://www.tutorialspoint.com/compiler_design/compiler_design_semantic_analysis.htm –
그 전에는 비슷한 것을 읽은 이후로 나에게 혼란을주었습니다. – user181421