Approach to add a new language

classic Classic list List threaded Threaded
9 messages Options
Reply | Threaded
Open this post in threaded view
|

Approach to add a new language

Germán Arias
Hi all, I'm new at Kawa, although I have some experience in scheme, but
not in java. I read that Kawa can be used to implement other programming
languages in java platform. So I would like hear your suggestions to do
this. I'm thinking on implement Objective-C, but I don't know how this
works. Parse the objective-C files to generate the corresponding Sheme
files is enough? Or is necessary other considerations? Thanks in advance
for your help.

Germán


Reply | Threaded
Open this post in threaded view
|

Re: Approach to add a new language

Per Bothner


On 09/24/2015 11:28 AM, Germán Arias wrote:
> Hi all, I'm new at Kawa, although I have some experience in scheme, but
> not in java. I read that Kawa can be used to implement other programming
> languages in java platform. So I would like hear your suggestions to do
> this. I'm thinking on implement Objective-C, but I don't know how this
> works. Parse the objective-C files to generate the corresponding Sheme
> files is enough? Or is necessary other considerations? Thanks in advance
> for your help.

Objective-C might be a challenge on the JVM, partly because C is a challenge
on the JVM.  Plus you have to define a mapping from the Objective-C class/object
model to the Java model.

Perhaps you could implement a subset of Objective-C - but why?

I wouldn't use Scheme as an intermediate language (though one could).
One problem is that makes it hard to get line number information correct.
Better (and faster) to parse Objective-C  and generate the Expression
objects that Kawa uses.
--
        --Per Bothner
[hidden email]   http://per.bothner.com/
Reply | Threaded
Open this post in threaded view
|

packaging classes in kawa

Damien Mattei


hello,

is there a way to package a class defined in kawa like it could be done
in java with package name; statement?
Reply | Threaded
Open this post in threaded view
|

Re: packaging classes in kawa

Damien Mattei
is there a way with kawa to have java source code generated by kawa, so
i can add a package statement directly in source? (or does kawa generate
directly java byte-code?)

Le 25/09/2015 11:04, Damien Mattei a écrit :
>
> hello,
>
> is there a way to package a class defined in kawa like it could be done
> in java with package name; statement?
>

Reply | Threaded
Open this post in threaded view
|

Re: Re: packaging classes in kawa

Damien Mattei
great !

so the scheme modules map to java packages...
thanks,
Damien



Le 25/09/2015 13:05, Bruce Lewis a écrit :

> http://www.gnu.org/software/kawa/Module-classes.html
>
> (module-name "fr.unice.package.ThisClass")
>
>
> On Fri, Sep 25, 2015 at 5:09 AM, Damien Mattei <[hidden email]
> <mailto:[hidden email]>> wrote:
>
>     is there a way with kawa to have java source code generated by
>     kawa, so
>     i can add a package statement directly in source? (or does kawa
>     generate
>     directly java byte-code?)
>
>     Le 25/09/2015 11:04, Damien Mattei a écrit :
>     >
>     > hello,
>     >
>     > is there a way to package a class defined in kawa like it could
>     be done
>     > in java with package name; statement?
>     >
>
>

Reply | Threaded
Open this post in threaded view
|

Re: packaging classes in kawa

Per Bothner


On 09/25/2015 06:10 AM, Damien Mattei wrote:
> great !
>
> so the scheme modules map to java packages...

No, Scheme modules map to Java *classes*.

This is the "module class" itself.  They may be additional
classes (ones defined by define-class/define-simple-class,
and "frame" classes used for closures).  This are all in the same package.
The frame classes are member classes or inner classes.
A define-class is (by default) a member class of the module class;
a define-simple-class is (by default) a sibling class (unless it has
same name as the module class, in which case they are combined).
--
        --Per Bothner
[hidden email]   http://per.bothner.com/
Reply | Threaded
Open this post in threaded view
|

Re: packaging classes in kawa

Damien Mattei
i do not understand well...

i have a netbeans project for testing all those stuff:

in java file i have :

package eu.oca;

import gnu.expr.RunnableModule;
import gnu.lists.LList;
import gnu.lists.Pair;

import eu.oca.scheme.Vector2D;

...


 /**
     * Retrieves representation of an instance of eu.oca.serviceResource
     * @return an instance of java.lang.String
     */
    @GET
    @Produces("text/html")
    public String getHtml(
                @DefaultValue("toto") @QueryParam("name") String nom
    ) {
       
        Vector2D vec = new Vector2D( 1, 2);

    Object[] lst = {2, 3};
    double res=vec.norm();
   
    //Object result = vec.plus.applyN(lst);

    LList glst = new LList();
    //glst = glst.list2(2,3); // works also
    glst = LList.list2(2,3);
       
        Object result0 = vec.plus(glst);
    int r = (int) result0;
       
    Pair pair = new Pair(2, LList.Empty);
    Pair pair2 = new Pair(3, pair);
    LList glst2 = new LList();
    glst2 = pair2;

    Object result = vec.plus(glst2);

    Object result1 = vec.carre(glst);

        CreateHTML html = new CreateHTML();
        //TODO return proper representation object
        return html.getHtml()+"<h1>REST in peace " + nom + " with "+
glst + " r = "+ r +" glst2 : "+glst2+" result : "+result+" result1
:"+result1+" !</h1>";
        //throw new UnsupportedOperationException();
    }




and a kawa scheme file:

(module-name "eu.oca.scheme.Vector2D")

(define-simple-class Vector2D ()

...

i made a jar file of eu.oca.scheme.Vector2D put it in library in the
project with add jar/folder in the IDE
all compile now very well and run on a tomcat server

this is of course only for testing... i can call kawa scheme function
from a java netbeans project, that was what i wanted.

well ok your right i imported the class, but for netbeans i was forced
to put the kawa generated classes in a  package ,i can not import in the
project a simple class with no source code .


Le 25/09/2015 17:14, Per Bothner a écrit :

>
>
> On 09/25/2015 06:10 AM, Damien Mattei wrote:
>> great !
>>
>> so the scheme modules map to java packages...
>
> No, Scheme modules map to Java *classes*.
>
> This is the "module class" itself.  They may be additional
> classes (ones defined by define-class/define-simple-class,
> and "frame" classes used for closures).  This are all in the same
> package.
> The frame classes are member classes or inner classes.
> A define-class is (by default) a member class of the module class;
> a define-simple-class is (by default) a sibling class (unless it has
> same name as the module class, in which case they are combined).

Reply | Threaded
Open this post in threaded view
|

Re: packaging classes in kawa

Per Bothner


On 09/25/2015 08:49 AM, Damien Mattei wrote:
> i do not understand well...

If that is a question, I'm afraid we need something more specific ...
--
        --Per Bothner
[hidden email]   http://per.bothner.com/
Reply | Threaded
Open this post in threaded view
|

Re: Approach to add a new language

Germán Arias
In reply to this post by Per Bothner
El jue, 24-09-2015 a las 12:19 -0700, Per Bothner escribió:

>
> On 09/24/2015 11:28 AM, Germán Arias wrote:
> > Hi all, I'm new at Kawa, although I have some experience in scheme, but
> > not in java. I read that Kawa can be used to implement other programming
> > languages in java platform. So I would like hear your suggestions to do
> > this. I'm thinking on implement Objective-C, but I don't know how this
> > works. Parse the objective-C files to generate the corresponding Sheme
> > files is enough? Or is necessary other considerations? Thanks in advance
> > for your help.
>
> Objective-C might be a challenge on the JVM, partly because C is a challenge
> on the JVM.  Plus you have to define a mapping from the Objective-C class/object
> model to the Java model.
>
> Perhaps you could implement a subset of Objective-C - but why?
>
> I wouldn't use Scheme as an intermediate language (though one could).
> One problem is that makes it hard to get line number information correct.
> Better (and faster) to parse Objective-C  and generate the Expression
> objects that Kawa uses.

Thanks for your advice.

P.S. After trying again, I'm able to compile an Objective-C runtime to
android. So, I will be able to compile directly Objective-C on
android :)

Thanks
Germán