게시판 인덱스

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

5-1 질문

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



가입: 2017년 9월 5일
올린 글: 24

올리기올려짐: 2017년11월15일 13:20    주제: 5-1 질문 인용과 함께 답변

for이나 while문과 같은 loop을 짤 때, 이 loop 자체들이 recursive한 성격을 지니고있는데 recursive를 이용하지 않고 코드를 짤 수 있나요?
예를 들어 while문을 if를 이용하여 자기 자신을 다시 호출하니 역시 stack_overflow에러를 띄우네요 ㅜㅜ

그리고 callv에서 Sm5.CALL을 하기 전에 (x,C', E')에서 E'에 자기 자신 f에 대한 것을 저장하는 방식으로 하는게 맞나요? callv에선 함수 이름 f를 받아서 (x,C')에 대한걸 직접적으로 못이용하는데 (x,C', E')에서 E'을 인위적으로 수정하는 방식은 아니죠?
Sm5에서 주어진 연산들을 가지고 생각해보는데 초점을 못 잡겠습니다 ㅜㅜ

방향 제시라도 해주시면 감사하겠습니다^^
위로
사용자 정보 보기 비밀 메시지 보내기
로파스
Site Admin


가입: 2012년 9월 9일
올린 글: 280

올리기올려짐: 2017년11월15일 16:59    주제: 인용과 함께 답변

약간의 힌트를 드리자면 반복문의 경우 loop를 한번 도는 것이 곧 함수호출이라고 이해하시면 길이 보이실 것 같습니다.

두번째 질문은 어떤 부분에서 어려워하시는것인지 잘 이해를 못하겠습니다. 다만 함수를 call할때 현재의 환경을 K에 저장해두었다가 함수호출이 끝나고 다시 해당 환경으로 돌아간다는 개념을 이해하시면 call부분 구현은 크게 어렵지 않으실 것 같습니다.

-조교 드림.
위로
사용자 정보 보기 비밀 메시지 보내기
김현식



가입: 2017년 9월 5일
올린 글: 24

올리기올려짐: 2017년11월16일 20:51    주제: 5-1 letf / call 인용과 함께 답변

letf에서 E에 f 자기 자신의 proc (즉, (f, (x,c',E'))) 을 포함하도록 짰는데
callv에서 call 이 끝나기 전에 c'에 call이 또 있는 경우(즉, 재귀함수)에는 callv 명령 내에서 E'에 자기 자신의 f를 추가하는 방법이 잘 안되더라구요...

그래서 제가 잘못 접근하고 있는건지, 어떤 방향으로 callv을 구현해야될지 감이 잘 안잡힙니다 ㅜㅜ
위로
사용자 정보 보기 비밀 메시지 보내기
신원준



가입: 2017년 9월 12일
올린 글: 23

올리기올려짐: 2017년11월17일 1:39    주제: 인용과 함께 답변

질문이 조금 감이 안 잡히는 부분이 있지만 도움을 드리자면..

Sm5.CALL 호출 이전에 (x, C', E') 상태에서 E'을 직접 조작하는 건 아마 안 될겁니다.

왜냐면 번역기는 Sm5 기계 상태에 직접 영향을 미칠 수 없기 때문입니다.

번역기는 K-- 명령어들이 순서대로 있는 것을 Sm5 명령어들이 순서대로 있는 걸로 바꾸는 역할밖에 못합니다.

번역기로 기계 상태를 바꾸는 방법은 스펙서에 쓰인 Sm5 명령어들을 이용하는 방법뿐입니다.
위로
사용자 정보 보기 비밀 메시지 보내기
로파스
Site Admin


가입: 2012년 9월 9일
올린 글: 280

올리기올려짐: 2017년11월17일 12:25    주제: 인용과 함께 답변

sm5의 call 명령어를 참고하시면, l :: v :: (x, C, E) 이런식으로 스택에

쌓여있는 정보를 바탕으로 함수를 호출하게 됩니다.

callv를 번역하면 sm5명령어들이 여러개 나올텐데요. 아마 아래와 같은 형태겠지요.

push ... :: push ... ::......... :: call

(정답은 이 예시와 다를수있습니다. 설명을 위한 예시로 참고만해주세요.)

그러면 위 명령어들중 push명령어를 통해 l과 v, (x,C,E)등을 스택에 집어넣게 되고 call을 부르겠지요.

이때 (x, C, E)의 E 안에 재귀를 위한 함수의 정보 자체가 들어갈 수 있게 잘 번역해주면 될것입니다.

-조교 드림.
위로
사용자 정보 보기 비밀 메시지 보내기
이전 글 표시:   
이 게시판은 잠겼으므로 글을 올리거나, 답변을 하거나 수정을 할 수 없습니다   이 주제는 잠겼으므로 답변을 하거나 수정을 할 수 없습니다     게시판 인덱스 -> 4190.310 Programming Languages (Fall 2017) 시간대: GMT + 9 시간(한국)
페이지 11

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


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