@@ -12,6 +12,7 @@ MNJ = deps/minijava-parser.jar
12
12
PGI = deps/pgi.jar
13
13
SPP = deps/spp.jar
14
14
KGI = deps/kgi.jar
15
+ SPIM = spim
15
16
16
17
default : build
17
18
@@ -63,16 +64,20 @@ TEST_PGI_DIR = testcases/piglet
63
64
TEST_PGI = $(wildcard $(TEST_PGI_DIR ) /* .pg)
64
65
65
66
TEST_SPGI_DIR = testcases/spiglet
66
- TEST_SPGI = $(wildcard $(TEST_SPGI_DIR ) /* .spg)
67
+ TEST_SPGI = $(wildcard $(TEST_SPGI_DIR ) /* .spg)
67
68
68
- test : testtc testmj testpg testkg testmj2spgi testall
69
+ TEST_KGI_DIR = testcases/kanga
70
+ TEST_KGI = $(wildcard $(TEST_KGI_DIR ) /* .kg)
71
+
72
+ test : testtc testmj testpg testkg testmj2spgi testmp # testall
69
73
@echo Congrats! You have passed all the test.
70
74
71
75
testtc : $(patsubst $(TEST_TC_DIR ) /% .java, % .testtc, $(TEST_TC ) )
72
76
testmj : $(patsubst $(TEST_MJ_DIR ) /% .java, % .testmj, $(TEST_MJ ) )
73
77
testpg : $(patsubst $(TEST_PGI_DIR ) /% .pg, % .testpg, $(TEST_PGI ) )
74
78
testmj2spgi : $(patsubst $(TEST_MJ_DIR ) /% .java, % .testmj2spgi, $(TEST_MJ ) )
75
79
testkg : $(patsubst $(TEST_SPGI_DIR ) /% .spg, % .testkg, $(TEST_SPGI ) )
80
+ testmp : $(patsubst $(TEST_KGI_DIR ) /% .kg, % .testmp, $(TEST_KGI ) )
76
81
testall : $(patsubst $(TEST_MJ_DIR ) /% .java, % .testall, $(TEST_MJ ) )
77
82
78
83
OkText = "Program type checked successfully"
@@ -235,3 +240,17 @@ endef
235
240
false ; \
236
241
fi
237
242
243
+ % .testmp : $(TEST_KGI_DIR ) /% .kg
244
+ @if [ ! -d $( TEMP_DIR) ] ; then mkdir -p $(TEMP_DIR ) ; fi
245
+ @$(JAVA ) -jar $(KGI ) < $< > $(TEMP_DIR ) /std.$@ .output
246
+ @$(JAVA ) -cp $(OUT ) K2M < $< > $(TEMP_DIR ) /dump.$@ .s
247
+ @$(SPIM ) -file $(TEMP_DIR ) /dump.$@ .s | sed ' 1,5d' > $(TEMP_DIR ) /my.$@ .output
248
+ @diff $(TEMP_DIR ) /my.$@ .output $(TEMP_DIR ) /std.$@ .output
249
+ @if [ $$ ? -eq 0 ]; then \
250
+ echo " [ K2M ] passed!" $< ; \
251
+ rm $(TEMP_DIR ) /std.$@ .output $(TEMP_DIR ) /my.$@ .output $(TEMP_DIR ) /dump.$@ .s; \
252
+ else \
253
+ echo " [ K2M ] failed!" $< ; \
254
+ $(JAVA ) -cp $(OUT ) K2M < $< > $(OUT ) /dump.s && \
255
+ false ; \
256
+ fi
0 commit comments