(datatype action (:shift int) (:reduce int int)) (datatype action-list (:nil) (:cons int (action) (action-list))) (datatype goto-list (:nil) (:cons int int (goto-list))) (define terminals '#( rparen STRING NEWLINE NUMBER <$> comma lparen NAME )) (define non-terminals '#( predicate_c_2_q predicate list_c_1_s1 expr list file_c_0_s_o file atom )) (define actions (literal #( (action-list:cons 5 (action:reduce 0 7) (action-list:cons 3 (action:shift 3) (action-list:cons 2 (action:shift 2) (action-list:cons 1 (action:shift 1) (action-list:cons 8 (action:shift 4) (action-list:nil)))))) (action-list:cons 8 (action:reduce 1 8) (action-list:cons 6 (action:reduce 1 8) (action-list:cons 5 (action:reduce 1 8) (action-list:cons 3 (action:reduce 1 8) (action-list:cons 2 (action:reduce 1 8) (action-list:cons 1 (action:reduce 1 8) (action-list:cons 0 (action:reduce 1 8) (action-list:nil)))))))) (action-list:cons 5 (action:reduce 1 6) (action-list:cons 3 (action:reduce 1 6) (action-list:cons 2 (action:reduce 1 6) (action-list:cons 1 (action:reduce 1 6) (action-list:cons 8 (action:reduce 1 6) (action-list:nil)))))) (action-list:cons 8 (action:reduce 1 8) (action-list:cons 6 (action:reduce 1 8) (action-list:cons 5 (action:reduce 1 8) (action-list:cons 3 (action:reduce 1 8) (action-list:cons 2 (action:reduce 1 8) (action-list:cons 1 (action:reduce 1 8) (action-list:cons 0 (action:reduce 1 8) (action-list:nil)))))))) (action-list:cons 8 (action:reduce 1 8) (action-list:cons 7 (action:shift 10) (action-list:cons 6 (action:reduce 1 8) (action-list:cons 5 (action:reduce 1 8) (action-list:cons 3 (action:reduce 1 8) (action-list:cons 2 (action:reduce 1 8) (action-list:cons 1 (action:reduce 1 8) (action-list:cons 0 (action:reduce 1 8) (action-list:nil))))))))) (action-list:cons 8 (action:reduce 1 4) (action-list:cons 6 (action:reduce 1 4) (action-list:cons 5 (action:reduce 1 4) (action-list:cons 3 (action:reduce 1 4) (action-list:cons 2 (action:reduce 1 4) (action-list:cons 1 (action:reduce 1 4) (action-list:cons 0 (action:reduce 1 4) (action-list:nil)))))))) (action-list:cons 5 (action:reduce 1 6) (action-list:cons 3 (action:reduce 1 6) (action-list:cons 2 (action:reduce 1 6) (action-list:cons 1 (action:reduce 1 6) (action-list:cons 8 (action:reduce 1 6) (action-list:nil)))))) (action-list:cons 5 (action:reduce 0 7) (action-list:cons 3 (action:shift 3) (action-list:cons 2 (action:shift 2) (action-list:cons 1 (action:shift 1) (action-list:cons 8 (action:shift 4) (action-list:nil)))))) (action-list:cons 5 (action:shift 12) (action-list:nil)) (action-list:cons 8 (action:reduce 1 4) (action-list:cons 6 (action:reduce 1 4) (action-list:cons 5 (action:reduce 1 4) (action-list:cons 3 (action:reduce 1 4) (action-list:cons 2 (action:reduce 1 4) (action-list:cons 1 (action:reduce 1 4) (action-list:cons 0 (action:reduce 1 4) (action-list:nil)))))))) (action-list:cons 0 (action:reduce 0 0) (action-list:cons 3 (action:shift 3) (action-list:cons 1 (action:shift 1) (action-list:cons 8 (action:shift 4) (action-list:nil))))) (action-list:cons 5 (action:reduce 2 7) (action-list:nil)) (action-list:cons 4 (action:reduce 2 3) (action-list:nil)) (action-list:cons 0 (action:shift 16) (action-list:nil)) (action-list:cons 6 (action:shift 17) (action-list:cons 0 (action:reduce 0 2) (action-list:nil))) (action-list:cons 0 (action:reduce 1 0) (action-list:nil)) (action-list:cons 8 (action:reduce 4 1) (action-list:cons 6 (action:reduce 4 1) (action-list:cons 5 (action:reduce 4 1) (action-list:cons 3 (action:reduce 4 1) (action-list:cons 2 (action:reduce 4 1) (action-list:cons 1 (action:reduce 4 1) (action-list:cons 0 (action:reduce 4 1) (action-list:nil)))))))) (action-list:cons 3 (action:shift 3) (action-list:cons 1 (action:shift 1) (action-list:cons 8 (action:shift 4) (action-list:nil)))) (action-list:cons 0 (action:reduce 2 5) (action-list:nil)) (action-list:cons 6 (action:shift 17) (action-list:cons 0 (action:reduce 0 2) (action-list:nil))) (action-list:cons 0 (action:reduce 3 2) (action-list:nil)) ))) (define goto (literal #( (goto-list:cons 4 6 (goto-list:cons 1 5 (goto-list:cons 8 9 (goto-list:cons 7 8 (goto-list:cons 6 7 (goto-list:nil)))))) (goto-list:nil) (goto-list:nil) (goto-list:nil) (goto-list:nil) (goto-list:nil) (goto-list:nil) (goto-list:cons 4 6 (goto-list:cons 1 5 (goto-list:cons 8 9 (goto-list:cons 7 11 (goto-list:cons 6 7 (goto-list:nil)))))) (goto-list:nil) (goto-list:nil) (goto-list:cons 0 13 (goto-list:cons 1 5 (goto-list:cons 8 9 (goto-list:cons 5 15 (goto-list:cons 4 14 (goto-list:nil)))))) (goto-list:nil) (goto-list:nil) (goto-list:nil) (goto-list:cons 2 18 (goto-list:nil)) (goto-list:nil) (goto-list:nil) (goto-list:cons 4 19 (goto-list:cons 1 5 (goto-list:cons 8 9 (goto-list:nil)))) (goto-list:nil) (goto-list:cons 2 20 (goto-list:nil)) (goto-list:nil) )))