이전 주제 보기 :: 다음 주제 보기 |
글쓴이 |
메시지 |
선동성
가입: 2014년 9월 3일 올린 글: 8
|
올려짐: 2014년11월11일 21:26 주제: hw 5-2 테스트케이스 |
|
|
맞춰봐요
ocaml -init sm5.ml
으로 돌리면 됩니다.
메모리는 3이라고 가정했습니다.(3개까지 할당 가능)
코드: |
open Sm5;;
let getval a = [MALLOC;BIND(a);PUSH(Val(Z(0)));PUSH(Id(a));STORE];;
let gettopval a = [MALLOC;BIND(a);PUSH(Id(a));STORE];;
let maker a = [UNBIND;UNBIND;BOX 2;MALLOC;BIND a;PUSH(Id a);STORE];;
let v3 = (getval "A")@(getval "B")@(getval "C") ;;
//no error
let v4 = v3@(getval "D") ;;
//error
let z = v3@(maker "R") ;;
//error
let rec = (getval "A")@(getval "B")@(maker "E") ;;
//no error
let base = [MALLOC;BIND "A";MALLOC;BIND "B";MALLOC;BIND "C"];;
let t a b = [PUSH(Id a);BIND (a^b);UNBIND;BOX 1;PUSH(Id b);STORE];;
let r2 = base@(t "A" "B")@(t "B" "C") ;;
//no error
let loop = r2@(t "C" "A")@(getval "D") ;;
//error
let s = v3@[UNBIND;UNBIND;BOX 2]@(getval "D") ;;
//error
let u = rec@[UNBIND;POP]@(getval "D") ;;
//no error
let f = u@(getval "E")@(getval "F")@(getval "G");;
//error
let ktest = (getval "A")@(getval "B")@
[PUSH(Fn("x",(getval "F")));PUSH(Val(Z(0)));MALLOC;CALL];;
//error
|
|
|
위로 |
|
 |
김찬민
가입: 2010년 9월 6일 올린 글: 81
|
올려짐: 2014년11월11일 23:10 주제: |
|
|
OCaml 4.01.0을 사용했는데, let rec = 부분에서 컴파일 에러가 납니다. rec 대신 recs 같은 다른 이름을 사용하면 다 같은 답이 나옵니다.
테스트를 위해 추가로 사용한 코드
코드: |
Sm5.run v3;;
Sm5.run v4;;
Sm5.run z;;
Sm5.run recs;;
Sm5.run r2;;
Sm5.run loop;;
Sm5.run s;;
Sm5.run u;;
Sm5.run f;;
Sm5.run ktest;;
|
테스트 케이스 감사합니다.
김찬민 가 2014년11월11일 23:22에 수정함, 총 1 번 수정됨 |
|
위로 |
|
 |
오평석
가입: 2014년 10월 17일 올린 글: 8
|
올려짐: 2014년11월11일 23:18 주제: |
|
|
테스트케이스 감사합니다  |
|
위로 |
|
 |
|