방정호
가입: 2011년 9월 19일 올린 글: 40
|
올려짐: 2014년11월16일 23:24 주제: 6-2 에서 main 함수, makefile 수정. |
|
|
다른 분들도 이렇게 하고 계실 것 같긴 한데, 테스트할 때 이렇게 하면 좀 편하더군요.
main 파일을 이렇게 수정했습니다.
open M 뒤에 저렇게 추가를 하고,
코드: |
open M
open Evaluate
let main () =
|
이런 형식으로 출력되도록 했어요. reduce 결과가 마지막에 나오도록.
코드: |
print_string "=============\n";
print_string "input program\n";
print_string "=============\n";
M_Printer.print pgm;
print_string "\n\n\n============\n";
print_string "output program\n";
print_string "=============\n";
let output = Encoder.encode pgm in
Pp.pp (output);
print_string "\n\n\n============\n";
print_string "reduced program\n";
print_string "=============\n";
Pp.pp (Evaluator.reduce output);
print_string "\n"
|
Makefile에서 evaluate.ml 도 같이 빌드하도록 추가를 했어요.
코드: |
all: run
run: lexer.cmo parser.cmo evaluate.cmo m.cmo encode.cmo main.cmo
ocamlc -o run lexer.cmo parser.cmo evaluate.cmo encode.cmo m.cmo pp.cmo main.cmo
..........
evaluate.cmo : evaluate.ml lambda.cmo
ocamlc -c evaluate.ml
.......
main.cmo : evaluate.cmo encode.cmo main.ml pp.cmo
ocamlc -c main.ml
|
이렇게 수정하고, evaluate.ml을 6-2 과제 폴더에 넣고 make 하면 됐습니다.
테스트 케이스 올려주신 분들 감사합니다.
이건 걍 제가 테스트해 본 5부터 0까지 쭉 더하는 이상한 코드 입니다.
코드: |
(rec rrr x => ifzero ((x+1) and (x-0)) then (1,10).2 - 20 else (x+rrr(x-(3 and 5)))) 5
|
|
|