Re: generic code generator? [was: subroutines and python status]

2003-08-14 Thread Stephen Thorne
On Tue, 5 Aug 2003 12:48, Michal Wallace wrote:
 It does seem like there are some snags getting
 languages to talk to each other, even with the
 calling conventions, but even so, I'm even more
 convinced now that a generic, overridable
 code-generator is the way to go.

 It seems to me that if we want to maximize the
 number of languages using it, the generic
 compiler shouldn't depend on anything but
 C and parrot... But until we get it working,
 I'd like to stick to a dynamic language like
 python/perl/lua/scheme. And, well, my code's
 already in python... :) [though I'd actually
 love to try out some lua 5]

I like the concept, but I have a comment about the implementation. For PHP, 
and even for Python, it is necessery to do code generation on the fly, for 
things like eval() and dynamic imports (php's include is always a dynamic 
import).

Thus the code generator is best suited to be in a language that can be run 
from within the parrot machine, otherwise statements like 'eval()' would not 
be possible without binding parrot to a non-portable C library.

I would instead suggest that we pick a suitable 'dynamic' language to write 
the code generator in, so it can be self-hosting.

Regards,
Stephen Thorne.


Re: generic code generator? [was: subroutines and python status]

2003-08-14 Thread Michal Wallace
On Tue, 5 Aug 2003, Stephen Thorne wrote:

  It seems to me that if we want to maximize the
  number of languages using it, the generic
  compiler shouldn't depend on anything but
  C and parrot... But until we get it working,
  I'd like to stick to a dynamic language like
  python/perl/lua/scheme. And, well, my code's
  already in python... :) [though I'd actually
  love to try out some lua 5]
 
 I like the concept, but I have a comment about the
 implementation. For PHP, and even for Python, it is necessery to do
 code generation on the fly, for things like eval() and dynamic
 imports (php's include is always a dynamic import).

definitely.
 
 Thus the code generator is best suited to be in a language that can
 be run from within the parrot machine, otherwise statements like
 'eval()' would not be possible without binding parrot to a
 non-portable C library.

 I would instead suggest that we pick a suitable 'dynamic' language
 to write the code generator in, so it can be self-hosting.
 
Sure. That's why I said stick to C or parrot. I'm not sure
I understand why C wouldn't be portable... (I don't know c
at all but I thought that was the point)?? I'd much rather
use parrot. Where parrot means something else compiled 
down to parrot, and something else means python. :)


Sincerely,
 
Michal J Wallace
Sabren Enterprises, Inc.
-
contact: [EMAIL PROTECTED]
hosting: http://www.cornerhost.com/
my site: http://www.withoutane.com/
--




Re: generic code generator? [was: subroutines and python status]

2003-08-14 Thread Joseph Ryan
Michal Wallace wrote:

On Sun, 3 Aug 2003, K Stol wrote:

 

What do you think? Want to try squishing pirate/python
and pirate/lua together? :)
 

Yeah, I like the idea. Let's try this out.
   



Well, I finished reading your report[1] and 
posted some of my (rather unorganized) thoughts
up at [2]

It does seem like there are some snags getting
languages to talk to each other, even with the
calling conventions, but even so, I'm even more
convinced now that a generic, overridable
code-generator is the way to go. 

It seems to me that if we want to maximize the
number of languages using it, the generic 
compiler shouldn't depend on anything but 
C and parrot... But until we get it working,
I'd like to stick to a dynamic language like
python/perl/lua/scheme. And, well, my code's
already in python... :) [though I'd actually
love to try out some lua 5]

What I'm picturing is a template system for
specifying chunks of IMCC. Something like this:
ast generic:
  on @while(test, body):
  % while= gensym(while)
  % endwhile = gensym(endwhile)
  % test = gensym($I)
  {while}:
  {test} = @expr
  unless {test} goto {endwhile}
  @body
  {endwhile}:
  on @if(test, elif*, else?):
 ...
ast python(generic):
  on @while(test, body, else?):
 ...
Okay, I don't have a good syntax in mind yet,
the point is it's a template language and you
can subclass/override/extend the template. 
Maybe there's no syntax and it just uses 
cleanly coded classes in some oo language.
Or perl6 with it's grammars and rules. I
don't know.

I think that trying to define a new syntax for a new meta-language is a bad
idea.  The goal of a GCG (Generic Code Generator) should be to 
allieviate the
compiler writers of the responsiblity of generating code.  Forcing them to
generate different code doesn't help solve the problem. (-:

However, at the risk of sounding lame, what if the GCG syntax was 
instead some
sort of standard meta-language structure like YAML or XML?  As in, the 
syntax
wouldn't be a syntax at all, but just a dump of the AST with 
standardized node
names.  I think this would have a number of benefits:

1.) Instead of forcing the compiler writer to generate code, the 
compiler writer
would only have to transform the parse tree into a structure that is
name-consistant with the GCG's standard, and then use any of a number of
existing libraries to dump the tree as YAML/XML.

2.) Since there are more YAML/XML parsers than I can count implemented in
nearly modern useful language I can think of, the GCG could be generated in
any language without causing a stall on starting on the generic code 
generation
part of the project. (you know, the important part)

3.) It would be possible to handle language-specific nodes by defining some
sort of raw node whose value could be raw imcc code.
Anyways, just a few thoughts.  A tool like this would be *very* useful,
I think.  Good luck. (-:
- Joe




Re: generic code generator? [was: subroutines and python status]

2003-08-14 Thread K Stol

- Original Message -
From: Joseph Ryan [EMAIL PROTECTED]
To: Michal Wallace [EMAIL PROTECTED]
Cc: K Stol [EMAIL PROTECTED]; [EMAIL PROTECTED]
Sent: Tuesday, August 05, 2003 12:24 AM
Subject: Re: generic code generator? [was: subroutines and python status]


 Michal Wallace wrote:

 On Sun, 3 Aug 2003, K Stol wrote:
 
 
 
 What do you think? Want to try squishing pirate/python
 and pirate/lua together? :)
 
 
 Yeah, I like the idea. Let's try this out.
 
 
 
 
 Well, I finished reading your report[1] and
 posted some of my (rather unorganized) thoughts
 up at [2]
 
 It does seem like there are some snags getting
 languages to talk to each other, even with the
 calling conventions, but even so, I'm even more
 convinced now that a generic, overridable
 code-generator is the way to go.
 
 It seems to me that if we want to maximize the
 number of languages using it, the generic
 compiler shouldn't depend on anything but
 C and parrot... But until we get it working,
 I'd like to stick to a dynamic language like
 python/perl/lua/scheme. And, well, my code's
 already in python... :) [though I'd actually
 love to try out some lua 5]
 
 What I'm picturing is a template system for
 specifying chunks of IMCC. Something like this:
 
 
 ast generic:
on @while(test, body):
% while= gensym(while)
% endwhile = gensym(endwhile)
% test = gensym($I)
 
{while}:
{test} = @expr
unless {test} goto {endwhile}
@body
{endwhile}:
 
on @if(test, elif*, else?):
   ...
 
 ast python(generic):
on @while(test, body, else?):
   ...
 
Yeah, I like the template idea.
 
 Okay, I don't have a good syntax in mind yet,
 the point is it's a template language and you
 can subclass/override/extend the template.
 Maybe there's no syntax and it just uses
 cleanly coded classes in some oo language.
 Or perl6 with it's grammars and rules. I
 don't know.
 

 I think that trying to define a new syntax for a new meta-language is a
bad
 idea.  The goal of a GCG (Generic Code Generator) should be to
 allieviate the
 compiler writers of the responsiblity of generating code.  Forcing them to
 generate different code doesn't help solve the problem. (-:

 However, at the risk of sounding lame, what if the GCG syntax was
 instead some
 sort of standard meta-language structure like YAML or XML?

XML also has a syntax...sounds just like the template idea to me.

As in, the
 syntax
 wouldn't be a syntax at all, but just a dump of the AST with
 standardized node
 names.  I think this would have a number of benefits:

 1.) Instead of forcing the compiler writer to generate code, the
 compiler writer
 would only have to transform the parse tree into a structure that is
 name-consistant with the GCG's standard, and then use any of a number of
 existing libraries to dump the tree as YAML/XML.

 2.) Since there are more YAML/XML parsers than I can count implemented in
 nearly modern useful language I can think of, the GCG could be generated
in
 any language without causing a stall on starting on the generic code
 generation
 part of the project. (you know, the important part)

The parsing should not be a problem (well, unless we come up with a really
nasty syntax)
Using a tool such as Yacc really helps for fast prototyping.

 3.) It would be possible to handle language-specific nodes by defining
some
 sort of raw node whose value could be raw imcc code.

This would be really handy.

 Anyways, just a few thoughts.  A tool like this would be *very* useful,
 I think.  Good luck. (-:

 - Joe


I quickly scanned all messages on this topic, so I really read it fast (and
probably missed some things I guess).
Here are my ideas. I have to think things over well, but here are my quick
thoughts.

I like the ideas of templates. Furthermore, ...

 I think that trying to define a new syntax for a new meta-language is a
bad
 idea.  The goal of a GCG (Generic Code Generator) should be to
 allieviate the
 compiler writers of the responsiblity of generating code.  Forcing them to
 generate different code doesn't help solve the problem. (-:

I don't think the compiler writer has to *generate* this metacode, but it
can be used just like YACC and LEX:
just create a code generater generater based on some file. Most ideal would
of course be a compiler that can be constructed like:

LEX input file - Lex - scanner
YACC input file - Yacc - parser
TREECC input file - TreeCC - AST code
PIRATE[1] input file - Pirate - Code generator

But that's for later :-)

[1] I just called this project pirate because of the similarly named
compilers for which it could be used (Lua/Python, and this pirate is
Taking Over the Ship of Code generation :-P, oh well)

Well, just got home, so I'll go read it better soon.

Klaas-Jan







Re: generic code generator? [was: subroutines and python status]

2003-08-14 Thread Dan Sugalski
At 11:09 PM -0400 8/4/03, Michal Wallace wrote:
On Tue, 5 Aug 2003, Stephen Thorne wrote:

 Thus the code generator is best suited to be in a language that can
 be run from within the parrot machine, otherwise statements like
 'eval()' would not be possible without binding parrot to a
 non-portable C library.
 I would instead suggest that we pick a suitable 'dynamic' language
 to write the code generator in, so it can be self-hosting.
Sure. That's why I said stick to C or parrot. I'm not sure
I understand why C wouldn't be portable... (I don't know c
at all but I thought that was the point)?? I'd much rather
use parrot. Where parrot means something else compiled
down to parrot, and something else means python. :)
The original thought was to use the new perl 6 grammar engine/code to 
do this, but I think it'll be a while before that's ready to go.

Rather than invent an entirely new language for this (which is 
somewhat problematic) why not go for something already reasonably 
well-known? YACC and BNF grammars seem like a good place to start, 
especially as most of the languages have some form of grammar defined 
for them.

It's only a first step, as then everyone beats the heck out of the 
resulting token stream, but it's a place to start. 80-90% of the 
result will end up being generically parseable as well--x + y will 
generate the same code for all languages if x and y are PMCs, for 
example, so I'd bet we could have a lot of standard products designed.
--
Dan

--it's like this---
Dan Sugalski  even samurai
[EMAIL PROTECTED] have teddy bears and even
  teddy bears get drunk


Re: generic code generator? [was: subroutines and python status]

2003-08-14 Thread Michal Wallace
On Tue, 5 Aug 2003, Dan Sugalski wrote:

 The original thought was to use the new perl 6 grammar engine/code
 to do this, but I think it'll be a while before that's ready to go.

I think perl6 is definitely the way to go, once it's ready.

BTW, what's the deal with Bundle::Perl6? I tried installing it from
cpan yesterday but it wouldn't install with my perl. (I forget why)
Is it meant to be usable today?

 
 Rather than invent an entirely new language for this (which is
 somewhat problematic) why not go for something already reasonably
 well-known? YACC and BNF grammars seem like a good place to start,
 especially as most of the languages have some form of grammar
 defined for them.

Well the new language was just for the imcc code templates.
Now I think the better path is to define a code-generating class
for each ast node.

Then PythonWhileNode can be a subclass of the generic WhileNode.
(Python while statements have an extra else block that most 
languages don't have)


 It's only a first step, as then everyone beats the heck out of the
 resulting token stream, but it's a place to start. 80-90% of the
 result will end up being generically parseable as well--x + y will
 generate the same code for all languages if x and y are PMCs, for
 example, so I'd bet we could have a lot of standard products
 designed.
 
Yep. For now, everything pypirate generates *is* pmc based,
since python doesn't have type declarations. Generic pirate
should probably have a declare node though. (Especially
if it's to handle perl6, right?)

Sincerely,
 
Michal J Wallace
Sabren Enterprises, Inc.
-
contact: [EMAIL PROTECTED]
hosting: http://www.cornerhost.com/
my site: http://www.withoutane.com/
--




Re: generic code generator? [was: subroutines and python status]

2003-08-10 Thread Michal Wallace
On Tue, 5 Aug 2003, Joseph Ryan wrote:

 Okay, I don't have a good syntax in mind yet,
 the point is it's a template language and you
 can subclass/override/extend the template. 
 Maybe there's no syntax and it just uses 
 cleanly coded classes in some oo language.
 Or perl6 with it's grammars and rules. I
 don't know.
 
 
 I think that trying to define a new syntax for a new meta-language
 is a bad idea.  The goal of a GCG (Generic Code Generator) should be
 to allieviate the compiler writers of the responsiblity of
 generating code.  Forcing them to generate different code doesn't
 help solve the problem. (-:
 

Good point. I don't think I was very clear yesterday. Let
me try again. Let's say you're generating... I dunno.. haskell:



 haskell_parser - ast - pirate - parrot_code -- imcc - pbc
^
|
  parrot_code__templates
 

So the haskell parser only has to generate a pirate ast structure.
Either that's a very basic string (I like your XML idea) *or*, in
the future, the parser calls pirate tree-building-methods directly.

The tree-building methods are why I was talking about C, but for
now, I don't mind doing a bunch of xml-generation every time we
call eval/exec. (It's probably the simplest thing to do right now
and should be pretty easy for everyone)


 1.) Instead of forcing the compiler writer to generate code, the
 compiler writer would only have to transform the parse tree into a
 structure that is name-consistant with the GCG's standard, and then
 use any of a number of existing libraries to dump the tree as
 YAML/XML.

I like it! :)

 
 2.) Since there are more YAML/XML parsers than I can count
 implemented in nearly modern useful language I can think of, the GCG
 could be generated in any language without causing a stall on
 starting on the generic code generation part of the project. (you
 know, the important part)

Agreed!


 3.) It would be possible to handle language-specific nodes by
 defining some sort of raw node whose value could be raw imcc code.

That's where the templates come in, but since my crack
at a template language last night sucked so bad, I'm
thinking that at least for prototyping I'm going to 
use a python class.

So I'm thinking I'm going to try refactoring so that 
I can do this:

   pypirate something.py  something.xml
   cat something.xml  pirate -l python   something.imc
   imcc something.imc

or just:

   pypirate something.py | pirate -l python | imcc

or just:

   pypyrate -r something.py 

That also means the pirate command can be written in
any language we like. Probably eventually that'll be 
perl6, but for now (unless someone else wants to 
volunteer some code) I plan to work from the code
I have for python.

Sincerely,
 
Michal J Wallace
Sabren Enterprises, Inc.
-
contact: [EMAIL PROTECTED]
hosting: http://www.cornerhost.com/
my site: http://www.withoutane.com/
--




Re: generic code generator? [was: subroutines and python status]

2003-08-08 Thread Dan Sugalski
At 1:35 PM -0400 8/5/03, Michal Wallace wrote:
On Tue, 5 Aug 2003, Joseph Ryan wrote:

 Okay, I don't have a good syntax in mind yet,
 the point is it's a template language and you
 can subclass/override/extend the template.
 Maybe there's no syntax and it just uses
 cleanly coded classes in some oo language.
 Or perl6 with it's grammars and rules. I
 don't know.
 

 I think that trying to define a new syntax for a new meta-language
 is a bad idea.  The goal of a GCG (Generic Code Generator) should be
 to allieviate the compiler writers of the responsiblity of
 generating code.  Forcing them to generate different code doesn't
 help solve the problem. (-:


Good point. I don't think I was very clear yesterday. Let
me try again. Let's say you're generating... I dunno.. haskell:


 haskell_parser - ast - pirate - parrot_code -- imcc - pbc
^
|
  parrot_code__templates

   
So the haskell parser only has to generate a pirate ast structure.
Either that's a very basic string (I like your XML idea) *or*, in
the future, the parser calls pirate tree-building-methods directly.
I'd much rather go for the AST directly for a number of reasons. Not 
the least of which is a deep personal loathing for XML, but putting 
that aside it seems sub-optimal to have a binary structure which we 
then serialize to text and then deserialize all as part of a single 
parse and compile stage.  XML has the added disadvantage of needing a 
good XML parser, which probably means expat or something like it. 
(Yeah, I know, we could restrict ourselves to a subset of XML so we 
don't have to have a full parser, but that'll never last--someone'll 
expand it to a full parser at some point)

Going for a full-fledged AST builder/flattener meets some of the 
long-term goals as well, as it's been planned to be the stage between 
the parser and IMCC for ages (pretty much since IMCC first appeared) 
so it'd be worthwhile.

We should consider AST transforms as well, since a number of 
optimizations are best performed on the AST, and many languages will 
want to get hold of the AST before it goes any further and process it 
in some way. (This would be how Lisp macros would act, for example)

  1.) Instead of forcing the compiler writer to generate code, the
 compiler writer would only have to transform the parse tree into a
 structure that is name-consistant with the GCG's standard, and then
 use any of a number of existing libraries to dump the tree as
 YAML/XML.
I like it! :)
This'd be a cool thing to be sure, and useful as a human-readable 
form. (Though I'd prefer the AST that's frozen into the bytecode be 
in a form that's more efficient to deserialize) I'd best go and 
update the license terms then, to make sure there aren't any 
problems. (Old issues raised by GCC an age ago)
--
Dan

--it's like this---
Dan Sugalski  even samurai
[EMAIL PROTECTED] have teddy bears and even
  teddy bears get drunk


Re: generic code generator? [was: subroutines and python status]

2003-08-08 Thread Michal Wallace
On Thu, 7 Aug 2003, Dan Sugalski wrote:

   haskell_parser - ast - pirate - parrot_code -- imcc - pbc
  ^
  |
parrot_code__templates
  
 
 So the haskell parser only has to generate a pirate ast structure.
 Either that's a very basic string (I like your XML idea) *or*, in
 the future, the parser calls pirate tree-building-methods directly.
 
 I'd much rather go for the AST directly for a number of reasons. Not 
 the least of which is a deep personal loathing for XML, but putting 
 that aside it seems sub-optimal to have a binary structure which we 
 then serialize to text and then deserialize all as part of a single 
 parse and compile stage.  XML has the added disadvantage of needing a 
 good XML parser, which probably means expat or something like it. 
 (Yeah, I know, we could restrict ourselves to a subset of XML so we 
 don't have to have a full parser, but that'll never last--someone'll 
 expand it to a full parser at some point)


Klaas-Jan and I spiked out a prototype last night that took 
s-expressions. We got this working:

   (while (const 1) (pass))

Where While was a class that could be subclassed for PythonWhile
(python has an extra else clause in there)

I think everyone agrees that long term, there's no point in 
passing around xml or s-expressions because it'll be dog 
slow, but for now, for prototyping, passing the flattened
AST in as an s-expression on STDIN means that anyone can
write to it and we don't have to worry about a tree-building
interface until after the code is working.

 
 Going for a full-fledged AST builder/flattener meets some of the 
 long-term goals as well, as it's been planned to be the stage between 
 the parser and IMCC for ages (pretty much since IMCC first appeared) 
 so it'd be worthwhile.

I agree. The main reason to hold off *FOR NOW* is bindings. If
everyone wrote their parsers in C, then we could just use that.
But I don't feel like learning C, so... Right now the code is 
in python. I suspect eventually this will be written in perl6 
or someting. 

 
 We should consider AST transforms as well, since a number of 
 optimizations are best performed on the AST, and many languages will 
 want to get hold of the AST before it goes any further and process it 
 in some way. (This would be how Lisp macros would act, for example)

Absolutely. I suspect that for python, I'll be turning list
comprehensions into the corresponding foreach nodes before
serializing the tree.


1.) Instead of forcing the compiler writer to generate code, the
   compiler writer would only have to transform the parse tree into a
   structure that is name-consistant with the GCG's standard, and then
   use any of a number of existing libraries to dump the tree as
   YAML/XML.
 
 I like it! :)
 
 This'd be a cool thing to be sure, and useful as a human-readable 
 form. (Though I'd prefer the AST that's frozen into the bytecode be 
 in a form that's more efficient to deserialize) I'd best go and 
 update the license terms then, to make sure there aren't any 
 problems. (Old issues raised by GCC an age ago)

I'm not sure I follow this.

Sincerely,
 
Michal J Wallace
Sabren Enterprises, Inc.
-
contact: [EMAIL PROTECTED]
hosting: http://www.cornerhost.com/
my site: http://www.withoutane.com/
--




Re: generic code generator? [was: subroutines and python status]

2003-08-05 Thread Michal Wallace
On Sun, 3 Aug 2003, K Stol wrote:

  What do you think? Want to try squishing pirate/python
  and pirate/lua together? :)
 
 Yeah, I like the idea. Let's try this out.


Well, I finished reading your report[1] and 
posted some of my (rather unorganized) thoughts
up at [2]

It does seem like there are some snags getting
languages to talk to each other, even with the
calling conventions, but even so, I'm even more
convinced now that a generic, overridable
code-generator is the way to go. 

It seems to me that if we want to maximize the
number of languages using it, the generic 
compiler shouldn't depend on anything but 
C and parrot... But until we get it working,
I'd like to stick to a dynamic language like
python/perl/lua/scheme. And, well, my code's
already in python... :) [though I'd actually
love to try out some lua 5]

What I'm picturing is a template system for
specifying chunks of IMCC. Something like this:


ast generic:
   on @while(test, body):
   % while= gensym(while)
   % endwhile = gensym(endwhile)
   % test = gensym($I)

   {while}:
   {test} = @expr
   unless {test} goto {endwhile}
   @body
   {endwhile}:

   on @if(test, elif*, else?):
  ...

ast python(generic):
   on @while(test, body, else?):
  ...


Okay, I don't have a good syntax in mind yet,
the point is it's a template language and you
can subclass/override/extend the template. 
Maybe there's no syntax and it just uses 
cleanly coded classes in some oo language.
Or perl6 with it's grammars and rules. I
don't know.

Once the templates are defined, you pass
the compiler your AST and it walks it and
applies the template. 

So the C api basically is just about building
the tree and saying generate with this 
language file. Then the language designer's
job is just to transform an outside ast 
into a generic ast. 

Anyway, I'm talking a lot of nonsense. I'd
rather just see what I can do about decoupling
my code generator from python and sharing 
it with another language instead.

[1] lua report: http://members.home.nl/joeijoei/parrot/report.pdf
[2] http://pirate.versionhost.com/viewcvs.cgi/pirate/INTEROP?rev=1.1

Sincerely,
 
Michal J Wallace
Sabren Enterprises, Inc.
-
contact: [EMAIL PROTECTED]
hosting: http://www.cornerhost.com/
my site: http://www.withoutane.com/
--




Re: generic code generator? [was: subroutines and python status]

2003-08-03 Thread K Stol

- Original Message -
From: Michal Wallace [EMAIL PROTECTED]
To: K Stol [EMAIL PROTECTED]
Cc: [EMAIL PROTECTED]
Sent: Sunday, August 03, 2003 2:25 AM
Subject: generic code generator? [was: subroutines and python status]


 On Fri, 1 Aug 2003, K Stol wrote:

   From: Leon Brocard [EMAIL PROTECTED]
 ...
   I don't like things becoming dead-ends. How much work do you think
   it'd be to extend it some more and update it to latest Lua?
 ...
  2: I misdesigned the code generator; that is, at the point where I
  couldn't start over, it was too late, the code generator was too big
  already (it was unmaintainable). But because I had a time schedule,
  I kept it this way (the product itself wasn't the most important
  thing, I was writing an undergraduate report for the last semester
  of my education (for the record: the project served me well, I
  finished this education))

   Would it be worth checking this into parrot CVS?
 
  Only if the thing would be working, otherwise it would only be a
  source of confusion and frustration.  Now I'm just thinking very
  hard to decide if I've got enough spare time to rewrite the code
  generator

At this moment, I'm looking at a new version of Lua, the previous 'pirate'
compiled (well, sort of :-) Lua 4
Lua 5 has some features, such as coroutines (If I remembered well) and all
kinds of neat stuff for which Parrot
has built-in support (and it dropped some/a feature(s) from Lua 4). I think
I'll try to create a parser for Lua 5, and to recreate a Lua/Parrot compiler
(should go a lot easier now that I had the time to think about the errors I
made).

 Hmm. I've only messed around with Lua for a few hours
 though, and it was several months ago, but the Lua
 language seems to be pretty similar to python.

A few days ago I had a look at Python, and I noticed the similarities, too.
Also the fact that python was noted to be a language that can be used in an
embedded way  reminded me of this similarity (Lua was more or less created
for this: extending/embedding).

 Really, there's a ton of overlap between the various
 high level languages that parrot wants to support.
 Maybe we could put together a generic code generator
 that everyone could use? Obviously, it would have to
 be set up so you could override the parts for each
 language, but it shouldn't be too terribly hard.

Sounds like quite a challenge, but a good idea, and I think worth a try.


 What do you think? Want to try squishing pirate/python
 and pirate/lua together? :)

Yeah, I like the idea. Let's try this out.

Klaas-Jan

 Sincerely,

 Michal J Wallace
 Sabren Enterprises, Inc.
 -
 contact: [EMAIL PROTECTED]
 hosting: http://www.cornerhost.com/
 my site: http://www.withoutane.com/
 --







Re: generic code generator? [was: subroutines and python status]

2003-08-03 Thread Michal Wallace
On Sun, 3 Aug 2003, K Stol wrote:

 At this moment, I'm looking at a new version of Lua, the previous
 'pirate' compiled (well, sort of :-) Lua 4 Lua 5 has some features,
 such as coroutines (If I remembered well) and all kinds of neat
 stuff for which Parrot has built-in support (and it dropped some/a
 feature(s) from Lua 4). I think I'll try to create a parser for Lua
 5, and to recreate a Lua/Parrot compiler (should go a lot easier now
 that I had the time to think about the errors I made).

Cool. :) I'm just now reading through your report. 


  Really, there's a ton of overlap between the various
  high level languages that parrot wants to support.
  Maybe we could put together a generic code generator
  that everyone could use? Obviously, it would have to
  be set up so you could override the parts for each
  language, but it shouldn't be too terribly hard.
 
 Sounds like quite a challenge, but a good idea, and I think worth a try.

  What do you think? Want to try squishing pirate/python
  and pirate/lua together? :)
 
 Yeah, I like the idea. Let's try this out.

Great! I figure since you've already got lua 4
working, we can leverage what you've already
got and then just add the new features for 
python and lua 5.

If you're still around, want to meet up online real
quick? I'm logged in as sabren in #parrot on 
irc.infobot.org

Sincerely,
 
Michal J Wallace
Sabren Enterprises, Inc.
-
contact: [EMAIL PROTECTED]
hosting: http://www.cornerhost.com/
my site: http://www.withoutane.com/
--




Re: generic code generator? [was: subroutines and python status]

2003-08-03 Thread Stephen Thorne
On Sun, 3 Aug 2003 19:25, Michal Wallace wrote:
 On Fri, 1 Aug 2003, K Stol wrote:
 Really, there's a ton of overlap between the various
 high level languages that parrot wants to support.
 Maybe we could put together a generic code generator
 that everyone could use? Obviously, it would have to
 be set up so you could override the parts for each
 language, but it shouldn't be too terribly hard.

 What do you think? Want to try squishing pirate/python
 and pirate/lua together? :)

A nice high level code generator would be in my interests as well. Seeing as 
I'm currently working on php/parrot and I've got 'hello world' standard imcc 
code generation going. I'd really like to be able to save alot of the low 
level work.

With regards to my own project, would it be appropriate to ask for parrot CVS 
access in order to publish the php compiler in the parrot source tree? One of 
the files is under the Zend license, being a direct derivation from 
zend_language_scanner.y, are there any licensing restrictions about what goes 
into perl cvs?

Stephen.