Define an extension of C that uses custom functions from some library custom_lib addition, negation, multiplication, and inversion.
>
|
LanguageDefinition[Define]("AddLibraryExample", extend="C",
AddPrintHandler(
Names:-Inverse = proc(x)
Printer:-Print( "custom_inv(", x, ")");
Printer:-AddLibrary( "custom_lib");
end proc,
Names:-Negation = proc(x)
Printer:-Print( "custom_neg(", x, ")");
Printer:-AddLibrary( "custom_lib");
end proc,
Names:-Product = proc()
Printer:-Print( "custom_mult(" );
Printer:-PrintDelimitedList( [args], ", ");
Printer:-Print(")");
Printer:-AddLibrary( "custom_lib");
end proc,
Names:-Sum = proc()
Printer:-Print( "custom_add(" );
Printer:-PrintDelimitedList( [args], ", ");
Printer:-Print(")");
Printer:-AddLibrary( "custom_lib");
end proc
)
);
|
Observe that in both cases the custom functions are printed instead of the usual binary operators +,-,*,/, and that in the second case custom_lib is explicitly included.
cg = custom_add(custom_mult(3, x), custom_neg(y));
| |
>
|
p := proc(x,y)
local z;
z := (sin(x)*y+1)*Pi;
printf("%f", z);
end proc:
|
void p (double x, double y)
{
double z;
z = custom_mult(custom_add(custom_mult(sin(x), y), 0.1e1), 0.3141592654e1);
printf("%f", z);
}
| |