public Generate : GiraffeType ==> seqofchar
Generate(type) == ifisofclass(GiraffeIdentifier, type) then let i : GiraffeIdentifier = type inreturn i.getName() else let t : GiraffeBasicType = type in cases t.name: "INT" -> return"int", "DOUBLE"-> return"double", "BOOL" -> return"boolean", others -> error end;
public Generate : GiraffeStatement ==> seqofchar
Generate(stm) == cases (true):
(isofclass(GiraffeVariableDeclStatement, stm)) -> let s : GiraffeVariableDeclStatement = stm inreturnconc [Generate(s.getType()), " ", Generate(s.getName()), " = ", GenerateExpression(s.getValue())],
(isofclass(GiraffeReturnStatement, stm)) -> let s : GiraffeReturnStatement = stm inreturnconc ["return ", GenerateExpression(s.getValue())], others -> error end;
public GenerateExpression : GiraffeExpression ==> seqofchar
GenerateExpression(exp) == cases (true):
(isofclass(GiraffeIntegerLiteralExpression, exp)) -> let e : GiraffeIntegerLiteralExpression = exp inreturnnew codegen_Util().iToS(e.getValue()),
(isofclass(GiraffeVariableExpression, exp)) -> let e : GiraffeVariableExpression = exp inreturn e.getName().getName(),
(isofclass(GiraffeBinaryExpression, exp)) -> let e : GiraffeBinaryExpression = exp inreturn GenerateBinaryExpression(e),
(isofclass(GiraffeIfExpression, exp)) -> let e : GiraffeIfExpression = exp inreturn" ( (" ^ GenerateExpression(e.getTest()) ^ ") ? (" ^ GenerateExpression(e.getThn()) ^ ") : (" ^ GenerateExpression(e.getEls()) ^ ") ) ", others -> error end;
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung ist noch experimentell.