게시판 인덱스

 
 FAQFAQ   검색검색   멤버리스트멤버리스트   사용자 그룹사용자 그룹   사용자 등록하기사용자 등록하기 
 개인 정보개인 정보   비공개 메시지를 확인하려면 로그인하십시오비공개 메시지를 확인하려면 로그인하십시오   로그인로그인 

[숙제 3] 공지사항 및 보충 세부사항 안내드립니다.

 
글 쓰기   답변 달기     게시판 인덱스 -> 4190.310 Programming Languages (Spring 2024)
이전 주제 보기 :: 다음 주제 보기  
글쓴이 메시지
이재호
Site Admin


가입: 2022년 3월 6일
올린 글: 126

올리기올려짐: 2024년3월27일 16:31    주제: [숙제 3] 공지사항 및 보충 세부사항 안내드립니다. 인용과 함께 답변

안녕하세요 수강생 여러분,

숙제 3에 대한 공지사항 및 보충 세부사항을 안내해드리겠습니다.
안내사항이 많으나 주의해서 읽어주세요 🙂

내용 : http://kwangkeunyi.snu.ac.kr/4190.310/24/hw3.pdf
제출 : http://ropas.snu.ac.kr/~ta/4190.310/24/submit/index.pl
기한 : 4/5 밤 11시 59분 59초

제출 페이지에서 학번을 아이디로 하여 가입(register)하신 다음, 해당 계정으로 로그인하여 숙제를 제출하시면 됩니다. 가입 기간은 4/15까지입니다.


# 과제 관련 주의 사항
과제를 제출하기 전에 꼭 주의사항(https://ropas.snu.ac.kr/phpbb/viewtopic.php?t=7286)을 확인해 주세요.


# K-- 언어 문법 및 의미 구조
http://ropas.snu.ac.kr/~ta/4190.310/24/show/K--.pdf

# 뼈대 코드
* http://ropas.snu.ac.kr/~ta/4190.310/24/show/k__.zip (다운로드 문제 발생시 브라우저 새 탭에 주소를 입력해 주시기 바랍니다)
* 뼈대 코드에는 K-- 언어로 짜여진 프로그램을 읽어들이는 파서, K-- 언어의 정의 및 실행기의 뼈대가 들어있습니다. k.ml 파일에서 TODO 로 표시해 둔 부분을 완성하여 실행기를 완성하시기 바랍니다.
* 뼈대 코드에는 여러분이 숙제를 쉽게 하실 수 있도록 보조 모듈과 보조 함수들에 제공됩니다.
* 뼈대 코드는 dune 빌드 시스템을 사용해서 작성되었습니다. `dune build --release`를 실행하면 컴파일이 되고, `_build/default/bin` 아래 `main.exe` 실행 파일이 생성됩니다. (UNIX에서도 마찬가지로 `main.exe`이니 착오 없으시길 바랍니다.)
이렇게 만들어진 `main.exe`를 실행하여 `examples` 디렉터리에 있는 예제를 실행기로 돌려볼 수 있습니다.
코드:

dune build --release
./_build/default/bin/main.exe examples/test1.k--


또한 예쁘게 K-- 코드를 정리하는 기능도 있습니다:
코드:

./_build/default/bin/main.exe -pp examples/test1.k--


`--release`를 붙여서 빌드를 하는 이유는, 아직 사용이 안 된 변수들이 있기 때문입니다. 과제를 완료하시고 모든 변수를 빠짐없이 사용하면 `--release` 플래그 없이도 컴파일이 문제없이 진행될 것입니다.

* 과제를 하실 때, 다른 쉘에서
코드:

dune build --release --watch

를 실행하면, 코드를 변경하실 때마다 자동으로 빌드가 진행됩니다. 이에 따라 편집기에서 실시간으로 타입 정보 등의 정보를 제공받을 수 있으니 유용하게 사용하세요.

* Dune을 사용해 바로 실행을 할 수도 있습니다:
코드:

dune exec --release k__ examples/test1.k--
dune exec --release k__ -- -pp examples/test1.k--


# 보충 세부사항
(이 글에 답글로 질문하지 말아 주세요. 별도의 게시글로 질문해 주시기 바랍니다!)

## Exercise 1 "K-- 실행기"

* 제출 시에는 뼈대 코드 중 k.ml 파일만 제출합니다. 꼭 주의해 주세요. 엉뚱한 ml 파일을 잘못 제출하시면 조교팀이 해결해 드릴 방법이 없습니다.

* 타입이 다른 두 값이 같은지 비교할 경우 결과는 `false`입니다(타입 에러가 아닙니다). 두 값의 대소를 비교할 경우 둘 다 정수 값이 아니면 타입 에러입니다.

* read의 실행의미 구현에는 `read_int`를, write의 구현에는 `print_endline (string_of_int n)`을 사용하는 것으로 합니다.
즉, hw3.pdf 에 설명된 대로 정수를 출력한 다음에 개행 문자(newline)를 출력해야 합니다.
마침 숙제의 감을 잡으실 수 있도록 뼈대 코드에 read와 write의 실행 의미를 정의해 두었으므로, 이 정의를 그대로 두시면 되겠습니다.

* K.run 의 결과는 출력 대상이 아닙니다. 입출력은 read/write 로만 이루어집니다.

* 실행 의미 규칙이 정의되지 않은 경우 Error 예외를 발생시킵니다. 몇몇 구체적인 상황과, 각각의 경우 Error 예외의 문자열은 다음과 같이 정하겠습니다.

(1) 타입 에러: 정수 값이 와야 하는 곳에 하는데 참/거짓(bool) 값이 나오거나, 그 반대의 경우

코드:
raise (Error "TypeError ...")



TypeError 뒤에 추가적인 정보를 더 붙이셔도 됩니다. 예를 들어 아래와 같이 쓸 수 있습니다.

코드:
Error "TypeError : not int"
Error "TypeError : boolean is expected"


채점 시에는 스트링의 앞글자들만 매칭할 것이므로 모두 정답으로 인정됩니다.


(2) Bind되지 않은 변수가 사용되는 경우

코드:
raise (Error "Unbound")



그 외에 실행의미가 정의되지 않은 경우에 대해서는, Error 예외의 문자열은 자유롭게 사용하시면 됩니다.

* 어느 예외가 먼저 발생해야 하는지 모호한 경우는 테스트하지 않겠습니다. 숙제 문서의 실행 의미 정의만으로는 어떤 예외가 우선시되는지 판단하기 애매하므로, 이런 경우는 테스트하지 않을 것입니다.

* 메모리는 리스트로, 환경은 함수로 구현이 되어 있습니다. 그러나 `MEM`과 `ENV` 시그니처에 맞게 구현을 하신다면 이미 제공해드린 `Mem` 및 `Env` 모듈 대신 사용하셔도 됩니다.


감사합니다.

조교 드림

TA 이재호
e-mail: jhlee@ropas.snu.ac.kr
위로
사용자 정보 보기 비밀 메시지 보내기 이메일 보내기 글 올린이의 웹사이트 방문
이전 글 표시:   
글 쓰기   답변 달기     게시판 인덱스 -> 4190.310 Programming Languages (Spring 2024) 시간대: GMT + 9 시간(한국)
페이지 11

 
건너뛰기:  
새로운 주제를 올릴 수 없습니다
답글을 올릴 수 없습니다
주제를 수정할 수 없습니다
올린 글을 삭제할 수 없습니다
투표를 할 수 없습니다


Powered by phpBB 2.0.21-7 (Debian) © 2001, 2005 phpBB Group
Translated by kss & drssay