Translating declarative control elements to imperative using 'l-value redefinition graphs'
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.READ FULL TEXT