2013-05-10 2 views

답변

8

++는 자바 렉서에 대한 유효한 토큰이기 때문에, x+++ ++y 같이 토큰으로 구문 분석됩니다 문 :

(x)(++)(++)(+)(y) 

위를 : x+++++y 반면

(x)(++)(+)()(++)(y) 

이 무효로 토큰 화됩니다 ++ 연산자는 (x++)의 결과가 아닌 숫자 변수에만 적용될 수 있기 때문에 잘못된 java입니다. 이러한 유형의 토큰 화는 maximal munch이라는 개념의 좋은 예입니다. JLS section 3.2

에서

은 가능한 가장 긴 번역 결과가 궁극적으로있는 동안 다른 어휘 번역 것 올바른 프로그램을하지 않는 경우에도, 각 단계에서 사용된다.

따라서 입력 문자 a - b는 토큰 화 a, -, -, b가 가능할지라도 문법적으로 올바른 프로그램의 일부가 아닌 a, -, b로 토큰 화됩니다 (§3.5). 문법적으로 올바른 프로그램의 일부.

+0

고맙습니다. – DSF

관련 문제