Woo! Only 42 failures now!
Cat's Eye Technologies
11 years ago
276 | 276 | emit(RNm) & |
277 | 277 | emitln(');'). |
278 | 278 | |
279 | # TODO: ARGUMENTS! | |
280 | 279 | compile_r(P,B,Mod, call(prodref(M, N), A)) = |
280 | emit_arguments(P,B,Mod, A, nil) → ArgNms & | |
281 | 281 | emit('prod_') & |
282 | 282 | emit(M) & |
283 | 283 | emit('_') & |
284 | 284 | emit(N) & |
285 | emitln('();'). | |
285 | emit('(') & | |
286 | emit_arguments_call(ArgNms) & | |
287 | emitln(');'). | |
288 | ||
289 | emit_arguments(P,B,Mod, nil, Nms) = list:reverse(Nms, nil). | |
290 | emit_arguments(P,B,Mod, list(A, Tail), Nms) = | |
291 | compile_r(P,B,Mod, A) → Nm & | |
292 | Nms ← list(Nm, Nms) & | |
293 | emit_arguments(P,B,Mod, Tail, Nms). | |
294 | ||
295 | emit_arguments_call(nil) = 'ok'. | |
296 | emit_arguments_call(list(H, nil)) = | |
297 | emit(H). | |
298 | emit_arguments_call(list(H, T)) = | |
299 | emit(H) & | |
300 | emit(', ') & | |
301 | emit_arguments_call(T). | |
302 | ||
286 | 303 | |
287 | 304 | compile_r(P,B,Mod, and(L, R)) = |
288 | 305 | compile_r(P,B,Mod, L) & |