게시판 인덱스

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

숙제 2-2 테스트 코드 및 결과입니다.

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





올리기올려짐: 2005년10월5일 19:08    주제: 숙제 2-2 테스트 코드 및 결과입니다. 인용과 함께 답변

따로 '.k-' 파일로 만들지 않고, '2.n' 파일의 뒤에 붙여서 테스트 해보세요. 이렇게 하면 조금 더 편한것 같네요.

테스트 코드
코드:

open Keval
val _ = print_endline ">>"

val prog = WRITE(NUM 1)
//val prog = WRITE(TRUE) // exception
val _ = print_string ">> TEST_WRITE = "
val result = 돌렷(빈메모리, 빈환경, prog)
val _ = print_newline()

val prog = WRITE( ADD(NUM 2, NUM 3) )
//val prog = WRITE( ADD(NUM 2, TRUE) ) // exception
val _ = print_string ">> TEST_ADD = "
val result = 돌렷(빈메모리, 빈환경, prog)
val _ = print_newline()

val prog = WRITE( SUB(NUM 2, NUM 3) )
val _ = print_string ">> TEST_SUB = "
val result = 돌렷(빈메모리, 빈환경, prog)
val _ = print_newline()

val prog = WRITE( MUL(NUM 2, NUM 3) )
val _ = print_string ">> TEST_MUL = "
val result = 돌렷(빈메모리, 빈환경, prog)
val _ = print_newline()

val prog = WRITE( DIV(NUM 3, NUM 2) )
//val prog = WRITE( DIV(NUM 3, NUM 0) ) // exception
val _ = print_string ">> TEST_DIV = "
val result = 돌렷(빈메모리, 빈환경, prog)
val _ = print_newline()

val prog = LET( "x", NUM 3, WRITE(VAR "x") )
//val prog = LET( "x", NUM 3, WRITE(VAR "y") ) // exception
val _ = print_string ">> TEST_LET_VAR = "
val result = 돌렷(빈메모리, 빈환경, prog)
val _ = print_newline()

val prog = SEQ(WRITE(NUM 3), WRITE(NUM 5))
val _ = print_string ">> TEST_SEQ = "
val result = 돌렷(빈메모리, 빈환경, prog)
val _ = print_newline()

val prog = LET( "x", NUM 3, SEQ(ASSIGN("x", NUM 7), WRITE(VAR "x")) )
val _ = print_string ">> TEST_ASSIGN = "
val result = 돌렷(빈메모리, 빈환경, prog)
val _ = print_newline()

val prog = IF1( TRUE, WRITE(NUM 5) )
//val prog = IF1( NUM 1, WRITE(NUM 5) ) // exception
val _ = print_string ">> TEST_IF1_#1 = "
val result = 돌렷(빈메모리, 빈환경, prog)
val _ = print_newline()

val prog = IF1( FALSE, WRITE(NUM 5) )
val _ = print_string ">> TEST_IF1_#2 = "
val result = 돌렷(빈메모리, 빈환경, prog)
val _ = print_newline()

val prog = IF2( TRUE, WRITE(NUM 5), WRITE(NUM 10) )
//val prog = IF2( NUM 1, WRITE(NUM 5), WRITE(NUM 10) ) //exception
//val prog = IF2( TRUE, NUM 5, FALSE ) // exception
val _ = print_string ">> TEST_IF2_#1 = "
val result = 돌렷(빈메모리, 빈환경, prog)
val _ = print_newline()

val prog = IF2( FALSE, WRITE(NUM 5), WRITE(NUM 10) )
val _ = print_string ">> TEST_IF2_#2 = "
val result = 돌렷(빈메모리, 빈환경, prog)
val _ = print_newline()

val prog = IF2( EQUAL(NUM 5, NUM 5), WRITE(NUM 5), WRITE(NUM 10) )
val _ = print_string ">> TEST_EQUAL_#1 = "
val result = 돌렷(빈메모리, 빈환경, prog)
val _ = print_newline()

val prog = IF2( EQUAL(NUM 5, NUM 10), WRITE(NUM 5), WRITE(NUM 10) )
val _ = print_string ">> TEST_EQUAL_#2 = "
val result = 돌렷(빈메모리, 빈환경, prog)
val _ = print_newline()

val prog = IF2( EQUAL(TRUE, TRUE), WRITE(NUM 5), WRITE(NUM 10) )
val _ = print_string ">> TEST_EQUAL_#3 = "
val result = 돌렷(빈메모리, 빈환경, prog)
val _ = print_newline()

val prog = IF2( EQUAL(TRUE, FALSE), WRITE(NUM 5), WRITE(NUM 10) )
val _ = print_string ">> TEST_EQUAL_#4 = "
val result = 돌렷(빈메모리, 빈환경, prog)
val _ = print_newline()

val prog = IF2( EQUAL(UNIT, UNIT), WRITE(NUM 5), WRITE(NUM 10) )
//val prog = IF2( EQUAL(UNIT, TRUE), WRITE(NUM 5), WRITE(NUM 10) ) // exception
//val prog = IF2( EQUAL(UNIT, UNIT), NUM 5, TRUE ) // exception
val _ = print_string ">> TEST_EQUAL_#5 = "
val result = 돌렷(빈메모리, 빈환경, prog)
val _ = print_newline()

val prog = IF2( LESS(NUM 5, NUM 10), WRITE(NUM 5), WRITE(NUM 10) )
val _ = print_string ">> TEST_LESS_#1 = "
val result = 돌렷(빈메모리, 빈환경, prog)
val _ = print_newline()

val prog = IF2( LESS(NUM 5, NUM 5), WRITE(NUM 5), WRITE(NUM 10) )
val _ = print_string ">> TEST_LESS_#2 = "
val result = 돌렷(빈메모리, 빈환경, prog)
val _ = print_newline()

val prog = IF2( LESS(NUM 10, NUM 5), WRITE(NUM 5), WRITE(NUM 10) )
val _ = print_string ">> TEST_LESS_#3 = "
val result = 돌렷(빈메모리, 빈환경, prog)
val _ = print_newline()

val prog = WHILE(FALSE, WRITE(NUM 5))
//val prog = WHILE(TRUE, WRITE(NUM 5)) // infinite loop
val _ = print_string ">> TEST_WHILE_#1 = "
val result = 돌렷(빈메모리, 빈환경, prog)
val _ = print_newline()

val prog = LET("sum", NUM 0,
             SEQ(
               LET("x", NUM 1,
                 WHILE( LESS(VAR "x", NUM 11),
                   SEQ(
                     ASSIGN("sum", ADD(VAR "sum", VAR "x")),
                     ASSIGN("x", ADD(VAR "x", NUM 1))
                   )
                 )
               ),
               WRITE(VAR "sum")
             )
           )
val _ = print_string ">> TEST_WHILE_SUM[1,10] = "
val result = 돌렷(빈메모리, 빈환경, prog)
val _ = print_newline()

val prog = LET("sum", NUM 0,
             SEQ(
               LET("x", NUM 1,
                 FOR("x", NUM 1, NUM 10, ASSIGN("sum", ADD(VAR "sum", VAR "x")))
               ),
               WRITE(VAR "sum")
             )
           )
val _ = print_string ">> TEST_FOR_SUM[1,10] = "
val result = 돌렷(빈메모리, 빈환경, prog)
val _ = print_newline()

val _ = print_endline ">>"
val _ = print_newline()


결과
코드:

# #use "2.n";;
>>
>> TEST_WRITE = 1
>> TEST_ADD = 5
>> TEST_SUB = -1
>> TEST_MUL = 6
>> TEST_DIV = 1
>> TEST_LET_VAR = 3
>> TEST_SEQ = 35
>> TEST_ASSIGN = 7
>> TEST_IF1_#1 = 5
>> TEST_IF1_#2 =
>> TEST_IF2_#1 = 5105
>> TEST_IF2_#2 = 51010
>> TEST_EQUAL_#1 = 5105
>> TEST_EQUAL_#2 = 51010
>> TEST_EQUAL_#3 = 5105
>> TEST_EQUAL_#4 = 51010
>> TEST_EQUAL_#5 = 5105
>> TEST_LESS_#1 = 5105
>> TEST_LESS_#2 = 51010
>> TEST_LESS_#3 = 51010
>> TEST_WHILE_#1 =
>> TEST_WHILE_SUM[1,10] = 55
>> TEST_FOR_SUM[1,10] = 55
>>


참고) IF2의 경우 exp2와 exp3을 타입이 같은지 검사하기 때문에 그 구문에 들어있는 WRITE문이 실행되는 side-effect가 있습니다. 따라서 결과가 5 10 5 -> 5105 또는 5 10 10 -> 51010로 나옵니다.

즐거운 숙제되세요^^
위로
김덕환



가입: 2005년 8월 29일
올린 글: 190

올리기올려짐: 2005년10월6일 0:46    주제: Re: 숙제 2-2 테스트 코드 및 결과입니다. 인용과 함께 답변

최성록 씀:

참고) IF2의 경우 exp2와 exp3을 타입이 같은지 검사하기 때문에 그 구문에 들어있는 WRITE문이 실행되는 side-effect가 있습니다. 따라서 결과가 5 10 5 -> 5105 또는 5 10 10 -> 51010로 나옵니다.

이대로라면 K- 의미 정의를 따르고 있지 않는 것처럼 보입니다. https://ropas.snu.ac.kr/phpbb/viewtopic.php?t=71&start=15에서 민식 님과 상원 님의 대화 및 K- 의미 정의의 IF2를 살펴보시기 바랍니다. 의미 정의에 따르면 실행기(돌렷)은 5 또는 10만 출력해야 합니다.
_________________
TheyAreAsSmartAsYouAre
위로
사용자 정보 보기 비밀 메시지 보내기
황태현



가입: 2005년 9월 27일
올린 글: 10

올리기올려짐: 2005년10월6일 1:56    주제: 실행 결과입니다. 인용과 함께 답변

멋진 테스트 셋이네요.
거의 모든 경우를 검사해주는 것 같은데, 맞나요? :$

아래는 제 실행 결과입니다.
newline이 여기 저기 들어가서 보기 좋은 모양은 아니지만
어떤 의미를 가질 것 같아, 정리하지 않고 올립니다.

좋은 밤 되세요. /~

코드:

>>
>> TEST_WRITE = 1

>> TEST_ADD = 5

>> TEST_SUB = -1

>> TEST_MUL = 6

>> TEST_DIV = 1

>> TEST_LET_VAR = 3

>> TEST_SEQ = 3
5

>> TEST_ASSIGN = 7

>> TEST_IF1_#1 = 5

>> TEST_IF1_#2 =
>> TEST_IF2_#1 = 5

>> TEST_IF2_#2 = 10

>> TEST_EQUAL_#1 = 5

>> TEST_EQUAL_#2 = 10

>> TEST_EQUAL_#3 = 5

>> TEST_EQUAL_#4 = 10

>> TEST_EQUAL_#5 = 5

>> TEST_LESS_#1 = 5

>> TEST_LESS_#2 = 10

>> TEST_LESS_#3 = 10

>> TEST_WHILE_#1 =
>> TEST_WHILE_SUM[1,10] = 55

>> TEST_FOR_SUM[1,10] = 55

>>


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

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


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