Pennington / Example

XTRAN Demonstration:  Matching and Replacing C Expressions

Note that XTRAN automatically applies the rules below recursively to every expression in the code being re-engineered.

In the rules below, this indicates C elements and <this> indicates meta elements.



* XTRAN Rules:

Original expression Replacement expression
 <expr1> + <expr2>   add(<expr1>, <expr2>) 
 <expr1> - <expr2>   sub(<expr1>, <expr2>) 
 <expr1> * <expr2>   mul(<expr1>, <expr2>) 
 <expr1> / <expr2>   div(<expr1>, <expr2>) 
 <expr1> = <expr2>   copy(&<expr1>, <expr2>) 


*  Original C code:

     a = b + (c - d) * (e - f) / g;


* Resulting C code:

     copy(&a, add(b, div(mul(sub(c, d), sub(e, f)), g)));


* XTRAN Rule:

Original expression Replacement expression Qualifying condition
 copy(<expr1>, <expr2>)   *<expr1> = <expr2>   <expr2> is not an operator expression 


* Original C code:

     copy(p_var1, *p_var2);
     copy(p_var3, var4);
     copy(p_var5, var6 + var7);
     copy(p_var8 + 3, var9);


* Resulting C code:

     copy(p_var1, *p_var2);
     *p_var3 = var4;
     copy(p_var5, var6 + var7);
     *(p_var8 + 3) = var9;


COPYRIGHT 2008; reproduction prohibited without permission.  Revised 2006-11-27

XTRAN is a trademark of Pennington Systems Incorporated.

Pennington Systems Incorporated
8655 East Via de Ventura, Suite G200
Scottsdale, Arizona 85258-3321

Phone:  +1(480)626-5503
Fax:  +1(480)626-7618
Email:  Info@Pennington.com
Web:  http://WWW.Pennington.com

[home] Home