cvsuser 05/03/26 15:04:15
Modified: languages/cola README
Log:
Minor update.
Revision Changes Path
1.19 +18 -28 parrot/languages/cola/README
Index: README
===================================================================
RCS file: /cvs/public/parrot/languages/cola/README,v
retrieving revision 1.18
retrieving revision 1.19
diff -u -r1.18 -r1.19
--- README 27 Feb 2005 10:00:09 -0000 1.18
+++ README 26 Mar 2005 23:04:15 -0000 1.19
@@ -1,6 +1,6 @@
"Cola" - A compiler for the Parrot/Perl6 VM
- V0.0.11.1
+ V0.1.2
I've started this compiler (I call it Cola) to simultaneously
teach myself how to write a compiler (ok I admit I squeaked
@@ -12,33 +12,26 @@
a language similar to C/C++/C#/Java.
The Cola parser is LALR, developed with flex/bison. It targets
- an intermediate language (PIR?) which can be found in
- parrot/languages/imcc or alongside Cola on CPAN.
+ an intermediate language (PIR) which can be found in
+ parrot/imcc or alongside Cola on CPAN.
IMCC does the register allocation/spill control, optimization
and various other dirty things, before generating machine
instructions. Currently the only target is Parrot.
Where to Get the Latest Compiler
- Cola is included in the Parrot distribution,
- see http://www.parrotcode.org or http://dev.perl.org/perl6
- At some point the distributions may diverge for some reason
- so you can grab the latest tarball from CPAN.
-
+ This was a quick 2-week project in 2002 to show how to compile
+ to Parrot. Sometime in 2005 I plan to release a full implementation
+ of Cola to CPAN and will update the README accordingly.
http://cpan.org/authors/id/M/ME/MELVIN
The Syntax
- Compatible (eventually, maybe) C# syntax.
+ Who knows? C# and Perl mix.
The easiest way to see what it currently looks like is
to read the examples.
- I aim to eventually achieve C# source level compliance, targetted
- to the Parrot runtime. Whether or not we do on the fly bytecode
- interfacing with .NET later is a whole different rhinoceros.
-
-
Supported Constructs
For some quick samples, see the cola/examples/ subdirectory.
@@ -157,25 +150,22 @@
You will need Flex and Bison installed to build the compiler.
These are the GNU versions of the classic lex and yacc, but
are more modern. The grammars should work with standard lex/yacc
- but I've not tested this lately.
-
- If for some odd reason you have Perl and Parrot but no Flex/Bison
- send me an email <[EMAIL PROTECTED]> and I might take pity
- on you and send you the generated parser C files.
+ but I've not tested this lately. parser.c is provided pre-generated
+ so you do not actually need lex/yacc.
- Build colac by typing:
+ Build Cola from the languages directory above this by typing:
- make
+ make languages
Usage:
- colac examples/mandelbrot.cola
+ colacc examples/mandelbrot.cola
- NOTE: colac will expect you to have core.imc in the current directory
+ NOTE: colacc will expect you to have core.imc in the current directory
when you execute it as it autoincludes it in generated code.
- This will call imcc to generate 2 types of output. a.pasm and a.pbc
- You can run the .pbc (bytecode) immediately with Parrot:
+ This will call Parrot (and imcc) to generate 2 types of output. a.pasm
+ and a.pbc. You can run the .pbc (bytecode) immediately with Parrot:
parrot a.pbc
@@ -201,10 +191,10 @@
Intermediate Code
- Please see the README in the parrot/languages/imcc directory.
+ Please see the README in the parrot/imcc directory.
For a nice sample of intermediate code, compile mandelbrot.cola or
- calc.cola which actually does a limited form of parsing with Parrot!
+ calc.cola which actually does a limited form of parsing with Parrot.
Register Allocation
@@ -213,7 +203,7 @@
named locals/globals and symbolic temporary registers. IMCC
handles the allocation and spilling.
- See imcc/README
+ See parrot/imcc/README
Optimization