A Compiler for the Core Join Calculus: cjcc, version 0.4.
Copyright (C) 1996 Peter Selinger.

Distribution:	README		- this file
		cjcc*		- Sun Solaris executable (runs on saul.cis)
		examples/	- join calculus sample files
		j*		- batch file for one-step compilation
		join-0.4.tar	- archive with complete source code

The Core Join Calculus is an experimental programming language described in

[1] C. Fournet, G. Gonthier.  
    The reflexive CHAM and the join-calculus.  To appear in POPL'96.  
    http://pauillac.inria.fr/~fournet/papers/popl-96.ps.gz

[2] C. Fournet, G. Gonthier, J-J. Levy, L. Maranget, D. Remy. 
    A Calculus of Mobile Agents.  To appear in CONCUR'96.
    http://pauillac.inria.fr/~fournet/papers/concur-96.ps.gz

'cjcc' is an experimental compiler of the core join calculus into C.
Feel free to download it, play with it, and change it as you like.

To compile a join calculus file, first use 'cjcc' to generate C code,
then use a C-compiler to get an executable file. (Or use the batch
file 'j'). For example, to compile and run the file 'numbers.j', type

		cjcc -o numbers.c numbers.j
		gcc -o numbers numbers.c
		numbers

Here is a brief summary of the syntax used by cjcc:

Values v ::= x | 123 | "abc" | true | false | _

Processes P ::= x<v1,...,vn>
                {}
                {P}
                P | P
                def D in P
                def /* name */ D in P

Definitions D ::= J --> P
                  D and D

Join Patterns J ::= x<y1,...,yn>
                    J | J         (all yi distinct names)

System calls: write <value,continuation,exception>
              readint <int_result,exc>
              equal <int1,int2,boole_result,exc> similar less
              plus <int1,int2,int_result,exc>    similar minus,times,div
              if <boole,then_cont,else_cont,exc>

LICENSE

   This program is free software; you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
   the Free Software Foundation; either version 1, or (at your option)
   any later version.

   This program is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   GNU General Public License for more details.

   You should have received a copy of the GNU General Public License
   along with this program; if not, write to the Free Software
   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
