2013-06-29 4 views
1

Forth에서 두 문자열을 어떻게 비교합니까?Forth에서 문자열과 문자열을 비교하는 방법은 무엇입니까?

그리고 if 문으로 수행 할 수 있습니까? 아니면 도우미 부울 변수를 만들어야합니까? 지금까지 제가 가지고있는 코드는 다음과 같습니다. 그건 그렇고, [email protected]은 사용자로부터 입력을받는 것입니다.

: var 
compile: VARIABLE 
complile: ; 

: lock 
compile: var realPass$ 
compile: realPass$ "password" ! 
compile: ." Enter Password: " 
compile: var pass$ 
compile: [email protected] pass$ ! 
compile: var match 
compile: realPass$=pass$ match ! Unknown token: realPass$=pass$ 
+1

user2302197 : 어떤 취향을 사용하고 있습니까? –

답변

3

문자열을 비교할 ANSI 단어는 COMPARE (c-addr_1 u_1 c-addr_2 u_2 -- n)입니다. 비교 된 두 개의 문자열이 같으면 n은 0과 같습니다. 일반적으로 Forth는 명시 적 변수를 사용하지 않으므로 스택을 사용하기 때문에 여분의 변수없이 직접 IF을 사용하면됩니다.

: PWCHECK 
    COMPARE 
    IF ." Entry denied." 
    ELSE ." Welcome friend." THEN 
    CR 
; 

S" Hello" ok 
S" Goodbye" ok 
PWCHECK You are not wanted here. ok 
S" Howdy" ok 
S" Howdy" ok 
PWCHECK Welcome friend. ok