2014-10-18 3 views

답변

0

"그냥"구문 오류입니다. 구문은 합법적 인 내용을 알려주며 그렇지 않습니다.

사람들은 특수한 종류의 구문 오류에 대해 이야기하고 잘못된 형식의 토큰 또는 어휘가 있다고 말합니다. 그러나 이것은 내부의 컴파일러와 관련된 세부 사항입니다.

이 코드를 작성한 경우 입니다. 실수는 컴파일러가 아니며 실수입니다.

+1

어디에서 합법적이지 않은 것을 알고 있습니까? – Ingo

+0

언어 참조 설명서를 확인하십시오. (나는 OP가 "C"를 의미한다고 가정한다. 왜냐하면 그는 C에서 주로 유효하고 C는 널리 쓰이는 것을 쓰고있는 것처럼 보이기 때문이다.) –

+0

@IraBaxter C에서 이것은 어휘 오류 일 것입니다. 구문 오류가 아닙니다 (두 번째 문장에서 동의합니다. 그래서 첫 번째 문장에서 달리 주장하는 이유를 모르겠습니다). – sepp2k

2

아니요.

누가이 구문이 유효하지 않습니까?

귀하의 정의에 따라 다릅니다.

예를 들어, 당신은 흔적 만 문자열 리터럴을 기술. 그 다음은 어휘 오류가 될 것 "처럼 쌍으로 발생할 수있는 '것으로 정의 할 수있다.

OTOH을,`처럼, 몇 가지 미리 정의 된 중위 연산자가 될 수 *. 그러면 표현식의 왼쪽이 없기 때문에 문법 오류가 발생합니다.

또는`정수에서 단항 연산자 일 수 있습니다. 그렇다면 유형 오류 일 수 있습니다. 분명히 char입니다.

+0

OP 질문에 대해 합리적인 가정을 할 수 있습니다. –

+0

@IraBaxter 또는 질문 한 것처럼 대답 할 수 있습니다. 일부 언어에 상관없이 사전 정의되고 고정 된 부동어 경계가 구문과 구문 오류 사이에 있음을 OP가 생각할 가능성이 매우 높습니다. 또한 Java를 사용할 수도 있습니다. 또는'char a = a'와 같은 정의가 적어도 의미가있는 하스켈. – Ingo

0

backtick 또는 backtick 다음에 문자가 유효한 토큰이면 해당 언어는 구문 오류입니다 ("backtic k 다음에 식별자가 오는 "은 실제로 실제로는 언어로 구문 적으로 유효한 표현식입니다.

언어에 역 따옴표 또는 역 따옴 기호와 문자 토큰이 없으면 어휘 오류입니다.

귀하의 언어 (백틱, 문자, 역 따옴표)를 사용하여 문자 리터럴에 백틱을 사용하는 경우 문자 리터럴이 닫혀 있지 않기 때문에 어휘 오류가 발생합니다.

0

이것은 어휘 에러입니다.


문자

정규 표현식이 될 수 '((\) |. [^ \'])가 ','Z '이 원하는 문자를 받아


' ',' \ t ','\ n '.

렉서가 작은 따옴표의 시작 또는 끝을 찾지 못하면 어휘 오류가 발생합니다. a 또는 = 또는 'a'또는; 인 경우 구문 오류가 발생했습니다. 위의 표현에서 빠졌습니다.