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

Distribution:
---------------
		README		  - this file
		cjcc-linux*	  - Linux executable
		cjcc-solaris*	  - Sun Solaris executable
		examples/	  - join calculus sample files
		j*		  - batch file for one-step compilation
		join-0.5.2.tar.gz - archive with complete source code

Description:
---------------

The Core Join Calculus is an experimental programming language described in

[1] C. Fournet, G. Gonthier.  
  The reflexive CHAM and the join-calculus.  In POPL'96.  
  http://research.microsoft.com/~fournet/papers/reflexive-cham-join-calculus.ps
  http://dx.doi.org/10.1145/237721.237805

[2] C. Fournet, G. Gonthier, J-J. Levy, L. Maranget, D. Remy. 
  A Calculus of Mobile Agents.  In CONCUR'96, p.406-431.
  ftp://ftp.inria.fr/INRIA/Projects/cristal/Didier.Remy/mobile-agents.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.

Usage:
---------------

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

Syntax:
---------------

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>

Changes:
---------------

v0.5.2 2004/11/24: fixed expected number of shift/reduce conflicts

v0.5.1 2004/11/22: minor fixes for compatibility with recent versions
of bison

v0.5 1997/09/04: minor update. A bug reported by Luca Padovani, which
affected only the "DEBUG" mode, has been fixed.

v0.4 1996/10/01: first public release.

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.
