게시판 인덱스

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

[숙제 4] K- 실행기 모범 답안 및 테스트 케이스 실행 방법 안내드립니다.

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


가입: 2022년 3월 6일
올린 글: 209

올리기올려짐: 2024년4월22일 16:52    주제: [숙제 4] K- 실행기 모범 답안 및 테스트 케이스 실행 방법 안내드립니다. 인용과 함께 답변

안녕하세요 수강생 여러분,

숙제 4-1 "K- 실행기"의 모범 답안은 아래와 같습니다.
http://ropas.snu.ac.kr/~ta/4190.310/24/show/4-1.ml

숙제 4-2 및 4-3을 확인할 때 도움이 되실 것입니다.
본인의 답안 혹은 모범 답안을 사용하여 아래의 테스트 케이스를 실행해보시면 됩니다.

이제 테스트 케이스 실행 방법을 구체적으로 설명드리겠습니다.
1. 구현하실 때 사용하신 뼈대 코드의 bin 디렉터리의 dune 파일을
코드:
(executable
 (public_name k_)
 (name main)
 (libraries k_ unix str))

와 같이 수정합니다.

2. 뼈대 코드 디렉터리 안에 (원래 dune build --release를 실행했던 경로) numch.k- 혹은 tree.k- 파일을 넣습니다.

3. 같은 경로에서 `dune utop`을 실행합니다.
이제 (lib 내부의 모듈들이 담겨있는) `K_` 모듈 아래 (k.ml 파일에 대응되는) `K` 모듈 속 `K.run` (여기서 K는 k.ml 안 K 모듈) 등을 실행할 수 있는 상태가 됩니다.

4. UTOP 안에서
코드:
open Unix
open Str
open K_
open K
let read_all filename =
  let chan = open_in filename in
  let res = really_input_string chan (in_channel_length chan) in
  let _ = close_in chan in
  res
let replace_last pattern_s new_s s =
  let idx_1 = Str.search_backward (regexp pattern_s) s (String.length s) in
  let idx_2 = idx_1 + String.length pattern_s in
  Str.string_before s idx_1 ^ new_s ^ Str.string_after s idx_2;;

을 실행합니다.
"numch.k-"파일을 확인하고 싶은 경우,
코드:
let pgm_str = read_all "numch.k-";;

"tree.k-"파일을 확인하고 싶은 경우, `testcase_str`에 원하는 테스트 케이스를 넣어서
코드:
let testcase_str = "let tr := makeTree(1, leaf(2), leaf(3)) in write (nodeVal (lTree(tr)))"
let pgm_str =
  let pgm_str = read_all "tree.k-" in
  replace_last "2024" testcase_str pgm_str;;

를 실행합니다.
이후
코드:
let pgm = Parser.program Lexer.start (Lexing.from_string pgm_str);;

를 실행하면, 작성하신 numch.k- 혹은 tree.k- 코드의 문법 나무를 보실 수 있습니다.
이제
코드:
(K.run (K.emptyMemory, K.emptyEnv, pgm));;

를 실행하여, numch.k-의 경우 직접 Test 값을 넣어 확인하시거나, tree.k-의 경우 바로 값을 확인하실 수 있습니다.

감사합니다.

조교 드림


TA 이재호
e-mail: jhlee@ropas.snu.ac.kr
위로
사용자 정보 보기 비밀 메시지 보내기 이메일 보내기 글 올린이의 웹사이트 방문
이전 글 표시:   
이 게시판은 잠겼으므로 글을 올리거나, 답변을 하거나 수정을 할 수 없습니다   이 주제는 잠겼으므로 답변을 하거나 수정을 할 수 없습니다     게시판 인덱스 -> 4190.310 Programming Languages (Spring 2024) 시간대: GMT + 9 시간(한국)
페이지 11

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


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