2012-04-30 1 views
11

왜이 누락 괄호는 무시합니까?컴파일러가 종료 명령의 누락 괄호를 무시합니다.

function Test: Boolean; 
begin 
    Exit(True; // <-- eek! it compiles... 
end; 

내 코드 중 일부가 발견되어 처음으로 델파이가 내 장치를 무시한다고 생각했지만이 유형의 구문 오류는 무시합니다. 이제 당연히 왜 그런지 알고 싶습니다.

+5

이것은 컴파일러의 버그와 같습니다. –

+0

XE2 업데이트 4와 동일합니다. 오류 인사이트가 표시합니다. –

+0

내 생각에 함수에 아무것도 포함되어 있지 않기 때문에 함수 자체를 무시합니다. 종료 전에 일부 코드를 추가하십시오. – CyprUS

답변

1

Exit은 그 자체로 토큰으로 간주되며, Exit은 (어쨌든 그러한 명령을 실행할 수 없으므로) 컴파일러에서 무시됩니다.

+0

'Exit (True;) 다음에 명령어를 추가하면 컴파일러가 "E2066 연산자 또는 세미콜론 누락"(Delphi XE)으로 불평합니다. –

+0

세미콜론이 컴파일러에서 다음 명령어를 컴파일하려고 시도하기 때문에 이것이 발생한다고 생각합니다. – LaKraven

+0

필자는 본질적으로 'Exit'는 "절대"토큰이며 컴파일러가 동일한 명령문에서 후속 문자가 무시 될 때까지 세미콜론의 다음 항목이 표시 될 때까지 무시하도록 지시합니다. It 's 기발한 것, 확실히 ... 그리고 흥미있는 발견! – LaKraven

0

아마도 컴파일러는 중 하나라고 생각하고있을 것입니다. 1. Exit가 단독으로 또는 입니다. 2. 괄호()가있는 Exit가 있습니다. # 2를 찾지 못하면 # 1로갑니다.

관련 문제