게시판 인덱스

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

질문 하나 더 할게요.

 
이 게시판은 잠겼으므로 글을 올리거나, 답변을 하거나 수정을 할 수 없습니다   이 주제는 잠겼으므로 답변을 하거나 수정을 할 수 없습니다     게시판 인덱스 -> 4541.664A Program Analysis (Spring 2006)
이전 주제 보기 :: 다음 주제 보기  
글쓴이 메시지
김은상
손님





올리기올려짐: 2006년5월30일 16:01    주제: 질문 하나 더 할게요. 인용과 함께 답변

진민식 씀:

C-- 의 semantics에 의하면 주소에 대해서는 연산이 정의되어 있지 않습니다. 그리고 정수값을 address로도 사용할 수 없습니다.
이 경우는 runtime error가 될 것 입니다.


라고 하셨는데요.
syntax에서는, E -> E+E | .... *x | &x 라고 되어 있으니,
x = *y + 1; (1)
x = &y + 1; (2)
이 가능하지 않나요?
그럼 syntax상으로는 가능한 expression이지만, semantics상으로 정의되어 있지 않은 expression은 runtime error가 되는 것이겠죠?
그리고 test input으로 syntax에 어긋나는 input은 들어오지 않는다고 가정해도 되겠죠? ( 머, 그런건 파싱이 안되겠지만요. ㅎㅎ )
위로
진민식



가입: 2006년 3월 21일
올린 글: 67

올리기올려짐: 2006년5월30일 16:09    주제: 인용과 함께 답변

인용:
syntax에서는, E -> E+E | .... *x | &x 라고 되어 있으니,
x = *y + 1; (1)
x = &y + 1; (2)
이 가능하지 않나요?


네 syntax 상으로는 가능합니다.
하지만 parser와 함께 제공된 C--의 문서를 보시면,
위와 같은 상황에서는 semantics가 정의되어 있지 않습니다.

인용:
그리고 test input으로 syntax에 어긋나는 input은 들어오지 않는다고 가정해도 되겠죠? ( 머, 그런건 파싱이 안되겠지만요. ㅎㅎ )


네 concrete syntax에 맞지 않는 input은 parsing이 안되겠죠.
하지만 syntax에는 맞지만 semantics에는 맞지 않는 input이 들어 올 수는 있습니다.
위로
사용자 정보 보기 비밀 메시지 보내기 이메일 보내기
김은상
손님





올리기올려짐: 2006년5월30일 22:43    주제: Re: 질문 하나 더 할게요. 인용과 함께 답변

진민식 씀:

C-- 의 semantics에 의하면 주소에 대해서는 연산이 정의되어 있지 않습니다. 그리고 정수값을 address로도 사용할 수 없습니다.
이 경우는 runtime error가 될 것 입니다.


여기서 또 의문점이 생겼는데요.

semantic domain에 보면
v < Val = Z+Loc+B ( < 는 포함관계 )
이고, semantic judgement에서는
MㅏE1=>v1, MㅏM2=>v2
-----------------------------
MㅏE1+E2=>v
이니까 Loc에 대해서도 연산이 정의된 것 아닌가요? 아니면 semantics에서의
v값은 '정수'라고 봐야 하는지요? 이것때문에 무지 헷갈리네요...
v값을 정수라고 보는게 맞는거 같은데, domain 정의에서 v는 Z+Loc+B라고 되어있어서요...
위로
김은상
손님





올리기올려짐: 2006년5월30일 22:49    주제: 인용과 함께 답변

아니면, v < Val=Z+Loc+B 이고,
+,- 연산은 Z에만 정의되어 있고, Loc, B에는 정의되어 있지 않다는 의미인가요?

그렇다면,
x:=1;
y:=&x;
z:=&y
이런 식으로, 더블포인터도 가능한 command인지 궁금하네요.

MㅏE=>v
------------------------
Mㅏx:=E=>M{x->v}
에서 v가 정수만 아니라 Loc도 가능하다면 위에서 예로 든 command도 semantics상에서 정의가 된건데 말이죠...
위로
진민식



가입: 2006년 3월 21일
올린 글: 67

올리기올려짐: 2006년5월31일 11:15    주제: 인용과 함께 답변

인용:
emantic domain에 보면
v < Val = Z+Loc+B ( < 는 포함관계 )
이고, semantic judgement에서는
MㅏE1=>v1, MㅏM2=>v2
-----------------------------
MㅏE1+E2=>v
이니까 Loc에 대해서도 연산이 정의된 것 아닌가요? 아니면 semantics에서의
v값은 '정수'라고 봐야 하는지요? 이것때문에 무지 헷갈리네요...
v값을 정수라고 보는게 맞는거 같은데, domain 정의에서 v는 Z+Loc+B라고 되어있어서요...


+, - 는 정수에 대해서만 정의된 것이 맞습니다.
(C--에서 주소는 Variablename(string)이므로)

인용:
그렇다면,
x:=1;
y:=&x;
z:=&y
이런 식으로, 더블포인터도 가능한 command인지 궁금하네요.

위와 같은 경우는 올바르게 semantics 를 따른 것입니다.

다만, C와는 다르게, **x 처럼 두번 연속 deref하는 operation을 할 수는 없습니다.
t := *z;
t := *t
이런 식으로 나누어서 쓸 수 밖에 없습니다.
위로
사용자 정보 보기 비밀 메시지 보내기 이메일 보내기
이전 글 표시:   
이 게시판은 잠겼으므로 글을 올리거나, 답변을 하거나 수정을 할 수 없습니다   이 주제는 잠겼으므로 답변을 하거나 수정을 할 수 없습니다     게시판 인덱스 -> 4541.664A Program Analysis (Spring 2006) 시간대: GMT + 9 시간(한국)
페이지 11

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


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