translate Maple code to code in a specified language - Maple Help

Online Help

All Products    Maple    MapleSim

Home : Support : Online Help : Programming : Code Generation Package : CodeGeneration/Translate

CodeGeneration[Translate] - translate Maple code to code in a specified language

Calling Sequence

Translate(x, language = lang, cgopts)




expression, list, rtable, procedure or module






(optional) one or more CodeGeneration options



The Translate(x, language = lang, cgopts) calling sequence translates Maple code to code in the language lang. The language lang must correspond to a language recognized by CodeGeneration, that is, a built-in language or a language added with Add. If option language = lang is not supplied, then the language "default" is used.


- If the parameter x is an algebraic expression, then a statement in the language lang assigning the expression to a variable is generated.


- If x is a list of equations nm=expr where nm is a name and expr is an algebraic expression, this is understood to mean a sequence of assignment statements.  In this case, the equivalent sequence of assignment statements in the language lang is generated.


The parameter cgopts may include one or more CodeGeneration options, as described in CodeGenerationOptions.


The CodeGeneration package is distributed with support for a number of languages.  Though each predefined language has a corresponding CodeGeneration function for performing translations, for example, CodeGeneration[C], you can also use Translate with a predefined language. Note, however, that the two methods may produce different output, as the CodeGeneration functions may make use of specialized options.


For more information about how the CodeGeneration package translates Maple code to predefined languages, see Translation Details.


Perform a translation to the predefined language Java using the Translate and Java functions respectively.


Java( proc(x) sin(x)^2-cos(x)^2; end proc);

import java.lang.Math;

class CodeGenerationClass {
  public static double cg (double x)
    return(Math.pow(Math.sin(x), 0.2e1) - Math.pow(Math.cos(x), 0.2e1));

Translate( proc(x) sin(x)^2-cos(x)^2; end proc, language = "Java" );

import java.lang.Math;

class CodeGenerationClass {
  public static double cg0 (double x)
    return(Math.pow(Math.sin(x), 0.2e1) - Math.pow(Math.cos(x), 0.2e1));

Define a custom language named "MyLanguage" and translate a simple expression and a procedure to this language.

LanguageDefinition[Define]("MyLanguage", extend = "default",
        "Procedure_Start" = proc(rettype,pname,params)
            (Printer:-Indent(),"func ",pname," ",params," : ",rettype,";\n")
        end proc,
        "Procedure_End" = proc() (Printer:-Indent(),"end func\n") end proc,
        "ParameterSequence_Start" = "(",
        "ParameterSequence_End" = ")",
        "ParameterSequence_Delimiter"  = ",",
        "ParameterSequence_MaxOnLine" = 3,
        "Statement_End" = ";",
        "Block_Start" = "begin\n",
        "Block_End"   = "end\n"
       'integer' = table(['single' = "integer",   'double' = "long"]),
       'numeric' = table(['single' = "real", 'double' = "real"])
    AddFunction("sqrt", [numeric]::numeric,
    AddOperator(Names:-Assignment = ":="),
         Names:-Return = proc(x) Printer:-Print(Printer:-Indent(),"return ",x,";\n") end proc

Translate(sqrt(x), language = "MyLanguage");

cg1 := surd(x,2);

Translate(proc(x) x; end proc, language = "MyLanguage");

procedure cg2 (real x) :: real

  return x;
end func

See Also

CodeGeneration, CodeGenerationOptions, LanguageDefinitionOverview, Translation Details

Download Help Document

Was this information helpful?

Please add your Comment (Optional)
E-mail Address (Optional)
What is ? This question helps us to combat spam