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

Anthony Savidis
DOI: https://doi.org/10.48550/arXiv.2103.03309
2021-03-04
Programming Languages
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.
What problem does this paper attempt to address?