게시판 인덱스

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

3-1 질문입니다.

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



가입: 2018년 9월 11일
올린 글: 18

올리기올려짐: 2018년10월12일 1:45    주제: 3-1 질문입니다. 인용과 함께 답변

조교님 안녕하세요, 작년 자료들까지 찾아봤는데도 이해가 되지 않는 질문이 몇가지 있습니다.

1. Record assign 관련해서, 예를들면
let x := {data1 := 3, data2 := 2} in
x.data2 := 55
라고 하면 직관적으로는 x라는 Record의 data2에 55를 assign 하는 RECASSIGN처럼 보이지만,
"x.data2"라는 id에 55를 assign 하는 ASSIGN 으로도 보일 수 있을 것 같습니다.
k.ml이 저 둘을 구분할 수 있게 하는 방법이 있을까요?

1-1.
Record 안에 다른 record를 assign 해서 (예를들자면) list를 만드는것도 구현해야 하는 대상인가요?
e.g. let x := {data := 3, next := {data := 5, next := { data := 4, next:= ()}}} in
write x.next.next.data (* expects 4 *)

2. 문법설명 자료에 있는 Mn{l1->v1}{l2->v2}...{ln->vn}은
[...[[Mn{l1->v1}]{l2->v2}]...{ln->vn}]으로 이해하면 되는게 맞을까요? ( l1을 확보하기 위해 allocate 하고 v1을 store 하고 l2 확보를 위해 allocate 하고 v2를 store하고.... 순차적으로 vn을 store할때까지)

3. if 에 non boolean value 가 들어갈 때 어떻게 처리해야 하는지 궁금합니다
e.g. if (1) then write 2 else write 3
1) 1을 true 로 봐서 print 2
2) 1을 non boolean 으로 봐서 Type Error: not bool

감사합니다!


유진선14 가 2018년10월14일 22:31에 수정함, 총 1 번 수정됨
위로
사용자 정보 보기 비밀 메시지 보내기
유진선14



가입: 2018년 9월 11일
올린 글: 18

올리기올려짐: 2018년10월12일 18:57    주제: 인용과 함께 답변

추가적으로 -> notation에대해 궁금한게 있습니다.
예를들어
M ㅏ x:=E=>M{l->v} 에서
M{l->v}는 M 상태의 메모리에서 l이라는 주소를 넣을때 v를 뱉어내도록 하라는 말로 이해됩니다. 디만, 그렇게 하면 l주소의 값을 바꾸는것이므로 결국 M을 바꾼 게 되지않나 싶습니다. 그리고 그렇게되면 M과 M{l->v} 와 M'은 모두 다른거인지, 즉 예를들면 저 셋을 M M' M''로도 나타낼수있는지(혹은, 저 식을 M ㅏ x:=E=>M'로 바꿔쓸수있는지 궁금합니다.


마지막으로, 3-2 3-3 관련
인용:

제공해 드린 뼈대 코드로 실행했을 때 파싱 에러가 발생하지 않도록 해 주세요


에서 "뼈대 코드"가 k-.ml (및 기타 parser)를 가리키는건지 궁금합니다.
즉, 과제를 해면서 직접적으로 건드리는 파일은 k-.ml이 유일하고, 3-2 3-3은 저희가 직접 파일을 (자유로운 이름으로)만드는 것이 맞는지 궁금합니다.

감사합니다!
위로
사용자 정보 보기 비밀 메시지 보내기
유진선14



가입: 2018년 9월 11일
올린 글: 18

올리기올려짐: 2018년10월14일 23:42    주제: 인용과 함께 답변

마지막으로, 현재 임시로 저장하려고 했는데 "과제 제출을 받지 않습니다"라고 나옵니다. 혹시 확인 가능할까요?
위로
사용자 정보 보기 비밀 메시지 보내기
로파스
Site Admin


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

올리기올려짐: 2018년10월15일 17:46    주제: 인용과 함께 답변

1. x.data2 가 일반 변수인지 레코드의 필드값인지는 파싱 시스템이 구분하여 k.ml 파일이 인식할 수 있는 자료구조로 변환해주게 됩니다. 즉 수강생분들께서 해당 부분에 대해 신경쓰지는 않으셔도 됩니다.

1-1. 구현대상입니다. 레코드 역시 e로 인해 계산되는 v의 일종이기 때문입니다. 하지만 레코드 역시 v의 일부이므로, 레코드 부분을 재귀적으로 제대로 구현하셨다면 해당 꼴의 프로그램을 위해 특별히 추가구현을 하실 필요는 없을 것입니다.

2. 맞게 이해하셨습니다.

3. k-문서 정의를 보시면 if의 조건식이 true 혹은 false일때만 정의되어있습니다. 그렇기때문에 타입에러를 내주시는 것이 맞습니다.

4. 본질적으로 M{l -> v}는 M의 l에 해당하는 주소가 가진 값을 v로 바꾼 새로운 메모리 라는 표기입니다. 그렇기때문에 굳이 다른식으로 표현하자면 M'이 되겠지요. M ㅏ x:=E=>M' 으로 표기할수도 있지만, 그런 경우에는 M' = M{l -> v} 라는 조건을 어딘가에 표기해야 할 것입니다.

하나의 본질에 대해서도 그것을 나타내는 표기방식에 대해서는 여러 방법이 있을 수 있으니, 표기 자체를 너무 신경쓰시지 말고 그 표기가 나타내고자 하는 본질이 무엇인지를 이해해보시면 도움이 될것입니다.

5. 뼈대코드는 제공해드린 파서와 k.ml파일 모두를 의미합니다. 3-2,3 문제에 해당하는 k-파일을 파싱해서 제대로 자료구조로 만들어질 수 있도록 해야한다는 뜻입니다.

3-2, 3-3 문제를 구현한 k-파일을 컴파일해서 의도한 대로 실행이 잘 되면 문제없는 것입니다.

6. 제출페이지는 열어두었습니다. 오픈이 늦어져서 죄송합니다.

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

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


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