diff --git a/README b/README index 316b25a..e3a299e 100644 --- a/README +++ b/README @@ -1,4 +1,86 @@ PEG.js: Parser Generator for JavaScript ======================================= +http://pegjs.majda.cz/ -Documentation is being written -- please be patient. +PEG.js is a parser generator for JavaScript based on the parsing expression +grammar [1] formalism. It is designed to be used either from your browser or +from the command line (using Rhino [2] JavaScript interpreter). + +Requirements +------------ +Both the parser generator and generated parsers should run well in IE8 and +recent versions of Firefox, Chrome, Safari and Opera, as well as Rhino +JavaScript engine. IE6 and IE7 are not supported. + + Note: IE7 might be supported sometime in the future, IE6 probably not. + +Usage +----- +To use PEG.js, you need to generate a parser from your grammar and then use the +generated parser in your project. + +Generating a Parser +~~~~~~~~~~~~~~~~~~~ +A parser can be generated either online [3] in your browser or using the command +line. Let's look at the second option. You need to follow these steps: + + 1. Install Java. This is necessary to run Rhino [2] (which is bundled with + PEG.js). + + 2. Generate the parser using bin/pegjs script on Unix or bin/pegjs.bat batch + file on Windows. + +For example, to generate a parser from an example grammar in the +examples/arithmetics.pegjs file on Unix, run: + + $ bin/pegjs arithmeticsParser examples/arithmetics.pegjs + +This command will create the parser in the examples/arithmetics.js file and will +make it available in the "arithmeticsParser" global variable. + +The bin/pegjs command has several options that influence the generator--to learn +more about them, use the --help option. + + Note: In the future, I will probably use Narwhal for the command-line version. + +Using the Generated Parser +~~~~~~~~~~~~~~~~~~~~~~~~~~ +Let's assume that you want to use the parser in a web page. To do this, you need +to: + + 1. Download the minified parser runtime [4] and include it into your page: + + + + 2. Include the generated parser into your page: + + + + + This creates a variable with the parser object in the global scope (you can + choose name of the variable when generating the parser). + + 3. Use the parser, i.e. call the parse method on the parser variable: + + + + The "parse" method of the generated parser will return either the result of + the parsing (dependent on the actions you specified in the grammar) or + throw PEG.Parser.SyntaxError exception if the input contains a syntax + error. The exception has properties "message", "line" and "column", which + contain details about the error. + +Grammar +------- +For detailed description of the grammar see the online documentation [5]. + +References +---------- +[1] http://en.wikipedia.org/wiki/Parsing_expression_grammar +[2] http://www.mozilla.org/rhino/ +[3] http://pegjs.majda.cz/online +[4] http://pegjs.majda.cz/download#minified-parser-runtime +[5] http://pegjs.majda.cz/documentation#grammar