# Matrixy

## INTRODUCTION

This is a port of the MATLAB/Octave programming language to Parrot. See the ROADMAP file for more information on the status of this project, and what else needs to be done.

## ABOUT

Primary goals are:

- Create a working compiler that understands the majority of the MATLAB/Octave programming language.

## IMPLEMENTATION

This project is broken into three primary components:

- The first is the parser, located in the `src/parser/` directory. The parser proper is composed of three source files, grammar.pg which is a Perl6Grammar file, and actions.pm which is the associated actions file written in NQP, and grammar-oper.pm which is the operator precidence parser. In addition, several helper functions used by the parser are located in `src/internals`.
- The second component is the library of builtin functions in the `src/builtins/` directory. These functions are, currently, written primarily in PIR. Function names prefixed with an underscore are "private" functions for use with the parser. Other functions should have names which are the same as names for regular MATLAB or Octave functions, since they will be available to the HLL. These are also separated into different namespaces depending on visibility and utility.
- A number of library functions are written in M, or mostly M with some inline PIR code in `toolbox/`.

## DEPENDENCIES

Matrixy depends on these dependencies:

### Parrot

To get a proper version of Parrot to build Matrixy, you will need to check out and build Parrot from source:

        svn co http://svn.parrot.org/parrot/trunk parrot
        cd parrot
        perl Configure.pl
        make && make test && make install-dev

### Parrot-Linear-Algebra

The linear algebra package for Parrot is available separately and provides functionality required by Matrixy. This includes matrix data types and matrix manipulation libraries

## BUILDING

Once all dependencies are in place, you can build Matrixy using this sequence of commands:

        perl Configure.pl
        nmake test

## TODO

        * Parser
        * Standard Builtins
        * Test against Octave Test Suite.

## BUGS

Lots!

## CONTACT

If you need to contact the Matrixy team, go to the project home page at:

www.github.com\Whiteknight\matrixy