mirror of
https://github.com/Mercury-Language/mercury.git
synced 2025-12-17 23:05:21 +00:00
Estimated hours taken: 120 Implement the new architecture for the front end of the declarative debugger. Disable declarative debugging if conservative GC is not being used since this change relies on it. The benefits of declarative debugging in non-GC grades are not worth the extra maintenance required to support it, since even small examples require a large amount of memory. browser/declarative_analyser.m: New module which handles the analysis of EDTs, which was previously done in browser/declarative_debugger.m. browser/declarative_debugger.m: - Change the interface according to the new design. - Export types of the form decl_*, rather than edt_*. - Move the EDT analysis to the new module. - Handle the interaction between the analyser and the oracle. - Don't interact directly with the user, but go via the oracle. - New diagnoser state type. - Update the EDT instance to conform to the other changes. browser/declarative_oracle.m: - Replace oracle_answer type with oracle_response. - Allow the oracle to work with a queue of questions rather than one at a time. - Add new predicates to manipulate the knowledge base. browser/declarative_user.m: - Export the user_state type. - Handle some user commands in this module. - Handle questions properly (apart from printing atoms). browser/browser_library.m: Add the new module. trace/mercury_trace_declarative.c: - Initialise the front end state just once per session. - Make the step size much larger, since implicit subtrees are not fully supported yet. - Correct the types in a format specifier. trace/mercury_trace_declarative.c: trace/mercury_trace_internal.c: trace/mercury_trace_internal.h: - Disable declarative debugging unless conservative GC is used.