게시판 인덱스

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

parser구현에 문제가 있는 듯 합니다

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



가입: 2005년 10월 3일
올린 글: 33

올리기올려짐: 2005년10월19일 16:35    주제: parser구현에 문제가 있는 듯 합니다 인용과 함께 답변

아래 글에서
코드:

let
   x := 4
in
   x := malloc(5);
   write 3;
   *x := 5;
   write x
end

위 코드에 대해 여러 의견이 오갔는데 이를 실행시켜보고 결과를 확인하던 중
이상을 발견했습니다.
코드:

torms3@upnl:~/ProgrammingLanguage/hw3/ex1$ ./run examples/test.k-
3
Fatal error: exception 1.K.Error("Unit type is used as Location type")

실행 결과가 위와 같은데 아무리 봐도
코드:
*x := 5
에서 문제가 있다면
*x 의 값이 Bot 이기 때문에 "not initialized" 에러가 나야 할 것 같았습니다.

그래서 다음과 같이 확인해 봤습니다.

첫 번째
코드:

let
   x := 4
in
   x := malloc(5);
   write 3;
   *(x := 5);
   write x
end

코드:

torms3@upnl:~/ProgrammingLanguage/hw3/ex1$ ./run examples/test.k-
3
Fatal error: exception 1.K.Error("Unit type is used as Location type")

두 번째
코드:

let
   x := 4
in
   x := malloc(5);
   write 3;
   ( *x ) := 5;
   write x
end

코드:

torms3@upnl:~/ProgrammingLanguage/hw3/ex1$ ./run examples/test.k-
3
Fatal error: exception 1.K.Error("not initialized")



K- 문서 정의에 보면 *의 우선순위가 := 보다 높은 것으로 나와있습니다.
즉 *x := 5 의 경우
(*x) := 5 로 parsing 해야하는데 실제로는
*(x := 5) 로 parsing 하는 것 같네요.


처음 실행 결과를 보고 제가 잘못 구현한 줄 알고
코드의 바다속에서 꽤나 오래 방황했습니다. Crying or Very sad


참고로 (*x) := 5 라고 하면 (*를 주석의 시작으로 인식해버립니다. Twisted Evil
( *x ) := 5 와 같이 한 칸 띄워줘야 하네요-
조금 황당한 경우였습니다. Confused
위로
사용자 정보 보기 비밀 메시지 보내기 MSN 메신저
이기석



가입: 2005년 10월 3일
올린 글: 33

올리기올려짐: 2005년10월19일 17:28    주제: Re: parser구현에 문제가 있는 듯 합니다 인용과 함께 답변

이기석 씀:
K- 문서 정의에 보면 *의 우선순위가 := 보다 높은 것으로 나와있습니다.
즉 *x := 5 의 경우
(*x) := 5 로 parsing 해야하는데 실제로는
*(x := 5) 로 parsing 하는 것 같네요.


혹시나 해서
*malloc(1) := 3
을 실행시켜보니 이번엔
(*malloc(1)) := 3
와 같이 제대로 parsing이 되는 것 같네요-

음; parser가 ASSIGNV와 ASSIGNG를 차별하는건가요;
아님 제가 구현을 잘못한걸까요;
아님 parser가 이상한걸까요;

미궁에 빠져들었습니다.

내일 타과목 시험이 있어서 더 이상 붙잡고 있을 수가 없네요-
다른 분들과 조교님의 명쾌한 답변 부탁드립니다-
위로
사용자 정보 보기 비밀 메시지 보내기 MSN 메신저
김덕환



가입: 2005년 8월 29일
올린 글: 190

올리기올려짐: 2005년10월19일 17:43    주제: Re: parser구현에 문제가 있는 듯 합니다 인용과 함께 답변

이기석 씀:
참고로 (*x) := 5 라고 하면 (*를 주석의 시작으로 인식해버립니다. Twisted Evil
( *x ) := 5 와 같이 한 칸 띄워줘야 하네요-
조금 황당한 경우였습니다. Confused


See https://ropas.snu.ac.kr/phpbb/viewtopic.php?t=116
_________________
TheyAreAsSmartAsYouAre
위로
사용자 정보 보기 비밀 메시지 보내기
김덕환



가입: 2005년 8월 29일
올린 글: 190

올리기올려짐: 2005년10월19일 17:49    주제: Re: parser구현에 문제가 있는 듯 합니다 인용과 함께 답변

이기석 씀:
음; parser가 ASSIGNV와 ASSIGNG를 차별하는건가요;
아님 제가 구현을 잘못한걸까요;
아님 parser가 이상한걸까요;

미궁에 빠져들었습니다.

내일 타과목 시험이 있어서 더 이상 붙잡고 있을 수가 없네요-
다른 분들과 조교님의 명쾌한 답변 부탁드립니다-


기석 님 구현이 어떤 지는 제가 알 수가 없고, 파서도 들여다 보는데 시간이 필요합니다.

그래서, 연산 순위 때문에 피해보시는 분은 없도록 검사할 때 사용할 테스트 프로그램들은 충분히 괄호를 사용하겠습니다. 충분하게 괄호를 친 프로그램에 대해 잘 작동하면 되겠습니다.
_________________
TheyAreAsSmartAsYouAre
위로
사용자 정보 보기 비밀 메시지 보내기
이전 글 표시:   
이 게시판은 잠겼으므로 글을 올리거나, 답변을 하거나 수정을 할 수 없습니다   이 주제는 잠겼으므로 답변을 하거나 수정을 할 수 없습니다     게시판 인덱스 -> 4190.310 Programming Languages (Fall 2005) 시간대: GMT + 9 시간(한국)
페이지 11

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


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