diff -r efab3a94d3c0 -r f8f1d89ff7d5 absyntax_utils/debug_ast.cc --- a/absyntax_utils/debug_ast.cc Sun Dec 28 12:04:07 2014 +0000 +++ b/absyntax_utils/debug_ast.cc Sun Dec 28 12:05:39 2014 +0000 @@ -49,6 +49,30 @@ +static void dump_cvalue(const_value_c const_value) { + fprintf(stderr, "constv{"); + if (const_value._real64.is_valid ()) fprintf(stderr, "%f", const_value._real64.get()); + else if (const_value._real64.is_overflow()) fprintf(stderr, "ov"); + else if (const_value._real64.is_nonconst()) fprintf(stderr, "nc"); + else fprintf(stderr, "?"); + fprintf(stderr, ", i="); + if (const_value. _int64.is_valid ()) fprintf(stderr, "%"PRId64"", const_value. _int64.get()); + else if (const_value. _int64.is_overflow()) fprintf(stderr, "ov"); + else if (const_value. _int64.is_nonconst()) fprintf(stderr, "nc"); + else fprintf(stderr, "?"); + fprintf(stderr, ", u="); + if (const_value._uint64.is_valid ()) fprintf(stderr, "%"PRIu64"", const_value._uint64.get()); + else if (const_value._uint64.is_overflow()) fprintf(stderr, "ov"); + else if (const_value._uint64.is_nonconst()) fprintf(stderr, "nc"); + else fprintf(stderr, "?"); + fprintf(stderr, ", b="); + if (const_value. _bool.is_valid ()) fprintf(stderr, "%d", const_value. _bool.get()?1:0); + else if (const_value. _bool.is_overflow()) fprintf(stderr, "ov"); + else if (const_value. _bool.is_nonconst()) fprintf(stderr, "nc"); + else fprintf(stderr, "?"); + fprintf(stderr, "}"); +} + /*********************************/ @@ -94,6 +118,7 @@ } + void print_symbol_c::dump_symbol(symbol_c* symbol) { fprintf(stderr, "(%s->%03d:%03d..%03d:%03d) \t%s\t", symbol->first_file, symbol->first_line, symbol->first_column, symbol->last_line, symbol->last_column, symbol->absyntax_cname()); @@ -115,11 +140,11 @@ } else { fprintf(stderr, "(%lu)\t\t\t\t\t", (unsigned long int)symbol->candidate_datatypes.size()); } - fprintf(stderr, "}\t"); + fprintf(stderr, "}\t "); /* print the const values... */ - fprintf(stderr, " constv{f=%f, i=%"PRId64", u=%"PRIu64", b=%d}\t", symbol->const_value._real64.get(), symbol->const_value._int64.get(), symbol->const_value._uint64.get(), symbol->const_value._bool.get()?1:0); - + dump_cvalue(symbol->const_value); + fprintf(stderr, "\t"); } @@ -212,6 +237,10 @@ fprintf(stderr, "%s", str); } +void debug_c::print(const_value_c cvalue) { + dump_cvalue(cvalue); +} + void debug_c::print(symbol_c *symbol) { print_symbol_c::print(symbol); }