OCamlRuby / README

(**********************************************)
(*                min_ruby                    *)
(**********************************************)


BUILD
=====

	$ ./build.sh


USAGE
=====

	$ ./minruby sample/test.rb


SYNTAX
======
	<program> ::= <expr>
	
	<expr> ::= <lterm>*
	<lterm> ::= <rterm> ( [ "&&" | "||" ] <rterm> )*

	<rterm> ::= <aterm> ( [ "==" | "<=" | .. | ">" ] <aterm> )*

	<aterm> ::= <mterm> ( [ "+" | "-" ] <mterm> )*

	<mterm> ::= <factor> ( ["*" | "/" ] <factor> )*

	<factor> ::= <factor1> "." <ident> "(" <expr> "," .. "," <expr> ")"
		   | <factor1>

	<factor1> ::= <ident> "=" <lterm>
		    | <ident> "(" <expr> "," .. "," <expr> ")"
		    | <field>
		    | "(" <expr> ")"
		    | "if" <expr> "then" <expr> "else" <expr> "end"
		    | <literal>
		 
	<field> ::= "def" <ident> "(" <ident> "," .. "," <ident> ")" <expr> "end"
		  | "class" <ident>  <field> .. <field>  "end"

	<literal> ::= <string> | <int> | <bool> | <ident>
		  


IMPLEMENTED SYNTAX
==================

	- to define functions
	- to define classes
	- to call function
	- to reference fields of an object
	- to assign to variable
	- if expression
	- literal (integer, boolean, string)
	- +,-,*,/
	- =,<,<=,>=,>
	- &&,||


UN IMPLEMENTED
==============
	
	- array, regexp
	- block statement
	- instance variables
	- [0..100]
	- symbols
	- abbreviatable arguments
	- abbreviation for parenthesis of method
	- inheritance
	- modules



TODO
====
	- stream preprocess -> take '\n'	
	- print line for error message

	- stream -> lazy list
	- parser.ml: 'a parser :=  llist -> ('a*llist, errormsg) either
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.