이전 주제 보기 :: 다음 주제 보기 |
글쓴이 |
메시지 |
공순호
가입: 2005년 9월 29일 올린 글: 363 위치: 302동 312-2호
|
올려짐: 2009년3월28일 10:42 주제: 숙제 4에 대해서 알려드립니다. - 기계 상태에 관한 내용이 추가되었습니다. |
|
|
숙제 4가 공지되었습니다.
http://ropas.snu.ac.kr/~kwang/4541.664A/09/hw4.pdf
기한은 4월 8일 수요일 자정까지 입니다.
--------------------------------------------------------------
숙제를 위한 파서를 조교가 작성하고 있습니다.
완료되면 게시판을 통해서 공개하도록 하겠습니다. _________________ - soon@ropas
공순호 가 2009년4월9일 13:11에 수정함, 총 4 번 수정됨 |
|
위로 |
|
|
공순호
가입: 2005년 9월 29일 올린 글: 363 위치: 302동 312-2호
|
올려짐: 2009년3월31일 15:45 주제: 뼈대가 올라왔습니다. |
|
|
문제 4-1의 파서를 포함한 뼈대를 공개합니다.
+ http://ropas.snu.ac.kr/~ta/4541.664A/09/4-1.linux.zip
+ http://ropas.snu.ac.kr/~ta/4541.664A/09/4-1.windows.zip
* 컴파일
linux에는 make 파일이, windows에는 batch 파일이 각각 들어있습니다.
이것을 이용하시면 됩니다.
* 실행방법
linux에서는 ./main.native < test.k
windows에서는 main.exe < test.k
라고 하시면 예제 코드인 test.k를 파싱하여서 출력한 것을 확인할 수
있습니다. pretty print는 선물로 간단하게 짜서 넣어두었습니다. 필요에
따라 수정하셔도 좋습니다.
* 여러분의 몫
+ 여러분이 하실 일은 k.ml에 있는 3개의 함수를 완성하시는 것입니다.
+ 문제 pdf에 명시되어 있지 않은 traces, states, pointstates의 타입이
뼈대에 정의되어 있습니다. 이 타입은 기계 상태가 메모리임을
가정하고 있습니다. 여러분은 메모리를 포함하는 기계 상태를
정의하시고 해당하는 3개의 함수를 구현하시면 됩니다.
+ main.ml을 고치시면 test를 하실 수 있습니다. 현재는 파싱해서 출력하는
일을 수행하고 있습니다.
* 제출하실 것
완성된 k.ml만을 제출하시기 바랍니다.
* Memory 사용법
Memory module의 정의가 memory.ml안에 들어있습니다.
+ Memory.bind x v m : 메모리 m을 받아서 x라는 변수에 v라는 값이 추가된
새로운 메모리를 돌려줍니다.
+ Memory.lookup x m : 메모리 m을 받아서 변수 x에 있는 값을 돌려줍니다.
값이 없는 경우에는 exception이 발생됩니다.
+ Memory.equal m1 m2 : 메모리 m1과 메모리 m2가 같은 메모리인지를
돌려줍니다.
+ Memory.string_of_memory m : 메모리 m의 현재 상태를 string으로
변환해서 돌려줍니다.
* MemorySet의 이용방법
OCaml에 정의된 set library의 이용방법과 동일합니다.
다음을 참조하세요.
http://caml.inria.fr/pub/docs/manual-ocaml/libref/Set.Make.html _________________ - soon@ropas
공순호 가 2009년4월5일 8:57에 수정함, 총 3 번 수정됨 |
|
위로 |
|
|
공순호
가입: 2005년 9월 29일 올린 글: 363 위치: 302동 312-2호
|
올려짐: 2009년3월31일 16:15 주제: |
|
|
* K 언어로 프로그래밍을 하실 때에 ( )을 이용하실 수 있습니다.
* cmd와 exp에 대해서 동일하게 ( )를 이용하실 수 있습니다. _________________ - soon@ropas |
|
위로 |
|
|
공순호
가입: 2005년 9월 29일 올린 글: 363 위치: 302동 312-2호
|
올려짐: 2009년3월31일 20:23 주제: |
|
|
* Memory module의 string_of_memory 함수의 구현에 문제가 있어서 수정하였습니다. 새롭게 다운받으시거나, memory.ml 파일의 해당 부분을
코드: |
let string_of_memory m =
if
M.is_empty m then "Empty"
else
M.fold (fun k v str-> str^k^" : "^(Value.string_of_value v)^"\n") m ""
|
과 같이 수정하시기 바랍니다. _________________ - soon@ropas |
|
위로 |
|
|
공순호
가입: 2005년 9월 29일 올린 글: 363 위치: 302동 312-2호
|
|
위로 |
|
|
임경영
가입: 2009년 4월 5일 올린 글: 27
|
올려짐: 2009년4월7일 2:29 주제: 조교님께 질문! |
|
|
memory 사용을 해보려고 계속 삽질 중인데 생각보다 어렵네요;;
바로바로 코딩할때는 type이 표시되니까 어렵지 않게 끼워맞출수 있었는데
한꺼번에 코딩해서 결과만 나오는 방식으로 코딩하니
memory를 어떻게 사용하는지도 모르겠네요;
k.ml에서
let test1 = Memory.bind "x" (Value.INT 3) Memory.empty
를 수행해서 x에 3을 넣는 memory를 보고 싶은데
이런식으로 사용하는게 맞는지 궁금합니다.
메모리를 string으로 바꿔서 보면 x:INT(3) 으로 나오는데 이게 맞는지도 궁금하구요 ^^;; |
|
위로 |
|
|
공순호
가입: 2005년 9월 29일 올린 글: 363 위치: 302동 312-2호
|
올려짐: 2009년4월7일 10:53 주제: |
|
|
임경영 씀: | 바로바로 코딩할때는 type이 표시되니까 어렵지 않게 끼워맞출수 있었는데
한꺼번에 코딩해서 결과만 나오는 방식으로 코딩하니
memory를 어떻게 사용하는지도 모르겠네요; |
compile 하실 때에 -i 옵션을 주면 정의된 모든 이름들과 그것들의 type을 출력하도록 할 수 있습니다. 따라서 다음과 같이 하면 더 많은 정보를 볼 수 있겠네요.
단, k.cmo를 만들기 위해서는 {value, memory, memoryset} 들이 이미 compile되어 있어야 합니다.
임경영 씀: |
ml에서
let test1 = Memory.bind "x" (Value.INT 3) Memory.empty
를 수행해서 x에 3을 넣는 memory를 보고 싶은데
이런식으로 사용하는게 맞는지 궁금합니다. |
맞습니다.
임경영 씀: |
메모리를 string으로 바꿔서 보면 x:INT(3) 으로 나오는데 이게 맞는지도 궁금하구요 ^^;;
|
맞습니다. _________________ - soon@ropas |
|
위로 |
|
|
박창규
가입: 2009년 3월 17일 올린 글: 4
|
올려짐: 2009년4월8일 19:16 주제: |
|
|
테스트해보다가 깜짝놀라 글 남겨요^^;;;
기본적으로 제공되는 test.k가 다음과 같은데,,,
인용: | if x x:= 1; x:=2 y := x |
제 경우 x는 ASSIGN이 되어있지 않은 변수이므로 Memory상에 없기 때문에 Not_found 예외를 발생시키는데요,,
기본적으로 제공되는 예제가 위와 같다는 것은 ASSIGN되어있지 않은 변수 역시 사용 가능해야 한다는 것을 뜻하는것인가요? |
|
위로 |
|
|
고윤석
가입: 2008년 9월 26일 올린 글: 11
|
올려짐: 2009년4월8일 20:32 주제: 주어진 테스트코드는.. |
|
|
아마 의미없는 코드가 아닐까 합니다.
실제로 binding되지 않은 변수를 사용하였으므로 exception처리하시는게
옳을줄로 아뢰옵니다. _________________ ysko |
|
위로 |
|
|
공순호
가입: 2005년 9월 29일 올린 글: 363 위치: 302동 312-2호
|
올려짐: 2009년4월8일 23:03 주제: |
|
|
박창규 씀: | 제 경우 x는 ASSIGN이 되어있지 않은 변수이므로 Memory상에 없기 때문에 Not_found 예외를 발생시키는데요,,
기본적으로 제공되는 예제가 위와 같다는 것은 ASSIGN되어있지 않은 변수 역시 사용 가능해야 한다는 것을 뜻하는것인가요? |
인용하신 프로그램은 의미 없는 프로그램입니다.
Not_found 예외를 발생시킨다고 하셨는데,
숙제의 결과 함수들이 발생하는 예외는 k.ml에 정의된 Error 예외만을 사용하시기 바랍니다. _________________ - soon@ropas |
|
위로 |
|
|
|