게시판 인덱스

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

[숙제 6] 재귀함수 처리 질문

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



가입: 2026년 3월 10일
올린 글: 3

올리기올려짐: 2026년5월13일 8:39    주제: [숙제 6] 재귀함수 처리 질문 인용과 함께 답변

안녕하세요, 수강생 박지호입니다.
숙제 6의 translator 구현 시 재귀함수 처리 방법에 관해 질문드립니다.

K- 언어는 CALLV와 CALLR에서 함수 `sigma(f) = p = <x, e', sigma'>`을 호출할 때,
`e'`를 `sigma'{f -> p}`에서 실행하는 방식으로 재귀함수를 지원하고 있습니다.
그런데 제공된 SM5에서는 이러한 과정이 별도로 없는 것 같아 이를 어떻게 처리하면 좋을지 여쭤보고 싶습니다.

제공된 정의 상에서 재귀함수를 처리하기 위한 몇 가지 방법을 생각해 보았지만, 전부 불가능한 것 같습니다.
- K- 실행기와 마찬가지로 호출 시 환경에 `f`를 추가로 정의하는 방법: `call` 커맨드 실행 시 환경이 `E'`으로 설정되는데, 이를 추가로 조작할 방법은 없는 것 같습니다.
- Closure `E'`에 `f`를 정의하는 방법: `(x, C', E')` 값을 처음 만드는 방법은 `push (x, C')` 커맨드밖에 없는데, 이때 `E'`에는 현재 `E`가 사용됩니다. 그런데 `push(x, C')`를 하지 않고는 `E(f)`을 정의할 수 없어 어려울 것 같습니다.
- Closure `C'` 초반에 `f`를 정의하는 커맨드를 삽입하는 방법: 이 경우 `LETF`를 번역하기 위해 또다시 `LETF`의 번역문이 필요한 구조가 되어 무한루프가 발생하게 될 것 같습니다.
코드:

| K.LETF (f, args, e1, e2) ->
 [ Sm5.PUSH (Sm5.Fn ("#arg", trans K.LETF (f, args, e1, e1))) ] @ ...


감사합니다
박지호 드림
위로
사용자 정보 보기 비밀 메시지 보내기
안중원
Site Admin


가입: 2023년 3월 13일
올린 글: 76

올리기올려짐: 2026년5월13일 12:33    주제: 인용과 함께 답변

안녕하세요, 프로그래밍 언어 조교 안중원입니다.

재귀함수의 번역은 이번 과제에서 가장 어려운 부분 중 하나입니다.

거시적인 수준에서 힌트를 드리자면, K-와 SM5의 기능들은 당연하게도 1:1 대응이 되지 않습니다. 때로는 K-에만 있는 기능을 SM5에만 있는 기능으로 풀어헤쳐서 나타내야 할 수도 있습니다. 특히 스택은 SM5에만 있는 추가적인 자료구조이니 이를 잘 활용해보시면 되겠습니다.

이미 많은 실마리를 찾으신 것으로 보이는데, 그러한 재귀구조를 번역과 실행 양쪽에서 어떻게 끊을 수 있을지, 또 자기자신의 번역을 쓰지 않고 e1, e2의 번역만을 조합하여 어떻게 번역 결과를 만들 수 있을지 고민해보시면 좋을 것 같습니다. 또, LETF와 관련된 CALLV, CALLR의 번역도 함께 고민을 해보시면 좋을 것입니다.

감사합니다.
_________________
TA 안중원
e-mail: jwahn@ropas.snu.ac.kr
위로
사용자 정보 보기 비밀 메시지 보내기
이전 글 표시:   
글 쓰기   답변 달기     게시판 인덱스 -> 4190.310 Programming Languages (Spring 2026) 시간대: GMT + 9 시간(한국)
페이지 11

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


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