| 이전 주제 보기 :: 다음 주제 보기 |
| 글쓴이 |
메시지 |
이중호
가입: 2009년 9월 19일 올린 글: 35
|
올려짐: 2009년10월6일 23:17 주제: example질문입니다 |
|
|
제가 만든 인터프리터에서 example/test5.k--를 실행하면 not bound 에러가 납니다
let proc f(x) = x:= 2;
y:=1 in
(f<y>; write y)
실험해보니 저 괄호가 문제인듯 합니다
(let proc f(x) = x:= 2;
y:=1 in
f<y>); (write y)
파서에서 이렇게 묶여버려서 뒤쪽 write y에서 y값이 not bound 된것 같습니다
참고로 제가 만든 인터프리터에서
let proc f(x) = x:= 2;
y:=1 in
write f<y>가 정상적으로 실행됩니다
확인 부탁 드립니다 |
|
| 위로 |
|
 |
이중호
가입: 2009년 9월 19일 올린 글: 35
|
올려짐: 2009년10월6일 23:21 주제: 추가로 |
|
|
test6.k--에서
| 코드: | let x:=0;
proc inc(n) = x := x+n in
let x:=1 in
(inc (1); write x)
|
이 코드와 괄호를 바꾼 코드
| 코드: | let x:=0;
proc inc(n) = x := x+n in
(let x:=1 in
inc (1)); (write x)
|
의 출력결과가 같게 나옵니다
파서 부분에서 이상이 있는듯 합니다 |
|
| 위로 |
|
 |
현철 손님
|
올려짐: 2009년10월7일 0:09 주제: 음.. |
|
|
전 test가 다 제대로 돌아갔었습니다만.. -pp로 파싱된 코드를 갖다붙여놓으시고 디버깅을 해보시는건 어떠신가요?
5번을
-pp 옵션 주고 실행해서 나온 결과를 보니 그다지 이상한 점을 발견하지 못했습니다 ^^;; |
|
| 위로 |
|
 |
노건일
가입: 2009년 9월 26일 올린 글: 50
|
올려짐: 2009년10월7일 0:16 주제: |
|
|
아.. 저도 5번 자꾸 not bound 에러나서..
쪼금 과장해서 10시간째 고생중이에요
뭐가 문제일까요? |
|
| 위로 |
|
 |
이중호
가입: 2009년 9월 19일 올린 글: 35
|
올려짐: 2009년10월7일 0:21 주제: ,, |
|
|
죄송합니다 제가 잘못 했었군요,,,
테스트셋은 정상인듯 합니다 |
|
| 위로 |
|
 |
노건일
가입: 2009년 9월 26일 올린 글: 50
|
올려짐: 2009년10월7일 0:22 주제: |
|
|
아..............
5번 고치니까 7번이 안되요...
프로그래머들이 존경스러워요.. |
|
| 위로 |
|
 |
tokki7
가입: 2009년 9월 15일 올린 글: 2
|
올려짐: 2009년10월7일 0:25 주제: pp기능! |
|
|
-pp기능을 적극 활용하세요! *ㅁ*
문제가 생기면 저는 파싱되는 중간중간마다 print_string 문을 넣어서 어디까지는 제정신으로 되는지 확인하고 그랬어용 |
|
| 위로 |
|
 |
노건일
가입: 2009년 9월 26일 올린 글: 50
|
올려짐: 2009년10월7일 0:59 주제: |
|
|
-pp 넵!
감사합니다 그런 방법이 있었군요! |
|
| 위로 |
|
 |
허기홍
가입: 2007년 9월 27일 올린 글: 231
|
올려짐: 2009년10월7일 1:00 주제: |
|
|
제가 없어도 다들 상부상조.
아름답습니다. |
|
| 위로 |
|
 |
노건일
가입: 2009년 9월 26일 올린 글: 50
|
올려짐: 2009년10월7일 1:44 주제: |
|
|
조교님의 도움에도...
상부상조에도... 제 앞에는 자꾸만 산이 나타나는군요
Env.bind를 사용할때
예를 들어 e1을 e에 x를 바인딩한 새로운 Env로 놓고
다시 그 e1에 y를 바인당하면 어떻게 되나요?
동시에 두개가 다 바인딩 되는건가요?
아니라면, 어떻게 하면 두개가 바인딩된 환경을 만들 수 있을까요?ㅠ
-------------------------------------------------
바인딩의 순서가 문제였네요 ^^;; 이 문제는 해결했습니다~ |
|
| 위로 |
|
 |
노건일
가입: 2009년 9월 26일 올린 글: 50
|
올려짐: 2009년10월7일 8:37 주제: |
|
|
test6 의 결과값은 어떻게 나와야 하나요?
--test 6--------------------------
let x:=0;
proc inc(n) = x := x+n in
let x:=1 in
(inc (1); write x)
----------------------------------
어찌됐든 1이긴 한데..
제가 위의 x를 2로 바꾸고 해봐도 역시 1이 나오더라고요
그런걸 보면 write x <-- 이놈이 아래에 있는 x값을 반영하는 것 같은데요,
코드를 조금 다르게 바꿔서 실험해보니까 inc(1)은 정상적으로 작동하는 것 같고요.. (위의 x=0을 받아서 1 증가.. 맞죠?)
sequence에 문제가 있는걸까요?
아... |
|
| 위로 |
|
 |
현철
가입: 2009년 10월 7일 올린 글: 27
|
올려짐: 2009년10월7일 9:07 주제: 음.. |
|
|
| 1 맞을거예요 아마.. inc는 윗단의 x를 증가시키고 write는 아랫단의 x를 출력하고 |
|
| 위로 |
|
 |
허기홍
가입: 2007년 9월 27일 올린 글: 231
|
올려짐: 2009년10월7일 9:21 주제: |
|
|
맞습니다.
write x 에서 x는
let x :=1 in
여기서 바인딩 되죠.
스코프를 잘 생각해 보시면 됩니다. |
|
| 위로 |
|
 |
노건일
가입: 2009년 9월 26일 올린 글: 50
|
올려짐: 2009년10월7일 15:36 주제: |
|
|
아... 허허허
감사합니다  |
|
| 위로 |
|
 |
|