2009-11-19 4 views
0

연습용 1-24, K & R2의 코드를 작성 중이며 기본 구문 디버거를 작성해야합니다. 구문 오류

나는

/" text " 

같은 코드는 코드에서 허용되는 경우

그래서 내가 궁금하네요 ... squote 등 정상적인 상태, dquote와 파서를 만들어? 이 오류를 오류로보고해야합니까? (문제는 내 파서가 / 뒤에 comment_entry 상태로 들어가고 "을 무시합니다.)

+0

주석은'/ *'로 시작하지 않아야합니까? –

+0

부서에 왼쪽 피연산자가 있어야하지 않습니까? – mouviciel

답변

3

단일 /은 나누기를 의미하기 때문에 주석으로 해석되어서는 안됩니다. 문자열에 대해 정의 된 나눗셈 연산자가 없기 때문에 "abc"/"def"과 같은 것은 의미가 없지만 구문 오류가 있어서는 안됩니다. 이 구분이 가능한지 알아내는 것은 파서가해서는 안되지만 편집의 나중 단계에서 결정해야합니다.

2

구문 상 유효하지만 의미 상으로는 유효하지 않습니다. 이 연산자는 나누기 연산자와 문자열 리터럴로 구문 분석해야합니다. 문자열 리터럴로 항목을 나눌 수 없으므로 전체 코드가 아닙니다.

설명은 두 자리 문자 토큰 /*으로 시작하고 */으로 끝납니다.

0

독립형 구문 요소로서 오류로보고해야합니다. (당신이 포인터를 통해 나눌 수 없음) 또한 잘못

a= b /"text"; /a = b divided through address of string literal "text" 

를 작성

이론적으로는 (표현의 일부로서)이 가능하다.

그러나 표면적으로는 구문 적으로 해석 할 수 있기 때문에 괜찮아 보일 수 있습니다 : 가변 연산자 변수 연산자 상수 표현식 (문자열 주소).

실제 오류는 구문 분석의 더 깊은 상태 (즉, 주어진 유형이 나누기 연산자에 적합한지 확인하는 경우)에 잡힐 것입니다.