This page shows all the different incantations, inputs and outputs of the current version of C'Dent compiling the hello-world example.
C'Dent Version
> cdent --version
The C'Dent portable module programming language. Copyright (c) 2010, Ingy dot Net Version 0.5
Inputs
C'Dent can currently parse the C'Dent subsets of Python, JavaScript and Perl 6.
These examples deal with equivalent versions of a World module. The module has a World class, which has a greet method, which has a println() command statement.
world.cd.py
This is the module written in C'Dent Python.
"""\
This is World class :)
"""
class World():
def greet(self):
print "Hello, world"
World.cd.js
This is the module written in C'Dent JavaScript.
/**
* This is World class :)
*/
(this.World = function() {}).prototype = {
greet: function() {
print("Hello, world");
}
};
World.cd.pm6
This is the module written in C'Dent Perl 6.
###
# This is World class :)
###
class World {
method greet {
say "Hello, world";
}
}
World.cd.yaml
This is the module in pure C'Dent "abstract tree" form, serialized as YAML.
%TAG ! tag:cdent.org,2010:
--- !AST
has:
- !Module
name: World
has:
- !Comment
type: doc
val: "This is World class :)\n"
- !Comment
type: blank
val: "\n"
- !Class
name: World
has:
- !Method
name: greet
has:
- !Println
args:
- !String
val: Hello, world
Outputs
C'Dent can take any of the above inputs, and generate the following outputs: Perl, Python, PHP, Ruby, JavaScript, Scala, Java, ActionScript, Perl 6, Python 3000, Go, PIR, NQP or C'Dent.
Perl
> cdent --compile --in=world.cd.py --to=pm
# *** DO NOT EDIT *** This is a C'Dent generated Perl module.
###
# This is World class :)
###
package World;
use CDent::Class;
sub greet {
my $self = shift;
print "Hello, world", "\n";
}
1;
Python
> cdent --compile --in=world.cd.py --to=py
# *** DO NOT EDIT *** This is a C'Dent generated Python module.
"""\
This is World class :)
"""
class World():
def greet(self):
print "Hello, world"
PHP
> cdent --compile --in=world.cd.py --to=php
// *** DO NOT EDIT *** This is a C'Dent generated PHP module.
<?php
/**
* This is World class :)
*/
class World {
public function greet() {
print("Hello, world", "\n");
}
}
?>
Ruby
> cdent --compile --in=world.cd.py --to=rb
# *** DO NOT EDIT *** This is a C'Dent generated Ruby module.
###
# This is World class :)
###
class World
def greet
puts("Hello, world")
end
end
JavaScript
> cdent --compile --in=world.cd.py --to=js
// *** DO NOT EDIT *** This is a C'Dent generated JavaScript module.
/*
* This is World class :)
*/
(this.World = function() {}).prototype = {
greet: function() {
print("Hello, world");
}
}
Scala
> cdent --compile --in=world.cd.py --to=scala
// *** DO NOT EDIT *** This is a C'Dent generated Scala module.
/**
* This is World class :)
*/
class World {
def greet() {
println("Hello, world")
}
}
Java
> cdent --compile --in=world.cd.py --to=java
// *** DO NOT EDIT *** This is a C'Dent generated Java module.
/**
* This is World class :)
*/
public class World {
public void greet() {
System.out.println("Hello, world");
}
}
ActionScript
> cdent --compile --in=world.cd.py --to=as
// *** DO NOT EDIT *** This is a C'Dent generated ActionScript module.
package {
/**
* This is World class :)
*/
public class World {
public function greet():void {
trace("Hello, world" + "\n");
}
}
}
Perl 6
> cdent --compile --in=world.cd.py --to=pm6
# *** DO NOT EDIT *** This is a C'Dent generated Perl 6 module.
###
# This is World class :)
###
class World {
method greet {
say "Hello, world";
}
}
Python 3000
> cdent --compile --in=world.cd.py --to=py3
# *** DO NOT EDIT *** This is a C'Dent generated Python 3 module.
"""\
This is World class :)
"""
class World():
def greet(self):
print("Hello, world")
Go
> cdent --compile --in=world.cd.py --to=go
// *** DO NOT EDIT *** This is a C'Dent generated Go module.
/*
* This is World class :)
*/
package World
import fmt "fmt"
func greet() {
fmt.Println("Hello, world")
}
PIR
> cdent --compile --in=world.cd.py --to=pir
# *** DO NOT EDIT *** This is a C'Dent generated PIR module.
###
# This is World class :)
###
.namespace ["World"]
.sub greet :method
say "Hello, world"
.end
NQP (Not Quite Perl)
> cdent --compile --in=world.cd.py --to=nqp
# *** DO NOT EDIT *** This is a C'Dent generated NQP (Not Quite Perl) module.
###
# This is World class :)
###
class World {
method greet() {
say("Hello, world");
}
}
C'Dent
> cdent --compile --in=world.cd.py --to=cd.yaml
%TAG ! tag:cdent.org,2010:
--- !AST
has:
- !Module
has:
- !Comment
line: 1
type: doc
val: 'This is World class :)
'
- !Comment
line: 4
type: blank
val: '
'
- !Class
has:
- !Method
has:
- !Println
args:
- !String
val: Hello, world
line: 7
line: 6
name: greet
line: 5
name: World
line: 1
name: Module
