게시판 인덱스

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

예제의 star.k- 잘 되시나요?

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



가입: 2006년 9월 4일
올린 글: 25

올리기올려짐: 2006년10월28일 18:24    주제: 예제의 star.k- 잘 되시나요? 인용과 함께 답변

저번에 이슈가 되었던, L R 문제에 따르면
코드:
 *x := 5;

요것은 잘 동작하지 않고
코드:
 (x) := 5;

이것이 위의 문장을 k-용으로 대체할 수 있는 것이었는데요.

star.k-에는 저 문장이 들어있고, sm5로 실행해 보면
인용:
SM5 evaluation error: unbound loc (1,0).

라는 에러를 띄우네요.

또 하나의 문제는, x에 malloc을 시켜 줬으니 이제 x의 값은 Location인데, 나중에 write x를 해 버리네요. 이렇게 하면
인용:
SM5 evaluation error: stuck configuration.

라는 에러를 띄우구요. *x를 (x)로 바꿔 주고, write x 를 write *x로 바꿔 주면 잘 되네요. 이 예제는 올바른 예제인가요?

*x를 하면 x에 값으로 들어있는 메모리주소에 있는 값을 불러오는 것 아닌가요? 그래서 저번에도 문제가 발생했던 걸로 알고 있는데 말이죠. 이번 뼈대의 변경점 중 하나인
인용:
-*x := 1 의 파싱이 올바르게 되지 않던 것을 수정했습니다

이 말이 저번에 문제가 되었었던
*x := 1 이 *(x := 1) 로 동작하던 문제
를 수정한건지, 아니면 위의
*x := 5;의 문제
를 수정한 건지 잘 모르겠네요. 후자라면 예제도 잘 돌아가야 할텐데요;
위로
사용자 정보 보기 비밀 메시지 보내기 이메일 보내기
박대준



가입: 2005년 10월 7일
올린 글: 245

올리기올려짐: 2006년10월28일 21:04    주제: 인용과 함께 답변

송수현 씀:
*x를 (x)로 바꿔 주고, write x 를 write *x로 바꿔 주면 잘 되네요. 이 예제는 올바른 예제인가요?
말씀하신 것이 맞습니다. 예제에 들어있는 star.k-는 다음과 같이 바꿔주어야 잘 실행이 될 것입니다.
코드:
let
  x := 4
in
  x := malloc(5);
  write 3;
  (x) := 5;
  write *x
end


파싱이 올바르게 되지 않는 것을 수정했다는 것은,
*x:=1이 *(x:=1)로 동작하던 것을 (*x):=1로 동작하도록 수정했음을 의미합니다.

위와 같은 내용을 잘 전달드리고자 일부러 star.k-를 넣어둔 것이니, 오해없길 바랍니다.
위로
사용자 정보 보기 비밀 메시지 보내기
이전 글 표시:   
이 게시판은 잠겼으므로 글을 올리거나, 답변을 하거나 수정을 할 수 없습니다   이 주제는 잠겼으므로 답변을 하거나 수정을 할 수 없습니다     게시판 인덱스 -> 4190.310 Programming Languages (Fall 2006) 시간대: GMT + 9 시간(한국)
페이지 11

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


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