0
를 생략 할 수있는 경우 나는 그런 표현이 인식 :더 표현의 실행이
(a and b or c) and d
나는 그것이 이해가되지 않습니다 더 실행의 인식 할 방법을. 이 의미는 (a and b or c)
복귀 후 거짓 거짓이 될 것입니다 전체 표현식 렸기 때문에 외부 가장 (...) and d
을 수행하지 않습니다
a = 0, b = 1, c = 0, d = 1
예를 들어.
그래서 표현식을 분석하고이를 기반으로 전체 표현식에서 실행이 중요하고 필요한 경우 추가 실행을 건너 뛰는 표현식 부분을 찾습니다. 부울의 오른쪽 피연산자를 평가하지 않는
ld a
ld b
and
ld c
or
jmpf outOfQuery ;;jump if false
ld d
and
outOfQuer:
일반적으로'and' 및'or' 연산자는 간단히 조건 분기로 컴파일됩니다 ('x와 y' ==='x이면 y 거짓,'x 또는 y' ==='x then else'y'),'and'or'or'명령이 아니다. – sepp2k
스칼라 비교에서는 괜찮습니다.하지만 'a, b, c 또는 d'가 표현식이면 짧은 순환과 함께 지연 또는 지연 평가를 검토하는 것이 좋습니다. –
1. 이유는 무엇입니까? 2. @ sepp2k, 답장으로 의견을 기재 할 수 있습니까? 내가 찾고있는 것이기 때문에 귀하의 답변을 해결책으로 표시하고 싶습니다. 대답은 단락 중입니다. – Puchacz