About

Metadata

  • Last updated , by tfaoliveira
  • License LicenseRef-GPL
  • Categories Compilers and Interpreters, Cryptography
  • Maintained by: Paulo Silva <paufil@di.uminho.pt>

  • Lottery factor: 0

Links

Installation

Readme

CAO Compiler

  1. Dependencies

To build the CAO Compiler you need:

  • happy
  • alex
  • cabal package manager

We recommend the installation of the Haskell Platform which contains all the aforementioned dependencies: http://hackage.haskell.org/platform/

  1. Build instructions

$ cabal configure $ cabal build $ cabal install

  1. Run dependencies (optional)

To run the CAO Compiler you may need:

  • Yices SMT solver (version 1)

This SMT solver is used to check some more complex conditions when typechecking a CAO program. The compiler works without Yices but some conditions may not be verified. A warning is shown in these cases.

  1. Backend library dependencies

To compile the generated code with the backend library you need:

  • NTL
  • GMP (optional)

NTL is available from http://www.shoup.net/ntl/ GMP is available from https://gmplib.org

Information about how to compile NTL with GMP can be found here: http://www.shoup.net/ntl/doc/tour-gmp.html

  1. Run instructions

To see a description of all compiler options: $ cao help

The basic compiler usage is: $ cao comp [cao-file]

  1. Example

In the 'example' directory you can find a CAO implementation of the SHA1 hash algorithm. The Makefile provides an example of how a generated C program can be compiled and linked with the backend library. You may have to adjust the script variable 'CAO_PATH' to the root directory of your installation.

Contact Information

Bugs/Suggestions please mail to:

Manuel Barbosa - mbb@di.uminho.pt Paulo Silva - paufil@di.uminho.pt

Contributors:

Bárbara Vieira - barbarasv@di.uminho.pt David Castro - dcastro@di.uminho.pt Hélder Pereira - hpereira@di.uminho.pt Manuel Barbosa - mbb@di.uminho.pt Miguel Marques - mmarques@di.uminho.pt Nuno Rodrigues - nfr@di.uminho.pt Paulo Silva - paufil@di.uminho.pt Tiago Oliveira - tfaoliveira@di.uminho.pt