2010-12-10 3 views

답변

11

x+++++yx ++ ++ + y으로, x ++ + ++ y으로는 분석되지 않습니다. Maximal Munch principle에 따르면 "토크 나이 것은 의미 생산을 중단하기 위해 현재의 토큰을 한 번 더 문자를 원인 추가 될 때까지 소스 파일에서 문자를 읽어 유지해야"

x++ ++ +y (C 및 C++에서) 컴파일되지해야 후행 증가 연산자 때문에 ++lvalue을 인수로 사용하고 rvalue을 반환합니다.

+0

이것은 욕심 많은/가장 긴 일치를 사용하는 모든 언어에 해당됩니다 토큰 화에 대한 정규 표현식 - 대부분이되어야합니다 (실제로는 그렇지 않습니다). – delnan

+0

* "'x ++ ++ + y'는 컴파일해서는 안됩니다. * 그리고 실제로는 (gcc에) :'error : incremental 피연산자가 필요합니다 .' 와우는 그것을보기 위해 안심했습니다. –

+0

불행히도 '++++++++++'의 모든 형식이 호환되지 않는 것은 아닙니다. MSVC는 적어도 행복하게 그들 중 일부를 받아 들인 다음 WTF가 그걸로 무엇을 알고 있는지 않습니다. 인턴에게는 언제나 할 수있는 작은, 사내 유용이 있습니다 (내 결정이 아님). 그것은 그 곳의 모든 것의 똥을 가지고 있습니다. –