게시판 인덱스

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

[숙제 6] 공지사항 및 보충 스펙 (5/6 수정 - ex3 뼈대코드 수정)

 
이 게시판은 잠겼으므로 글을 올리거나, 답변을 하거나 수정을 할 수 없습니다   이 주제는 잠겼으므로 답변을 하거나 수정을 할 수 없습니다     게시판 인덱스 -> 4190.310 Programming Languages (Spring 2022)
이전 주제 보기 :: 다음 주제 보기  
글쓴이 메시지
박규연
Site Admin


가입: 2022년 2월 28일
올린 글: 22

올리기올려짐: 2022년5월4일 13:22    주제: [숙제 6] 공지사항 및 보충 스펙 (5/6 수정 - ex3 뼈대코드 수정) 인용과 함께 답변

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

숙제 6이 올라왔습니다.

내용 : http://ropas.snu.ac.kr/~kwang/4190.310/22/hw6.pdf
제출 : http://ropas.snu.ac.kr/~ta/4190.310/22/submit/index.pl
기한 : 5/13 (금) 밤 12시

* 과제 관련 주의 사항
과제를 제출하기 전에 꼭 주의사항을 확인해 주세요.

* 숙제 스펙 보충사항
(질문은 이 글에 답글로 달지 마시고, 별도의 글로 질문해 주시기 바랍니다)

* K— 언어 문법 및 의미구조
http://ropas.snu.ac.kr/~ta/4190.310/22/document/K_doc/k--.pdf
주의 : 과제 3에서의 K— 언어와 다릅니다.
K— 언어에 대한 설명은 교재에서도 확인 할 수 있습니다. (교재 4.3)
http://ropas.snu.ac.kr/~kwang/4190.310/11/pl-book-draft.pdf


* 뼈대코드
- http://ropas.snu.ac.kr/~ta/4190.310/22/document/SM5_skel.zip
(링크 클릭으로 다운이 진행되지 않을시 브라우저 새 탭에 주소를 입력해 주시기 바랍니다)
- 첫 번째 뼈대코드에는 K—언어와 SM5 언어의 실행기가 제공되어 있습니다.
- 뼈대코드 디렉토리에서 make 명령을 실행하시면 숙제 전체가 컴파일되고, 'run' 이라는 실행파일이 생성됩니다. run 파일을 다음과 같이 실행하시면 입력으로 받은 k— 프로그램을 sm5로 번역하여, sm5 실행기로 실행합니다.

- http://ropas.snu.ac.kr/~ta/4190.310/22/document/Lambda_skel.zip
(링크 클릭으로 다운이 진행되지 않을시 브라우저 새 탭에 주소를 입력해 주시기 바랍니다)
- Exercise 3의 뼈대코드가 업로드 되었습니다.
- Exercise 3의 뼈대코드의 파서가 과제 스펙에 맞게 하나의 알파벳이거나 하나의 알파벳에 '들이 이어진 형태의 변수만 사용할 수 있도록 수정되었습니다. 위 주소에서 다시 다운로드 받으시면 됩니다.



코드:
make
./run examples/test1.k—



README 파일에 테스트에 대한 조금 더 상세한 설명과 구현에 도움이 될만한 추가 옵션들에 대한 설명이 제공되어 있습니다.


——————

Exercise 1 "SM5"

- 뼈대코드 중 translate.ml 파일을 제출합니다. 꼭 주의해 주세요, 엉뚱한 ml 파일을 잘못 제출하시면 해결해 드릴 방법이 없습니다.

- 주석으로 TODO가 표시되어 있는 trans 함수를 완성해서 제출하시면 됩니다. K- 실행기 때와 마찬가지로, 간단한 몇몇 케이스에 대한 구현을 제공해 드리므로 이를 보고 익히셔서, 나머지 부분을 완성하세요.

- "같은 일을 하는" 은 다음과 같이 정의됩니다.
"같은 일을 한다" = "같은 조건에서 실행했을 때 모든 side-effect 의 결과가 같다"
+ "같은 조건" : K—————— 에서의 빈 메모리, 빈 환경 / SM5 에서의 "C만 가지고 있고 나머지 부품은 비어있는 기계상태"
+ "모든 side-effect" : K—————— 에서의 read/write, SM5 에서의 get/put
+ 간단한 예를 들면, K—————— 에서 read 로 3을 받아 write 로 4 를 내놓았다면, SM5 에서는 get 으로 3 을 받아 put 으로 4 를 내놓아야 한다는 것입니다.
그 도중에 일어나는 환경, 메모리의 변화는 "같은 일을 한다" 와 무관합니다.

- 번역 과정에서, K—————— 프로그램에서 사용하는 변수 이름과 겹치지 않는 변수 이름이 필요한 경우가 있습니다. 이를 위해 K—————— 언어에서 사용하는 변수 이름에는 #, @와 같은 특수문자를 사용되지 않는다고 가정하겠습니다.


—————

Exercise 2 "SM5 Limited = SM5 + 메모리 재활용"

- 뼈대코드 중 sm5.ml 파일을 제출합니다. 꼭 주의해 주세요, 엉뚱한 ml 파일을 잘못 제출하시면 해결해 드릴 방법이 없습니다.

- 주석으로 TODO가 표시되어 있는 malloc_with_gc 함수를 완성해서 제출하시면 됩니다. 약간의 코드 틀이 잡혀있으니 참고하시기 바랍니다.

- 메모리 재활용은 malloc을 실행할 때 메모리의 크기가 128 이상이 된 경우 작동합니다. 메모리의 크기는 loc —————> value 엔트리의 개수입니다.
메모리 재활용을 실행하였음에도 불구하고 메모리 크기가 128 미만으로 줄어들지 않았으면, 뼈대코드에 제공된 GC_Failure예외를 내 주세요.

- 수업시간에 배운 GC알고리즘을 구현하는 것이 과제의 의도입니다. 무조건 GC_Failure를 발생시키거나, 적당히 malloc 회수만 세서 GC_Failure를 발생시킨다거나 하는 코드는 0점 처리될 수 있습니다.

- gc_test.ml 파일을 이용하여 간단히 테스트 해볼수 있습니다. gc_test.ml 파일로 main.ml 을 덮어쓰신 다음 make로 컴파일하여 ./run으로 실행하시면 됩니다. 파일 끝에 주석으로 올바른 결과값이 제공됩니다.

—————

Exercise 3 "Lambda Ground"

- 뼈대코드 중 evaluate.ml 을 제출합니다.

- reduce하는 과정이 무한히 계속되는 입력은 채점에 사용하지 않겠습니다. 이러한 입력에 대해서는 자유롭게 처리하셔도 좋습니다. reduce하는 과정이 무한히 계속될 경우, 답이 될 수 있는 표현(lexp)이 여러 개 있을 수 있기 때문에, 위와 같이 결정하였습니다.

- test case는 모호하지 않도록 괄호를 친 인풋을 넣겠습니다. (혹 모호하더라도 조교들이 제공한 파서의 -pp 옵션 결과 기준으로 채점합니다.)

감사합니다.

TA 박규연
e-mail: kypark@ropas.snu.ac.kr
위로
사용자 정보 보기 비밀 메시지 보내기
박규연
Site Admin


가입: 2022년 2월 28일
올린 글: 22

올리기올려짐: 2022년5월6일 12:03    주제: Exercise 3의 뼈대코드 수정 인용과 함께 답변

- Exercise 3의 뼈대코드의 파서가 과제 스펙에 맞게 하나의 알파벳이거나 하나의 알파벳에 '들이 이어진 형태의 변수만 사용할 수 있도록 수정되었습니다. 위 주소에서 다시 다운로드 받으시면 됩니다.
위로
사용자 정보 보기 비밀 메시지 보내기
이전 글 표시:   
이 게시판은 잠겼으므로 글을 올리거나, 답변을 하거나 수정을 할 수 없습니다   이 주제는 잠겼으므로 답변을 하거나 수정을 할 수 없습니다     게시판 인덱스 -> 4190.310 Programming Languages (Spring 2022) 시간대: GMT + 9 시간(한국)
페이지 11

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


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