compilationUnit.ceylon
import ceylon.ast.core {
Block,
CompilationUnit,
ElseOperation,
FunctionDefinition,
Invocation,
InvocationStatement,
LIdentifier,
Parameters,
StringLiteral,
VoidModifier
}
import ceylon.ast.create {
baseExpression,
positionalArguments,
qualifiedExpression,
stringTemplate
}
shared CompilationUnit helloWorldCompilationUnit = CompilationUnit([
FunctionDefinition {
name = LIdentifier("run");
type = VoidModifier();
parameterLists = [Parameters()];
definition = Block([
InvocationStatement(Invocation {
invoked = baseExpression("print");
arguments = positionalArguments(
stringTemplate(
StringLiteral("Hello, "),
ElseOperation {
optionalValue = qualifiedExpression(qualifiedExpression("process", "arguments"), "first");
defaultValue = StringLiteral("World");
},
StringLiteral("!"))
);
})
]);
}
]);