Reversible Language Extensions and their Application in Debugging
Zo\'e Drey, Jos\'e F. Morales, Manuel V. Hermenegildo

TL;DR
This paper introduces a reversible language extension technique for Prolog that preserves source-level information through symbolic annotations, enhancing debugging and program analysis capabilities.
Contribution
It proposes an augmented approach to language extensions that allows reversing code transformations, improving debugging and analysis in Prolog programs.
Findings
Enables source-level debugging of extended Prolog programs
Supports various language extensions like functional notation and DCGs
Improves debugging experience with minimal modifications to existing tools
Abstract
A range of methodologies and techniques are available to guide the design and implementation of language extensions and domain-specific languages. A simple yet powerful technique is based on source-to-source transformations interleaved across the compilation passes of a base language. Despite being a successful approach, it has the main drawback that the input source code is lost in the process. When considering the whole workflow of program development (warning and error reporting, debugging, or even program analysis), program translations are no more powerful than a glorified macro language. In this paper, we propose an augmented approach to language extensions for Prolog, where symbolic annotations are included in the target program. These annotations allow selectively reversing the translated code. We illustrate the approach by showing that coupling it with minimal extensions to a…
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
Taxonomy
TopicsSoftware Engineering Research · Logic, programming, and type systems · Software Testing and Debugging Techniques
