이전 주제 보기 :: 다음 주제 보기 |
글쓴이 |
메시지 |
황재동
가입: 2014년 9월 2일 올린 글: 80
|
올려짐: 2014년11월30일 18:36 주제: Project 3 질문 |
|
|
exp는 출력하는 것에 대한 정의가 없는데
코드: | type exp =
| Num of int
| Add of exp * exp
| Minus of exp
| Read
| If of exp * exp * exp
| Repeat of exp * exp |
항상 그 결과값을 출력하는 것인가요?
아니면 출력을 하지 않은 채 가지고만 있는 것인가요?
감사합니다. |
|
위로 |
|
 |
정지홍
가입: 2014년 9월 11일 올린 글: 37
|
올려짐: 2014년11월30일 19:11 주제: |
|
|
관련은 없지만 질문을 추가합니다.
1)명령문 프로그램의 경우 say문을 통해 리턴을 하게 되는데
정상적인 프로그램이라면 반드시 하나의 say문을 가져야 할텐데 그러면
만약 read를 transform 할 경우
어떤 변수 x에 read한 값을 넣는
x has read 한 후에 say x 을 넣어줘야 되죠?
2) 프로젝트 문서에
인용: | goto l on x는 x가 0일 경우 일없이 '마친다' | 고 하였는데
여기서 '마친다'는 프로그램의 종료를 의미하나요? 아니면
뒤에 sequence로 연결되어 남은 커맨드가 있을 때
아무런 일을 하지 않고 넘어간다고 해석해도 되나요?
3) t.ml에 exception은 마음대로 추가하고 raise해도 되나요?
4) check_exp 에서
repeat (if (add (repeat 2 read) 1) then 1 else -1) 1
의 경우 true인가요? false인가요?
사용자의 입력에 따라 if문의 결과가 달라지게 되는데 그럴 경우 false를 출력해야하나요?
그렇다면 모든 입력 (-100<= n <=100)에 대해서 다 check 해봐야하는건가요?
5) tag 내에 tag를 사용할 수 있나요?
l1 : l2 : 5+3
이런 식으로요
6) 올해는 정규식과 cmd의 인터프리터가 제공이 안되나요?
https://ropas.snu.ac.kr/phpbb/viewtopic.php?t=3541
2012년에는 제공되었던 것 같은데 과제를 하다보니 스펙이 모호한 면이 있는 것 같아서요. 인터프리터가 있으면 좀 더 확인하면서 하기 좋을 것 같아서요..
정지홍 가 2014년12월1일 1:38에 수정함, 총 8 번 수정됨 |
|
위로 |
|
 |
황재동
가입: 2014년 9월 2일 올린 글: 80
|
올려짐: 2014년11월30일 19:40 주제: |
|
|
추가로 질문 한가지를 더 올립니다.
check_exp와 check_cmd를 통과하지 못하였을 경우
exception을 마음대로 띄우나요?
예를들어
exception CHECK_FAIL
raise CHECK_FAIL 이런식으로요? |
|
위로 |
|
 |
김윤승
가입: 2014년 9월 1일 올린 글: 452 위치: 302동 312-2호
|
올려짐: 2014년12월1일 14:04 주제: |
|
|
우선 처음 질문에 대해서,
exp를 실제 실행할 일이 없는데 출력을 하는 지 우리가 고려할 필요가 있을까요?
또한 정지홍님의 질문에서는
1. 그렇습니다.
2. 자기만 마치는 것입니다. sequence는 첫 번째 실행문을 실행하고 그 실행문이 '마치면' 다음 실행문을 실행하는 것이기 때문에, 남은 커맨드가 있다면 계속 실행해야 합니다. 즉, if와 비슷한 conditional jump로 생각하시면 됩니다.
3. 정상적인 상황인데 exception으로 들어가지만 않으면 되는 걸로 하겠습니다.
4. 사용자의 입력에 따라 정상적인 실행이 안 될 경우가 있으면 false, 어떤 입력이라도 정상적으로만 실행되면 true입니다.
하지만 이를 완전히 정확히 아는 것은 거의 불가능하므로, 적절한 선까지 하시면 됩니다. 예를 들면 (read + 100)은 언제나 음수가 아니므로 repeat이 정상적으로 실행되죠.
5. 가능합니다.
6. 그렇군요.. 조교들끼리 상의 후 알려드리겠습니다.
그리고 다시 황재동님의 질문..
check_exp는 exp를 받아서 T,F를 리턴하고, check_cmd도 마찬가지입니다.
transform은 check_exp와 관계없이 변환만 하는 함수입니다.
세 함수는 서로 다르고 언제 불릴 지 모릅니다. transform은 올바른 식이 들어왔을 때 올바른 결과를 내놓도록만 작성하면 됩니다.
exception을 띄울 상황은 없을 것 같습니다. |
|
위로 |
|
 |
|