java2tcl

java2tcl

java2tcl - Java to XOTcl source code translator

This is an automated tool to translate Java programs to Tcl (needs XOTcl): http://txl.ca/nresources.html (search for TCL). The translator is based on TXL (http://www.txl.ca ), a quite general program transformation system.

News

26.12.2008 - Windows binary bug fixed

Sample

 //Brewing Java: A Tutorial Copyright 1995-1998, 2000-2002, 2004-2006 Elliotte Rusty Harold
 public class Website {

   public String name;
   public String url;
   public String description;
   public static int site_count = 0;

   public Website() {
     site_count = site_count + 1;
   }

   public void print() {
      System.out.println(name + " at " + url + " is " + description);
      System.out.println("Number of class instances: " + site_count);
   }

   public static void main(String args[]) {
     Website w = new Website();
     w.name = "Jorika";
     w.url = "http://jorika.edu";
     w.description = "Really cool!";
     w.print();

     Website w2 = new Website();
     w.name = "Foggi 4";
     w.url = "http://foggi4youevery.fa";
     w.description = "Foggi file!";
     w.print();
   }
 }

becomes the following XOTcl code:

 package require XOTcl
 namespace import ::xotcl::*

 Class create Website_metapapa -superclass {Class} -slots {
     Attribute site_count -default 0
 }

 Website_metapapa create Website -superclass {Class} -slots {
     Attribute name -default ""
     Attribute url -default ""
     Attribute description -default ""
 }

 Website proc main {args} {
     set w [Website Website]
     $w set name "Jorika"
     $w set url "http://jorika.edu"
     $w set description "Really cool!"
     $w print
     set w2 [Website Website]
     $w set name "Foggi 4"
     $w set url "http://foggi4youevery.fa"
     $w set description "Foggi file!"
     $w print
 }

 Website proc Website {} {
     # #create new object
     set obj [Website new]
     # #call the constructor
     $obj Website_body
     # #return new object after constructor's work is done
     return  $obj
 }

 Website instproc Website_body {} {
     [my class] set site_count [expr [[my class] set site_count] + 1]
 }

 Website instproc print {} {
     puts [concat [my set name] " at " [my set url] " is " [my set description]]
     puts [concat "Number of class instances: " [[my class] set site_count]]
 }

See the package for more samples.


Discussion

Please leave your comments here...

See also Translating Java to Tcl.