이전 주제 보기 :: 다음 주제 보기 |
글쓴이 |
메시지 |
공순호
가입: 2005년 9월 29일 올린 글: 363 위치: 302동 312-2호
|
올려짐: 2005년10월27일 13:24 주제: Stage 1에서 QUOTE처리? |
|
|
Semantic 문서에 보면
LIFT, COMMA, EVAL에 대해서는
Stage 1에서의 Semantics가 정의되어 있는데
QUOTE에 관해서는 없는 것으로 보이네요.
어떻게 처리하는 것이 좋을까요?
LIFT나 COMMA 처럼 처리하는 것이 자연스러울 것 같은데.
혹시 나와있는데 제가 못보고 있는건 아닐지 걱정도 됩니다.;; |
|
위로 |
|
|
조성문
가입: 2005년 10월 21일 올린 글: 5
|
올려짐: 2005년10월27일 13:59 주제: Re: Stage 1에서 QUOTE처리? |
|
|
공순호 씀: | LIFT, COMMA, EVAL에 대해서는
Stage 1에서의 Semantics가 정의되어 있는데
QUOTE에 관해서는 없는 것으로 보이네요.
|
stage 0 에서 stage 1로 올라갈 수 있는 것은 QUOTE 밖에 없습니다.
따라서 stage 1로 올라갈때는 QUOTE 가 벗겨져서 올라가게 되죠.
여기서, 만일 QUOTE 안에 QUOTE를 허용하게 된다면, 공순호님이 말씀하신 것처럼 stage 1에서 QUOTE의 정의가 필요합니다. 하지만, 이번 숙제에서 staged programming은 차원(stage)를 0과 1만 가정했기 때문에 QUOTE 속에 QUOTE를 중복해서 사용하는 것은 허용되면 안될 것 같습니다. 따라서 stage 1에서 QUOTE의 semantic은 필요없겠죠. |
|
위로 |
|
|
공순호
가입: 2005년 9월 29일 올린 글: 363 위치: 302동 312-2호
|
올려짐: 2005년10월27일 16:07 주제: |
|
|
인용: | stage 0 에서 stage 1로 올라갈 수 있는 것은 QUOTE 밖에 없습니다.
따라서 stage 1로 올라갈때는 QUOTE 가 벗겨져서 올라가게 되죠.
|
코드: |
let
x := `(`(3))
in
write eval(eval(x))
end
|
와 같은 코드를 통해서 QUOTE안에 QUOTE가 들어가게 할 수 있는데요.
파싱도 되고요
조교님, 어떻게 해야하는거죠? |
|
위로 |
|
|
조성문
가입: 2005년 10월 21일 올린 글: 5
|
올려짐: 2005년10월27일 17:39 주제: |
|
|
코드: |
let
x := `(`(3))
in
write eval(eval(x))
end
|
저렇게 들어오면, 에러처리를 해야하지 않을까요 ?
즉, stage1 에서 구현되지 않은 연산이라던지, QUOTE를 허용하지 않던지 해서요.
exception 1.StagedK.Error"QUOTE is not permitted in stage 1.")
조교님, 명쾌한 답변을 부탁드림다. |
|
위로 |
|
|
김덕환
가입: 2005년 8월 29일 올린 글: 190
|
올려짐: 2005년10월27일 18:30 주제: |
|
|
공순호 씀: | 코드: |
let
x := `(`(3))
in
write eval(eval(x))
end
|
와 같은 코드를 통해서 QUOTE안에 QUOTE가 들어가게 할 수 있는데요.
파싱도 되고요
|
파싱은 코드가 제대로 생겼는지만 검사하게 됩니다. 파싱되었다고 잘 돌아가야 한다면 세상에 존재하는 모든 컴파일된 C 프로그램들은 세그폴트도 없고, 버스 에러도 없이 잘 돌아갔어야 할 겁니다.
위의 수식에서 x를 초기화하기 위해 `(`(3))을 계산하려고 하면 의미가 정의되지 않기 때문에 적절한 에러를 발생시켜야 합니다. |
|
위로 |
|
|
|