강동옥
가입: 2009년 9월 18일 올린 글: 602
|
올려짐: 2013년9월30일 13:28 주제: 숙제 3 변경사항 및 스펙 정리 (10/11 13:40 기준) |
|
|
숙제 3에서의 질문/답변과 확정된 스펙을 모아놓은 게시글입니다.
이 글에 댓글로 질문을 하지 말아주세요. (질문은 게시판에 직접)
--
Exercise 1 "K- 실행기"
1) read semantics 구현은 read_int 를, write 는 print_int 를 사용합니다.
write 할 때 마지막에 print_endline 을 넣지 않습니다.
2) write 는 정수일 경우에만 출력하고, 그 외의 경우 예외를 냅니다.
의미 문서의 WRITE 부분에서 e => v 는 e => n 으로, write e => v 는 write e => n 으로 생각하시면 되겠습니다.
3) K.run 의 결과는 출력 대상이 아닙니다. 입출력은 read/write 로만 이루어집니다.
4) callv, callr 에서 부른 인자의 개수와 함수 인자의 개수가 다른 경우 예외를 냅니다.
OCaml 표준 예외인 Invalid_argument 예외를 낼 것을 권장합니다.
5) K- 코드를 해석하는 도중 '정의되지 않은 의미'를 만나면 항상 예외를 냅니다.
따로 본 게시글에 예외 이름을 명시하지 않는 한 모두 뼈대 코드의 Error 예외를 낼 것을 권장합니다.
--
Exercise 2 "K-프로그래밍: 거스름 방법의 수"
1) 10월 4일에 올라온 뼈대에 들어있는 파서 기준으로 코딩해주세요.
(참고:파서파일은 parser.mly입니다.)
2) numch 함수 작성 후 in 안에서 정수를 하나 입력으로 받고(input), numch(input) 을 출력하는 코드까지 작성해 주세요.
예를 들면, 아래와 같은 코드가 나올 수 있습니다.
코드: | let input := 0 in
let proc numch (x) = ... in (
read input;
write (numch(input))
) |
3) numch 함수의 인자로는 양의 정수만 들어온다고 가정하셔도 됩니다.
(양의 정수 아닌 값이 인자로 들어올 경우 자유롭게 처리)
4) 우리나라에는 50원 동전이 있지만 본 숙제에서는 없는 것으로 간주하고 제외합니다.
(문제 스펙을 그대로 따라간다는 뜻)
--
Exercise 3 "K- 프로그래밍: compound data"
1) 10월 4일에 올라온 뼈대에 들어있는 파서 기준으로 코딩해주세요.
(참고:파서파일은 parser.mly입니다.)
2) 구현해야 하는 모든 함수 작성 후 마지막을 in 으로 끝내주세요.
파싱 에러 나는 그대로 제출하시면 됩니다.
3) dft 함수를 작성할 때는 preorder 로 작성해 주세요.
4) bft 함수를 작성할 때는 왼편 자식 트리를 우선으로 계산합니다.
예를 들어, 아래 트리의 bft 순회 순서는 1->2->3 이 됩니다.
-- |
|