Translating declarative control elements to imperative using 'l-value redefinition graphs'
Anthony Savidis

TL;DR
This paper introduces a novel translation method for declarative control constructs in C++, utilizing 'l-value redefinition graphs' to handle complex storage dependencies and enable efficient runtime evaluation.
Contribution
It presents a new translation approach for declarative control elements in C++, supporting complex l-value dependencies with redefinition graphs.
Findings
Supports arbitrary pointer and array expressions in l-values
Enables immediate runtime evaluation upon content updates
Captures storage dependencies with redefinition graphs
Abstract
We focus on control constructs that allow programmers define actions to be performed when respective conditions are met without requiring the explicit evaluation and testing of conditions as part of an imperative algorithm. Such elements are commonly referred as declarative, not theoretically related to declarative languages. We introduce declarative constructs in the C++ language, presenting the translation method to standard C++. The innovative feature of our method is the accommodation of l-values involving arbitrary pointer / array expressions and objects, supporting immediate runtime evaluation upon content update even if such l-values bind to variant storage locations at runtime. To accomplish this we define 'l-value redefinition graphs', capturing storage binding dependencies among variables, being the floor-plan of our code generation and runtime management approach.
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 and Design Patterns · Logic, programming, and type systems · Advanced Database Systems and Queries
