Research Article

SPOT: A DSL for Extending Fortran Programs with Metaprogramming

Algorithm 2

An example of RSL rule defined with DMS.
rule desugar_conditional_assignment_stmt(lv:left_hand_side, exp1:expression, exp2:expression, exp3:expression ):
statement  ->  statement
= lv=exp1?exp2:exp3;”  ->
 “if(exp1)  lv=exp2;  else  lv=exp3;
if  no_side_effects (lv);