이전 주제 보기 :: 다음 주제 보기 |
글쓴이 |
메시지 |
송호준
가입: 2018년 9월 21일 올린 글: 10
|
올려짐: 2018년12월8일 9:23 주제: hw 7-2 질문 |
|
|
1. removeExn 함수 내에서는 eval 을 사용하면 안되는 건가요?
2. #이나 @같은 문자들은 입력으로 안 들어온다고 가정해도 될까요?
3. 혹시 조금이라도 힌트를 주실 수 있나요? 도저히 감이 안 잡힙니다..
감사합니다. |
|
위로 |
|
|
김태범
가입: 2018년 9월 11일 올린 글: 6
|
올려짐: 2018년12월8일 16:26 주제: 아마... |
|
|
저도 어떻게 하는지 감이 안 잡혀서
관련 키워드로 검색을 마구 해보다가
교수님께서 98년에 쓰신
https://pdfs.semanticscholar.org/d657/86972b3d867ef86ef2d0b7820c00fdc29187.pdf
이 논문을 찾았습니다.
이 논문이 다루는 게 source program을 cps 변환을 이용해서 handle과 raise syntax를 continuation catching and throwing expression으로 바꾼다고 적혀있어서
아마 이걸 읽으면서 구현을 해보면 되는 것 같은데
구현이 헷갈리네요 ...ㅠㅠ
아무튼 여기서 제시하는 아이디어는 일반 실행(?) continuation과 exception handle하는 continuation을 같이 넘겨주는 것 같아요
논문 상에서 뒤에 복잡하게 나오는 Selective CPS Transformation까지 갈 필요는 없는 것 같고 4페이지에 있는 Figure 6 참고하면서 이해하고 구현하면 되는 것 같아요 |
|
위로 |
|
|
송호준
가입: 2018년 9월 21일 올린 글: 10
|
올려짐: 2018년12월8일 16:52 주제: 압도적.. 감사..! |
|
|
정말 감사합니다..
CPS를 활용해야 할줄은 몰랐네요
감사합니다! |
|
위로 |
|
|
배요한 Site Admin
가입: 2018년 3월 6일 올린 글: 107
|
올려짐: 2018년12월10일 10:58 주제: |
|
|
1.xexp.ml에 있는 value타입이나 eval 함수를 사용하시면 안됩니다. 또한 따로 직접 구현해서 사용하는 것도 안됩니다.
프로그램을 미리 실행해서 결과를 살펴보는 것을 허용한다면, 극단적으로 프로그램 전체를 실행해서 나온 정수 결과값으로 프로그램을 번역하면 될 것입니다. (예 : 프로그램 실행시, 정수 n이 나오면 "Num n"으로 번역)
이런 방식이 가능한 것은 xexp 프로그램이 사용자와 입출력을 주고받지 않으며 항상 같은 결과를 내놓기 때문입니다. 언어에 입출력 요소가 들어가면 이런 방식은 통하지 않습니다.
이번 숙제의 목표는 예외 처리 설탕을 녹이는 일반적인 방법을 배우는 것이기 때문에 프로그램을 실행해보지 않고 번역하는 방법을 고민해 보시길 바랍니다.
2.가정하시면 안됩니다. 이번 숙제는 해당 조건은 제공해 드리지 않습니다.
입력으로 들어온 프로그램을 alpha conversion을 하고 번역을 시작하면, 이름이 겹치지 않도록 보장할 수 있습니다.
6-2 CPS 변환 과제의 뼈대코드에서 제공해 드린 코드를 참고해 보시길 바랍니다.
3. 김태범 학생이 제대로 설명하였습니다.
TA 이동권
e-mail: dklee@ropas.snu.ac.kr
TA 배요한
e-mail: yhbae@ropas.snu.ac.kr |
|
위로 |
|
|
|