diff options
Diffstat (limited to 'src/main.c')
-rw-r--r-- | src/main.c | 82 |
1 files changed, 53 insertions, 29 deletions
@@ -1,4 +1,4 @@ -// vim: nowrap +// Copyright (c) 2023, Marvin Borner <dev@marvinborner.de> #include <stdio.h> @@ -7,30 +7,35 @@ #include <reducer.h> #ifndef TEST +static void callback(int i, char ch) +{ + printf("%d: %c\n", i, ch); +} + int main(void) { - struct term *term = parse( - "((([([(1 [((1 1) 0)])] [(1 [((1 1) 0)])])] [[[((([((0 [[[[[0]]]]]) [[1]])] 0) [[0]]) ((([((((0 [[1]]) [[[0]]]) [[[0]]]) [0])] 1) [[0]]) (([[[((0 2) 1)]]] ([(0 [[1]])] 0)) ((2 ([([(0 [[0]])] ((((0 (([[[((0 2) 1)]]] [[[[3]]]]) [[[[(2 3)]]]])) [(0 [[(([[[((0 2) 1)]]] ([[[[[(2 ((((4 3) 2) 1) 0))]]]]] 1)) ([[[[[(1 ((((4 3) 2) 1) 0))]]]]] 0))]])]) [(0 [[(([[[((0 2) 1)]]] ([[[[[(1 ((((4 3) 2) 1) 0))]]]]] 1)) ([[[[[(0 ((((4 3) 2) 1) 0))]]]]] 1))]])]) [(0 [[(([[[((0 2) 1)]]] ([[[[[(0 ((((4 3) 2) 1) 0))]]]]] 1)) ([[[[[(2 ((((4 3) 2) 1) 0))]]]]] 1))]])]))] 1)) ([(0 [[0]])] 0)))))]]]) [[[[(0 (2 (1 3)))]]]]) (([([(1 [((1 1) 0)])] [(1 [((1 1) 0)])])] [[((([([(1 [((1 1) 0)])] [(1 [((1 1) 0)])])] [[[((([((0 [[[[[0]]]]]) [[1]])] 1) 0) (([[[((0 2) 1)]]] ([(0 [[1]])] 1)) ((2 ([(0 [[0]])] 1)) 0)))]]]) 0) (1 0))]]) [((0 [((0 [[1]]) [((0 [[0]]) [((0 [[0]]) [((0 [[0]]) [((0 [[0]]) [((0 [[1]]) [((0 [[1]]) [((0 [[0]]) [[0]])])])])])])])])]) [((0 [((0 [[0]]) [((0 [[1]]) [((0 [[0]]) [((0 [[0]]) [((0 [[0]]) [((0 [[1]]) [((0 [[1]]) [((0 [[0]]) [[0]])])])])])])])])]) [[0]])])]))"); - // 1-1-1-2-6-1-2-6-1-3-2-5-6-2-6-2-6-1-1-1-2-6-1-1-3-3-1-1-2-6-1-2-6-1-3-2-5-6-2-6-1-1-1-2-6-1-2-6-1-3-2-5-6-2-6-2-6-1-1-1-2-6-1-1-3-3-3-2-5-5-5-6-1-1-3-2-5-6-2-6-2-6-2-6-2-6-3-1-1-2-6-2-6-2-5-5-5-6-1-1-3-2-5-6-2-6-2-6-2-6-2-6-3-1-1-1-2-6-1-1-1-1-3-3-2-5-5-6-2-6-2-6-2-6-1-3-2-5-6-3-1-3-2-5-6-2-5-6-2-6-3-1-1-2-6-2-6-2-5-5-7-1-1-4-9-3-1-2-6-1-3-4-5-6-1-1-3-2-5-6-2-6-3-3-1-2-6-1-3-4-5-6-1-1-3-2-5-6-2-6-3-2-5-5-5-5-7-1-1-4-9-2-7-2-7-4-11-5-11-5-10-9-2-7-1-1-4-9-2-7-2-7-4-11-5-11-5-10-9-2-7-1-1-4-9-2-7-2-7-4-11-5-11-5-10-9-2-7-1-1-4-9-2-7-2-7-4-11-5-11-5-10-9-2-7-1-1-4-9-2-7-2-7-4-11-5-11-5-10-9-2-7-1-1-4-9-2-7-2-7-4-11-5-11-5-10-9-2-7-1-1-4-9-2-7-2-7-4-11-5-11-5-10-9-2-7-1-1-4-9-2-7-2-7-4-11-5-11-5-10-9-2-7-2-7-4-11-5-11-5-10-11-5-10-11-5-10-11-5-10-11-5-10-11-5-10-11-5-10-11-5-10-11-5-10-9-3-1-1-3-2-5-6-1-1-3-2-5-6-1-4-6-2-6-2-6-1-1-1-2-6-1-1-3-3-1-2-6-1-3-AAH-3-1-2-6-1-3-3-1-2-6-1-3-3-1-2-6-1-3-3-1-2-6-1-3-3-1-2-6-1-3-3-1-2-6-1-3-3-1-2-6-1-3-3-1-2-6-1-3-3-1-2-6-1-3-3-1-2-6-1-3-3-1-2-6-1-3-3-1-2-6-1-3-3-1-2-6-1-3-3-1-2-6-1-3-3-1-2-6-1-3-3-1-2-6-1-3-3-1-2-6-1-3-3-1-2-6-1-3-3-1-2-6-1-3-3-1-2-6-1-3-3-1-2-6-1-3-3-1-2-6-1-3-3-1-2-6-1-3-3-1-2-6-1-3-3-1-2-6-1-3-3-1-2-6-1-3-3-1-2-6-1-3-3-1-2-6-1-3-3-1-2-6-1-3-3-1-2-6-1-3-3-1-2-6-1-3-3-1-2-6-1-3-3-1-2-6-1-3-3-1-2-6-1-3-3-1-2-6-1-3-3-1-2-6-1-3-3-1-2-6-1-3-3-1-2-6-1-3-3-1-2-6-1-3-3-1-2-6-1-3-3-1-2-6-1-3-3-1-2-6-1-3-3-1-2-6-1-3-3-1-2-6-1-3-3-1-2-6-1-3-3-1-2-6-1-3-3-1-2-6-1-3-3-1-2-6-1-3-3-1-2-6-1-3-3-1-2-6-1-3-3-1-2-6-1-3-3-1-2-6-1-3-3-1-2-6-1-3-3-1-2-6-1-3-3-1-2-6-1-3-3-1-2-6-1-3-3-1-2-6-1-3-3-1-2-6-1-3-3-1-2-6-1-3-3-1-2-6-1-3-3-1-2-6-1-3-3-1-2-6-1-3-3-1-2-6-1-3-3-1-2-6-1-3-3-1-2-6-1-3-3-1-2-6-1-3-3-1-2-6-1-3-3-1-2-6-1-3-3-1-2-6-1-3-3-1-2-6-1-3-3-1-2-6-1-3-3-1-2-6-1-3-3-1-2-6-1-3-3-1-2-6-1-3-3-1 - // 1-1-1-2-6-1-2-6-1-3-2-5-6-2-6-2-6-1-1-1-2-6-1-1-3-3-1-1-2-6-1-2-6-1-3-2-5-6-2-6-1-1-1-2-6-1-2-6-1-3-2-5-6-2-6-2-6-1-1-1-2-6-1-1-3-3-3-2-5-5-5-6-1-1-3-2-5-6-2-6-2-6-2-6-2-6-3-1-1-2-6-2-6-2-5-5-5-6-1-1-3-2-5-6-2-6-2-6-2-6-2-6-3-1-1-1-2-6-1-1-1-1-3-3-2-5-5-6-2-6-2-6-2-6-1-3-2-5-6-3-1-3-2-5-6-2-5-6-2-6-3-1-1-2-6-2-6-2-5-5-7-1-1-4-9-3-1-2-6-1-3-4-5-6-1-1-3-2-5-6-2-6-3-3-1-2-6-1-3-4-5-6-1-1-3-2-5-6-2-6-3-2-5-5-5-5-7-1-1-4-9-2-7-2-7-4-11-5-11-5-10-9-2-7-1-1-4-9-2-7-2-7-4-11-5-11-5-10-9-2-7-1-1-4-9-2-7-2-7-4-11-5-11-5-10-9-2-7-1-1-4-9-2-7-2-7-4-11-5-11-5-10-9-2-7-1-1-4-9-2-7-2-7-4-11-5-11-5-10-9-2-7-1-1-4-9-2-7-2-7-4-11-5-11-5-10-9-2-7-1-1-4-9-2-7-2-7-4-11-5-11-5-10-9-2-7-1-1-4-9-2-7-2-7-4-11-5-11-5-10-9-2-7-2-7-4-11-5-11-5-10-11-5-10-11-5-10-11-5-10-11-5-10-11-5-10-11-5-10-11-5-10-11-5-10-9-3-1-1-3-2-5-6-1-1-3-2-5-6-1-4-6-2-6-2-6-1-1-1-2-6-1-1-3-3-1-2-6-1-3-AAH-4-5-6-1-1-3-2-5-6-2-6-3-3-1-1-3-2-5-6-1-1-3-2-5-6-1-4-6-2-6-2-6-1-1-1-2-6-1-1-3-3-3-1-2-6-1-3-4-5-6-1-1-3-2-5-6-2-6-3-2-5-5-5-5-6-1-1-3-2-5-6-2-6-2-6-2-6-2-6-3-1-1-2-6-2-6-2-5-5-5-5-5-6-1-1-3-2-5-6-2-6-2-6-2-6-2-6-3-1-1-1-2-6-1-1-1-1-3-3-3-1-2-6-1-2-6-1-3-1-1-1-1-3-4-5-6-2-6-2-6-2-6-1-3-2-5-6-1-3-1-3-2-5-6-1-3-1-3-2-5-6-1-3-3-1-1-2-6-2-6-2-5-5-6-1-1-3-2-5-6-2-6-1-1-2-6-2-6-2-5-6-1-1-3-2-5-6-2-6-1-1-2-6-2-6-2-5-6-1-1-3-2-5-6-2-6-1-1-2-6-2-6-2-5-6-1-1-3-2-5-6-2-6-3-3-1-2-6-2-5-5-5-5-5-6-2-6-2-6-2-6-1-3-2-5-6-2-6-2-6-3-1-1-2-6-2-6-2-5-5-5-7-1-1-4-9-3-1-2-6-1-3-4-5-6-1-1-3-2-5-6-2-6-3-3-1-2-6-1-3-4-5-6-1-1-3-2-5-6-2-6-3-2-5-5-5-5-7-1-1-4-9-2-7-2-7-4-11-5-11-5-10-9-2-7-1-1-4-9-2-7-2-7-4-11-5-11-5-10-9-2-7-1-1-4-9-2-7-2-7-4-11-5-11-5-10-9-2-7-1-1-4-9-2-7-2-7-4-11-5-11-5-10-9-2-7-1-1-4-9-2-7-2-7-4-11-5-11-5-10-9-2-7-1-1-4-9-2-7-2-7-4-11-5-11-5-10-9-2-7-1-1-4-9-2-7-2-7-4-11-5-11-5-10-9-2-7-1-1-4-9-2-7-2-7-4-11-5-11-5-10-9-2-7-2-7-4-11-5-11-5-10-11-5-10-11-5-10-11-5-10-11-5-10-11-5-10-11-5-10-11-5-10-11-5-10-9-3-1-1-3-2-5-6-1-1-3-4-5-6-1-4-6-2-6-2-6-1-1-1-2-6-1-1-3-3-1-2-6-1-3-4-5-6-1-1-3-2-5-6-2-6-3-3-1-1-3-2-5-6-1-1-3-4-5-6-1-4-6-2-6-2-6-1-1-1-2-6-1-1-3-3-3-1-2-6-1-3-4-5-6-1-1-3-2-5-6-2-6-3-2-5-5-5-5-6-2-6-3-2-5-6-2-6-3-3-3-3-1-3-2-5-6-1-1-3-2-5-6-1-4-6-2-6-1-1-1-2-6-1-2-6-1-3-2-5-6-2-6-2-6-1-1-1-2-6-1-1-3-3-3-3-4-5-5-5-5-6-1-1-3-2-5-6-2-6-2-6-2-6-2-6-3-1-1-2-6-2-6-2-5-5-5-5-5-5-5-5-5-6-1-1-3-2-5-6-2-6-2-6-2-6-2-6-3-1-1-1-2-6-1-1-1-1-3-3-3-1-2-6-1-2-6-1-3-1-1-1-1-3-4-5-6-2-6-2-6-2-6-1-3-2-5-6-1-3-1-1-1-1-3-3-3-1-2-6-2-5-5-5-6-2-6-2-6-2-6-1-3-4-5-6-1-3-1-1-1-1-3-3-3-1-2-6-2-5-5-5-6-2-6-2-6-2-6-1-3-3-3-2-5-5-5-6-1-3-1-1-1-1-3-3-3-2-5-5-5-6-2-6-2-6-2-6-3-3-3-3-1-1-2-6-2-6-2-5-5-5-5-5-6-1-1-3-2-5-6-2-6-1-1-2-6-2-6-2-5-6-1-1-3-2-5-6-2-6-1-1-2-6-2-6-2-5-6-1-1-3-2-5-6-2-6-1-1-2-6-2-6-2-5-6-1-1-3-2-5-6-2-6-3-3-1-2-6-2-5-5-5-5-5-6-2-6-2-6-2-6-1-3-2-5-6-2-6-2-6-3-1-1-2-6-2-6-2-5-5-5-7-1-1-4-9-3-1-2-6-1-3-4-5-6-1-1-3-2-5-6-2-6-3-3-1-2-6-1-3-4-5-6-1-1-3-2-5-6-2-6-3-2-5-5-5-5-7-1-1-4-9-2-7-2-7-4-11-5-11-5-10-9-2-7-1-1-4-9-2-7-2-7-4-11-5-11-5-10-9-2-7-1-1-4-9-2-7-2-7-4-11-5-11-5-10-9-2-7-1-1-4-9-2-7-2-7-4-11-5-11-5-10-9-2-7-1-1-4-9-2-7-2-7-4-11-5-11-5-10-9-2-7-1-1-4-9-2-7-2-7-4-11-5-11-5-10-9-2-7-1-1-4-9-2-7-2-7-4-11-5-11-5-10-9-2-7-1-1-4-9-2-7-2-7-4-11-5-11-5-10-9-2-7-2-7-4-11-5-11-5-10-11-5-10-11-5-10-11-5-10-11-5-10-11-5-10-11-5-10-11-5-10-11-5-10-9-3-1-1-3-2-5-6-1-1-3-4-5-6-1-4-6-2-6-2-6-1-1-1-2-6-1-1-3-3-1-2-6-1-3-4-5-6-1-1-3-2-5-6-2-6-3-3-1-1-3-2-5-6-1-1-3-2-5-6-1-4-6-2-6-2-6-1-1-1-2-6-1-1-3-3-3-1-2-6-1-3-4-5-6-1-1-3-2-5-6-2-6-3-2-5-5-5-5-6-1-1-3-2-5-6-2-6-2-6-2-6-2-6-3-1-1-2-6-2-6-2-5-5-5-5-5-6-1-1-3-2-5-6-2-6-2-6-2-6-2-6-3-1-1-1-2-6-1-1-1-1-3-3-3-1-2-6-1-2-6-1-3-1-1-1-1-3-4-5-6-2-6-2-6-2-6-1-3-2-5-6-1-3-1-1-1-1-3-3-3-1-2-6-2-5-5-5-6-2-6-2-6-2-6-1-3-4-5-6-1-3-1-1-1-1-3-3-3-1-2-6-2-5-5-5-6-2-6-2-6-2-6-1-3-3-3-2-5-5-5-6-1-3-1-1-1-1-3-3-3-2-5-5-5-6-2-6-2-6-2-6-3-3-3-3-1-1-2-6-2-6-2-5-5-5-5-5-6-1-1-3-2-5-6-2-6-1-1-2-6-2-6-2-5-6-1-1-3-2-5-6-2-6-1-1-2-6-2-6-2-5-6-1-1-3-2-5-6-2-6-1-1-2-6-2-6-2-5-6-1-1-3-2-5-6-2-6-3-3-1-2-6-2-5-5-5-5-5-6-2-6-2-6-2-6-1-3-2-5-6-3-1-1-1-1-3-3-3-1-2-6-2-5-5-5-6-2-6-2-6-2-6-1-3-3-2-5-5-6-2-5-6-2-6-3-1-1-2-6-2-6-2-5-5-5-7-1-1-4-9-3-1-2-6-1-3-4-5-6-1-1-3-2-5-6-2-6-3-3-1-2-6-1-3-4-5-6-1-1-3-2-5-6-2-6-3-2-5-5-5-5-7-1-1-4-9-2-7-2-7-4-11-5-11-5-10-9-2-7-1-1-4-9-2-7-2-7-4-11-5-11-5-10-9-2-7-1-1-4-9-2-7-2-7-4-11-5-11-5-10-9-2-7-1-1-4-9-2-7-2-7-4-11-5-11-5-10-9-2-7-1-1-4-9-2-7-2-7-4-11-5-11-5-10-9-2-7-1-1-4-9-2-7-2-7-4-11-5-11-5-10-9-2-7-1-1-4-9-2-7-2-7-4-11-5-11-5-10-9-2-7-1-1-4-9-2-7-2-7-4-11-5-11-5-10-9-2-7-2-7-4-11-5-11-5-10-11-5-10-11-5-10-11-5-10-11-5-10-11-5-10-11-5-10-11-5-10-11-5-10-9-3-1-1-3-2-5-6-1-1-3-4-5-6-1-4-6-2-6-2-6-1-1-1-2-6-1-1-3-3-1-2-6-1-3-4-5-6-1-1-3-2-5-6-2-6-3-3-1-1-3-2-5-6-1-1-3-4-5-6-1-4-6-2-6-2-6-1-1-1-2-6-1-1-3-3-3-1-2-6-1-3-4-5-6-1-1-3-2-5-6-2-6-3-2-5-5-5-5-6-2-6-3-2-5-6-2-6-3-3-3-3-1-3-2-5-6-1-1-3-4-5-6-1-4-6-2-6-1-1-1-2-6-1-2-6-1-3-2-5-6-2-6-2-6-1-1-1-2-6-1-1-3-3-3-3-4-5-5-5-5-6-1-1-3-2-5-6-2-6-2-6-2-6-2-6-3-1-1-2-6-2-6-2-5-5-5-5-5-5-5-5-5-6-1-1-3-2-5-6-2-6-2-6-2-6-2-6-3-1-1-1-2-6-1-1-1-1-3-3-3-1-2-6-1-2-6-1-3-1-1-1-1-3-4-5-6-2-6-2-6-2-6-1-3-2-5-6-1-3-1-1-1-1-4-6-2-6-2-6-2-6-1-3-3-2-5-5-6-1-3-1-1-1-1-3-3-3-1-2-6-2-5-5-5-6-2-6-2-6-2-6-1-3-3-4-5-5-6-1-3-1-1-1-1-3-3-3-2-5-5-5-6-2-6-2-6-2-6-3-3-3-3-1-1-2-6-2-6-2-5-5-5-5-5-6-1-1-3-2-5-6-2-6-1-1-2-6-2-6-2-5-6-1-1-3-2-5-6-2-6-1-1-2-6-2-6-2-5-6-1-1-3-2-5-6-2-6-1-1-2-6-2-6-2-5-6-1-1-3-2-5-6-2-6-3-3-1-2-6-2-5-5-5-5-5-6-2-6-2-6-2-6-1-3-2-5-6-2-6-2-6-3-1-1-2-6-2-6-2-5-5-5-7-1-1-4-9-3-1-2-6-1-3-4-5-6-1-1-3-2-5-6-2-6-3-3-1-2-6-1-3-4-5-6-1-1-3-2-5-6-2-6-3-2-5-5-5-5-7-1-1-4-9-2-7-2-7-4-11-5-11-5-10-9-2-7-1-1-4-9-2-7-2-7-4-11-5-11-5-10-9-2-7-1-1-4-9-2-7-2-7-4-11-5-11-5-10-9-2-7-1-1-4-9-2-7-2-7-4-11-5-11-5-10-9-2-7-1-1-4-9-2-7-2-7-4-11-5-11-5-10-9-2-7-1-1-4-9-2-7-2-7-4-11-5-11-5-10-9-2-7-1-1-4-9-2-7-2-7-4-11-5-11-5-10-9-2-7-1-1-4-9-2-7-2-7-4-11-5-11-5-10-9-2-7-2-7-4-11-5-11-5-10-11-5-10-11-5-10-11-5-10-11-5-10-11-5-10-11-5-10-11-5-10-11-5-10-9-3-1-1-3-2-5-6-1-1-3-4-5-6-1-4-6-2-6-2-6-1-1-1-2-6-1-1-3-3-1-2-6-1-3-4-5-6-1-1-3-2-5-6-2-6-3-3-1-1-3-2-5-6-1-1-3-2-5-6-1-4-6-2-6-2-6-1-1-1-2-6-1-1-3-3-3-1-2-6-1-3-4-5-6-1-1-3-2-5-6-2-6-3-2-5-5-5-5-6-1-1-3-2-5-6-2-6-2-6-2-6-2-6-3-1-1-2-6-2-6-2-5-5-5-5-5-6-1-1-3-2-5-6-2-6-2-6-2-6-2-6-3-1-1-1-2-6-1-1-1-1-3-3-3-1-2-6-1-2-6-1-3-1-1-1-1-3-4-5-6-2-6-2-6-2-6-1-3-2-5-6-1-3-1-1-1-1-3-3-3-1-2-6-2-5-5-5-6-2-6-2-6-2-6-1-3-3-2-5-5-6-1-3-1-1-1-1-3-3-3-1-2-6-2-5-5-5-6-2-6-2-6-2-6-1-3-3-3-2-5-5-5-6-1-3-1-1-1-1-3-3-3-2-5-5-5-6-2-6-2-6-2-6-3-3-3-3-1-1-2-6-2-6-2-5-5-5-5-5-6-1-1-3-2-5-6-2-6-1-1-2-6-2-6-2-5-6-1-1-3-2-5-6-2-6-1-1-2-6-2-6-2-5-6-1-1-3-2-5-6-2-6-1-1-2-6-2-6-2-5-6-1-1-3-2-5-6-2-6-3-3-1-2-6-2-5-5-5-5-5-6-2-6-2-6-2-6-1-3-2-5-6-2-6-2-6-3-1-1-2-6-2-6-2-5-5-5-7-1-1-4-9-3-1-2-6-1-3-4-5-6-1-1-3-2-5-6-2-6-3-3-1-2-6-1-3-4-5-6-1-1-3-2-5-6-2-6-3-2-5-5-5-5-7-1-1-4-9-2-7-2-7-4-11-5-11-5-10-9-2-7-1-1-4-9-2-7-2-7-4-11-5-11-5-10-9-2-7-1-1-4-9-2-7-2-7-4-11-5-11-5-10-9-2-7-1-1-4-9-2-7-2-7-4-11-5-11-5-10-9-2-7-1-1-4-9-2-7-2-7-4-11-5-11-5-10-9-2-7-1-1-4-9-2-7-2-7-4-11-5-11-5-10-9-2-7-1-1-4-9-2-7-2-7-4-11-5-11-5-10-9-2-7-1-1-4-9-2-7-2-7-4-11-5-11-5-10-9-2-7-2-7-4-11-5-11-5-10-11-5-10-11-5-10-11-5-10-11-5-10-11-5-10-11-5-10-11-5-10-11-5-10-9-3-1-1-3-2-5-6-1-1-3-4-5-6-1-4-6-2-6-2-6-1-1-1-2-6-1-1-3-3-1-2-6-1-3-4-5-6-1-1-3-2-5-6-2-6-3-3-1-1-3-2-5-6-1-1-3-4-5-6-1-4-6-2-6-2-6-1-1-1-2-6-1-1-3-3-3-1-2-6-1-3-4-5-6-1-1-3-2-5-6-2-6-3-2-5-5-5-5-6-2-6-3-2-5-6-2-6-3-3-3-3-1-3-2-5-6-1-1-3-4-5-6-1-4-6-2-6-1-1-1-2-6-1-2-6-1-3-2-5-6-2-6-2-6-1-1-1-2-6-1-1-3-3-3-3-4-5-5-5-5-6-1-1-3-2-5-6-2-6-2-6-2-6-2-6-3-1-1-2-6-2-6-2-5-5-5-5-5-5-5-5-5-6-1-1-3-2-5-6-2-6-2-6-2-6-2-6-3-1-1-1-2-6-1-1-1-1-3-3-3-1-2-6-1-2-6-1-3-1-1-1-1-3-4-5-6-2-6-2-6-2-6-1-3-2-5-6-1-3-1-1-1-1-3-3-3-1-2-6-2-5-5-5-6-2-6-2-6-2-6-1-3-3-2-5-5-6-1-3-1-1-1-1-3-3-3-1-2-6-2-5-5-5-6-2-6-2-6-2-6-1-3-4-5-6-1-3-1-1-1-1-3-3-3-2-5-5-5-6-2-6-2-6-2-6-3-3-3-3-1-1-2-6-2-6-2-5-5-5-5-5-6-1-1-3-2-5-6-2-6-1-1-2-6-2-6-2-5-6-1-1-3-2-5-6-2-6-1-1-2-6-2-6-2-5-6-1-1-3-2-5-6-2-6-1-1-2-6-2-6-2-5-6-1-1-3-2-5-6-2-6-3-3-1-2-6-2-5-5-5-5-5-6-2-6-2-6-2-6-1-3-2-5-6-3-1-1-1-1-3-3-3-1-2-6-2-5-5-5-6-2-6-2-6-2-6-1-3-4-5-6-3-1-1-1-1-3-3-3-1-2-6-2-5-5-5-6-2-6-2-6-2-6-1-3-4-5-6-3-1-1-1-1-3-3-3-2-5-5-5-6-2-6-2-6-2-6-3-3-3-3-2-5-5-5-5-5-5-5-6-2-6-3-2-5-5-5-7-2-7-4-11-5-11-5-10-11-5-10-11-5-10-11-5-10-11-5-10-11-5-10-11-5 + // Benchmarking test for memory leaks and stack overflows, will probably not return: "([(((0 [[((0 1) 0)]]) [(0 0)]) 0)] [[(1 (1 0))]])" + struct term *term = + parse("([(((0 [[((0 1) 0)]]) [(0 0)]) 0)] [[(1 (1 0))]])"); - /* print_scheme(term); */ printf("\nReduced:\n"); - reduce(term); - /* print_term(reduced); */ + struct term *reduced = reduce(term, callback); + to_bruijn(reduced); + print_term(reduced); printf("\n"); free_term(term); - /* free_term(reduced); */ + free_term(reduced); return 0; } #else -#define TESTS 2 +#define TESTS 6 #define TESTDIR "./tests/" #include <stdlib.h> #include <string.h> #include <errno.h> #include <time.h> +#include <gc.h> static char *read_file(const char *path) { @@ -58,18 +63,32 @@ static char *read_file(const char *path) return string; } +// global vars suck I know but how could I do it any other way? +static struct { + struct term *in; + struct term *res; + struct term *red; + char *trans; + struct { + int alpha; + int trans; + } equivalency; +} tests[TESTS] = { 0 }; +static int current = 0; + +static void callback(int i, char ch) +{ + if (ch != tests[current].trans[i]) { + fprintf(stderr, "Transition deviation at index %d!\n", i); + tests[current].equivalency.trans = 0; + } + /* printf("%d: %c\n", i, ch); */ +} + int main(void) { - struct { - struct term *in; - struct term *res; - struct term *red; - char *trans; - struct { - int alpha; - int trans; - } equivalency; - } tests[TESTS] = { 0 }; + GC_INIT(); + char in_template[] = TESTDIR "x.in"; char red_template[] = TESTDIR "x.red"; char trans_template[] = TESTDIR "x.trans"; @@ -89,30 +108,35 @@ int main(void) tests[i].red = parse(red); to_bruijn(tests[i].red); free(red); + + tests[i].equivalency.trans = 1; } clock_t begin = clock(); - for (int i = 0; i < TESTS; i++) - tests[i].res = reduce(tests[i].in); + for (current = 0; current < TESTS; current++) { + tests[current].res = reduce(tests[current].in, callback); + printf("Test %d done\n", current + 1); + } clock_t end = clock(); for (int i = 0; i < TESTS; i++) { to_bruijn(tests[i].res); tests[i].equivalency.alpha = alpha_equivalency(tests[i].res, tests[i].red); - tests[i].equivalency.trans = 1; // TODO + free(tests[i].in); + free(tests[i].res); + free(tests[i].red); } printf("=== SUMMARY ===\n"); printf("Reduced tests in %.5fs\n", (double)(end - begin) / CLOCKS_PER_SEC); for (int i = 0; i < TESTS; i++) { - if (!tests[i].equivalency.alpha || - !tests[i].equivalency.trans) { - printf("Test %d: [failed]\n\talpha-equivalency: %d\n\ttrans-equivalency: %d\n", - i, tests[i].equivalency.alpha, - tests[i].equivalency.trans); - } + if (tests[i].equivalency.alpha && tests[i].equivalency.trans) + continue; + printf("Test %d: [failed]\n\talpha-equivalency: %d\n\ttrans-equivalency: %d\n", + i + 1, tests[i].equivalency.alpha, + tests[i].equivalency.trans); } } #endif |