/* * This file is part of the Yices SMT Solver. * Copyright (C) 2017 SRI International. * * Yices is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * Yices is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with Yices. If not, see . */ /* * Tables for parsing the SMT-LIB 2.0 language */ #ifndef __SMT2_PARSE_TABLES_H #define __SMT2_PARSE_TABLES_H #include /* * States */ typedef enum state_s { c0, c1, c3, c4, c5, c6, c6a, c8, c9, c9a, c9b, c10, c10a, c10b, c11, c11a, c11b, c11d, c11f, c12, c12b, c13, c14, c15, c16, c16a, c16b, c16c, c16d, a0, a1, v0, s0, s1, s2, s3, s4, s5, s6, s7, s8, s10, t0, t1, t2, t2a, t2b, t2d, t2e, t3, t3a, t3b, t3d, t3e, t4a, t4b, t4c, t4d, t4e, t4g, t5, t5a, t5b, t5c, t5d, t6, t6a, t6b, t6c, t6d, t6e, t6g, t6h, t6i, t6j, t7, t7a, t7b, t8a, r0, } state_t; /* * Action codes */ typedef enum actions { // commands next_goto_c1, empty_command_return, assert_next_push_r0_goto_t0, check_sat_next_goto_r0, check_sat_assuming_next_goto_c16, declare_sort_next_goto_c8, declare_const_next_goto_c14, declare_fun_next_goto_c10, define_sort_next_goto_c9, define_const_next_goto_c15, define_fun_next_goto_c11, echo_next_goto_c13, exit_next_goto_r0, get_assertions_next_goto_r0, get_assignment_next_goto_r0, get_info_next_goto_c4, get_model_next_goto_r0, get_option_next_goto_c4, get_proof_next_goto_r0, get_unsat_assumptions_next_goto_r0, get_unsat_core_next_goto_r0, get_value_next_goto_c12, pop_next_goto_c3, push_next_goto_c3, set_logic_next_goto_c5, set_info_next_goto_c6, set_option_next_goto_c6, reset_next_goto_r0, reset_assertions_next_goto_r0, // arguments to the commands numeral_next_goto_r0, keyword_next_goto_r0, symbol_next_goto_r0, keyword_next_goto_c6a, next_return, push_r0_goto_a0, symbol_next_goto_c3, symbol_next_goto_c9a, next_goto_c9b, next_push_r0_goto_s0, symbol_next_goto_c9b, symbol_next_goto_c10a, next_goto_c10b, push_c10b_goto_s0, symbol_next_goto_c11a, next_goto_c11b, next_push_r0_push_t0_goto_s0, next_goto_c11d, symbol_next_push_c11f_goto_s0, eval_next_goto_c11b, next_push_c12b_goto_t0, next_goto_r0, push_c12b_goto_t0, string_next_goto_r0, symbol_next_push_r0_goto_s0, symbol_next_push_r0_push_t0_goto_s0, next_goto_c16a, symbol_next_goto_c16a, next_goto_c16b, not_next_goto_c16c, symbol_next_goto_c16d, // attribute values + s-expressions numeral_next_return, decimal_next_return, hexadecimal_next_return, binary_next_return, string_next_return, symbol_next_return, next_goto_a1, push_a1_goto_v0, keyword_next_return, // sorts sort_symbol_next_return, next_goto_s1, next_goto_s2, next_goto_s5, symbol_next_push_s10_goto_s0, symbol_next_goto_s3, numeral_next_goto_s4, next_goto_s6, symbol_next_goto_s7, numeral_next_goto_s8, next_push_s10_goto_s0, push_s10_goto_s0, // terms term_symbol_next_return, next_goto_t1, next_goto_t2, // (let forall_next_goto_t3, // (forall exists_next_goto_t3, // (exists next_push_t4a_goto_t0, // (! next_goto_t5, // (as next_goto_t6, // (( next_goto_t7, // (_ // simple function application ( ... ) symbol_next_push_t8a_goto_t0, // (let ... next_goto_t2a, next_goto_t2b, symbol_next_push_t2d_goto_t0, next_goto_t2e, next_push_r0_goto_t0, // (exists ... and (forall ... next_goto_t3a, next_goto_t3b, symbol_next_push_t3d_goto_s0, next_goto_t3e, // (! ... check_keyword_then_branch, push_t4c_goto_a0, symbol_next_goto_t4c, next_push_t4g_goto_t0, next_goto_t4c, push_t4g_goto_t0, // (as ... next_goto_t5a, asymbol_next_push_r0_goto_s0, next_goto_t5b, symbol_next_goto_t5c, numeral_next_goto_t5d, // (( ... next_goto_t6a, next_goto_t6h, // ((as ... next_goto_t6b, symbol_next_push_t6g_goto_s0, next_goto_t6c, symbol_next_goto_t6d, numeral_next_goto_t6e, next_push_t6g_goto_s0, next_push_t8a_goto_t0, // ((_ ... symbol_next_goto_t6i, numeral_next_goto_t6j, // (_ ... symbol_next_goto_t7a, numeral_next_goto_t7b, // after in a function application push_t8a_goto_t0, // errors error_lp_expected, error_string_expected, error_symbol_expected, error_numeral_expected, error_keyword_expected, error_rp_expected, error_underscore_expected, error_command_expected, error_literal_expected, error_not_expected, error, } smt2_action_t; /* * Tables generated by table_builder * see utils/table_builder.c */ // Table sizes #define NSTATES 80 #define BSIZE 298 // Default values for each state static const uint8_t default_value[NSTATES] = { error_lp_expected, error_command_expected, error_numeral_expected, error_keyword_expected, error_symbol_expected, error_keyword_expected, push_r0_goto_a0, error_symbol_expected, error_symbol_expected, error_lp_expected, error, error_symbol_expected, error_lp_expected, push_c10b_goto_s0, error_symbol_expected, error_lp_expected, error, error_symbol_expected, error_rp_expected, error_lp_expected, push_c12b_goto_t0, error, error_symbol_expected, error_symbol_expected, error_lp_expected, error_literal_expected, error_not_expected, error_symbol_expected, error_rp_expected, error, push_a1_goto_v0, error, error, error, error_symbol_expected, error_numeral_expected, error, error_underscore_expected, error_symbol_expected, error_numeral_expected, error, push_s10_goto_s0, error, error, error_lp_expected, error_lp_expected, error_symbol_expected, error_rp_expected, error, error_lp_expected, error_lp_expected, error_symbol_expected, error_rp_expected, error, error_keyword_expected, push_t4c_goto_a0, error, error_symbol_expected, error_lp_expected, push_t4g_goto_t0, error, error_underscore_expected, error_symbol_expected, error_numeral_expected, error, error, error, error_underscore_expected, error_symbol_expected, error_numeral_expected, error, error_rp_expected, error_symbol_expected, error_numeral_expected, error, error_symbol_expected, error_numeral_expected, error, push_t8a_goto_t0, error_rp_expected, }; // Base values for each state static const uint8_t base[NSTATES] = { 0, 0, 0, 0, 40, 1, 0, 0, 42, 4, 52, 46, 5, 5, 48, 7, 12, 50, 13, 15, 15, 10, 10, 54, 20, 65, 44, 59, 63, 97, 68, 107, 120, 126, 114, 68, 88, 64, 116, 81, 92, 89, 170, 193, 99, 108, 122, 108, 118, 121, 133, 150, 135, 138, 130, 144, 180, 189, 147, 147, 195, 148, 212, 161, 164, 154, 218, 167, 224, 180, 183, 186, 236, 185, 188, 242, 189, 214, 193, 198, }; // Check table static const uint8_t check[BSIZE] = { 0, 6, 0, 2, 9, 12, 13, 15, 7, 7, 3, 5, 16, 16, 18, 19, 20, 21, 22, 22, 24, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4, 4, 8, 8, 26, 10, 11, 11, 14, 14, 17, 17, 10, 10, 23, 23, 28, 25, 25, 27, 27, 30, 4, 35, 8, 25, 25, 4, 11, 8, 14, 37, 17, 11, 10, 14, 39, 17, 4, 10, 8, 36, 41, 36, 11, 40, 14, 40, 17, 29, 10, 44, 29, 29, 29, 29, 29, 29, 29, 31, 45, 47, 31, 31, 31, 31, 31, 31, 31, 31, 48, 48, 32, 49, 34, 34, 38, 38, 33, 29, 32, 32, 46, 46, 29, 50, 33, 33, 52, 31, 53, 53, 54, 33, 31, 29, 34, 55, 38, 58, 59, 34, 32, 38, 46, 31, 55, 32, 33, 46, 51, 51, 34, 33, 38, 61, 63, 64, 32, 64, 46, 65, 42, 65, 33, 42, 42, 42, 42, 42, 42, 42, 51, 56, 67, 69, 70, 51, 70, 71, 73, 74, 56, 74, 76, 43, 78, 60, 51, 57, 57, 79, 42, 43, 43, 60, 60, 42, 80, 80, 43, 43, 43, 43, 43, 43, 80, 77, 42, 77, 66, 57, 62, 62, 80, 43, 57, 60, 66, 66, 43, 80, 60, 80, 68, 68, 80, 57, 80, 80, 80, 43, 80, 60, 62, 80, 72, 72, 80, 62, 66, 80, 75, 75, 80, 66, 68, 80, 80, 80, 62, 68, 80, 80, 80, 80, 66, 80, 72, 80, 80, 80, 68, 72, 75, 80, 80, 80, 80, 75, 80, 80, 80, 80, 72, 80, 80, 80, 80, 80, 75, 80, 80, 80, 80, 80, 80, 80, 80, 80, }; // Value table static const uint8_t value[BSIZE] = { next_goto_c1, next_return, empty_command_return, numeral_next_goto_r0, next_goto_c9b, next_goto_c10b, next_push_r0_goto_s0, next_goto_c11b, symbol_next_goto_c3, symbol_next_goto_c3, keyword_next_goto_r0, keyword_next_goto_c6a, next_goto_c11d, next_push_r0_push_t0_goto_s0, eval_next_goto_c11b, next_push_c12b_goto_t0, next_goto_r0, string_next_goto_r0, symbol_next_push_r0_goto_s0, symbol_next_push_r0_goto_s0, next_goto_c16a, assert_next_push_r0_goto_t0, check_sat_next_goto_r0, check_sat_assuming_next_goto_c16, declare_sort_next_goto_c8, declare_const_next_goto_c14, declare_fun_next_goto_c10, define_sort_next_goto_c9, define_const_next_goto_c15, define_fun_next_goto_c11, echo_next_goto_c13, exit_next_goto_r0, get_assertions_next_goto_r0, get_assignment_next_goto_r0, get_info_next_goto_c4, get_model_next_goto_r0, get_option_next_goto_c4, get_proof_next_goto_r0, get_unsat_assumptions_next_goto_r0, get_unsat_core_next_goto_r0, get_value_next_goto_c12, pop_next_goto_c3, push_next_goto_c3, set_logic_next_goto_c5, set_info_next_goto_c6, set_option_next_goto_c6, reset_next_goto_r0, reset_assertions_next_goto_r0, symbol_next_goto_r0, symbol_next_goto_r0, symbol_next_goto_c9a, symbol_next_goto_c9a, not_next_goto_c16c, next_push_r0_goto_s0, symbol_next_goto_c10a, symbol_next_goto_c10a, symbol_next_goto_c11a, symbol_next_goto_c11a, symbol_next_push_c11f_goto_s0, symbol_next_push_c11f_goto_s0, symbol_next_goto_c9b, symbol_next_goto_c9b, symbol_next_push_r0_push_t0_goto_s0, symbol_next_push_r0_push_t0_goto_s0, next_goto_c16a, next_goto_c16b, next_goto_r0, symbol_next_goto_c16d, symbol_next_goto_c16d, next_return, symbol_next_goto_r0, numeral_next_goto_s4, symbol_next_goto_c9a, symbol_next_goto_c16a, symbol_next_goto_c16a, symbol_next_goto_r0, symbol_next_goto_c10a, symbol_next_goto_c9a, symbol_next_goto_c11a, next_goto_s6, symbol_next_push_c11f_goto_s0, symbol_next_goto_c10a, symbol_next_goto_c9b, symbol_next_goto_c11a, numeral_next_goto_s8, symbol_next_push_c11f_goto_s0, symbol_next_goto_r0, symbol_next_goto_c9b, symbol_next_goto_c9a, next_return, next_return, numeral_next_goto_s4, symbol_next_goto_c10a, next_push_s10_goto_s0, symbol_next_goto_c11a, numeral_next_goto_s8, symbol_next_push_c11f_goto_s0, next_goto_a1, symbol_next_goto_c9b, next_goto_t2a, numeral_next_return, decimal_next_return, hexadecimal_next_return, binary_next_return, string_next_return, symbol_next_return, symbol_next_return, next_goto_a1, next_goto_t2b, next_goto_t2e, numeral_next_return, decimal_next_return, hexadecimal_next_return, binary_next_return, string_next_return, symbol_next_return, symbol_next_return, keyword_next_return, next_goto_t2b, next_push_r0_goto_t0, next_goto_s1, next_goto_t3a, symbol_next_goto_s3, symbol_next_goto_s3, symbol_next_goto_s7, symbol_next_goto_s7, next_goto_s5, symbol_next_return, sort_symbol_next_return, sort_symbol_next_return, symbol_next_push_t2d_goto_t0, symbol_next_push_t2d_goto_t0, symbol_next_return, next_goto_t3b, symbol_next_push_s10_goto_s0, symbol_next_push_s10_goto_s0, next_goto_t3e, symbol_next_return, next_goto_t3b, next_push_r0_goto_t0, check_keyword_then_branch, next_goto_s2, symbol_next_return, symbol_next_return, symbol_next_goto_s3, next_return, symbol_next_goto_s7, next_push_t4g_goto_t0, next_goto_t4c, symbol_next_goto_s3, sort_symbol_next_return, symbol_next_goto_s7, symbol_next_push_t2d_goto_t0, symbol_next_return, check_keyword_then_branch, sort_symbol_next_return, symbol_next_push_s10_goto_s0, symbol_next_push_t2d_goto_t0, symbol_next_push_t3d_goto_s0, symbol_next_push_t3d_goto_s0, symbol_next_goto_s3, symbol_next_push_s10_goto_s0, symbol_next_goto_s7, next_goto_t5b, numeral_next_goto_t5d, next_push_r0_goto_s0, sort_symbol_next_return, numeral_next_goto_t5d, symbol_next_push_t2d_goto_t0, next_goto_t6h, next_goto_t1, next_goto_t6a, symbol_next_push_s10_goto_s0, numeral_next_return, decimal_next_return, hexadecimal_next_return, binary_next_return, string_next_return, term_symbol_next_return, term_symbol_next_return, symbol_next_push_t3d_goto_s0, next_return, next_goto_t6c, numeral_next_goto_t6e, next_push_t6g_goto_s0, symbol_next_push_t3d_goto_s0, numeral_next_goto_t6e, next_push_t8a_goto_t0, numeral_next_goto_t6j, next_push_t8a_goto_t0, check_keyword_then_branch, numeral_next_goto_t6j, numeral_next_goto_t7b, next_goto_t6, next_return, next_goto_t5a, symbol_next_push_t3d_goto_s0, symbol_next_goto_t4c, symbol_next_goto_t4c, next_return, term_symbol_next_return, symbol_next_push_t8a_goto_t0, symbol_next_push_t8a_goto_t0, asymbol_next_push_r0_goto_s0, asymbol_next_push_r0_goto_s0, term_symbol_next_return, error, error, next_goto_t7, next_push_t4a_goto_t0, next_goto_t5, next_goto_t2, exists_next_goto_t3, forall_next_goto_t3, error, next_return, term_symbol_next_return, numeral_next_goto_t7b, next_goto_t6b, symbol_next_goto_t4c, symbol_next_goto_t5c, symbol_next_goto_t5c, error, symbol_next_push_t8a_goto_t0, symbol_next_goto_t4c, asymbol_next_push_r0_goto_s0, symbol_next_push_t6g_goto_s0, symbol_next_push_t6g_goto_s0, symbol_next_push_t8a_goto_t0, error, asymbol_next_push_r0_goto_s0, error, symbol_next_goto_t6d, symbol_next_goto_t6d, error, symbol_next_goto_t4c, error, error, error, symbol_next_push_t8a_goto_t0, error, asymbol_next_push_r0_goto_s0, symbol_next_goto_t5c, error, symbol_next_goto_t6i, symbol_next_goto_t6i, error, symbol_next_goto_t5c, symbol_next_push_t6g_goto_s0, error, symbol_next_goto_t7a, symbol_next_goto_t7a, error, symbol_next_push_t6g_goto_s0, symbol_next_goto_t6d, error, error, error, symbol_next_goto_t5c, symbol_next_goto_t6d, error, error, error, error, symbol_next_push_t6g_goto_s0, error, symbol_next_goto_t6i, error, error, error, symbol_next_goto_t6d, symbol_next_goto_t6i, symbol_next_goto_t7a, error, error, error, error, symbol_next_goto_t7a, error, error, error, error, symbol_next_goto_t6i, error, error, error, error, error, symbol_next_goto_t7a, error, error, error, error, error, error, error, error, error, }; #endif /* __SMT2_PARSE_TABLES_H */