diff --git a/.gitignore b/.gitignore
deleted file mode 100644
index 3f1af78..0000000
--- a/.gitignore
+++ /dev/null
@@ -1,7 +0,0 @@
-.DS_Store
-node_modules
-
-# Editor backup files
-*.bak
-*~
-web/content/assets/js/jison.js
\ No newline at end of file
diff --git a/.npmignore b/.npmignore
deleted file mode 100644
index bad00b1..0000000
--- a/.npmignore
+++ /dev/null
@@ -1,4 +0,0 @@
-src/
-web/
-examples/
-ports/
\ No newline at end of file
diff --git a/README.md b/README.md
index 56eb45f..098d31b 100644
--- a/README.md
+++ b/README.md
@@ -3,7 +3,7 @@ Jison
 * [issues](http://github.com/zaach/jison/issues)
 * [discuss](mailto:jison@librelist.com)
 
-[![build status](https://secure.travis-ci.org/zaach/jison.png)](http://travis-ci.org/zaach/jison)
+[![build status](https://travis-ci.org/zaach/jison.svg)](http://travis-ci.org/zaach/jison)
 
 An API for creating parsers in JavaScript
 -----------------------------------------
@@ -60,38 +60,39 @@ Usage from a CommonJS module
 
 You can generate parsers programatically from JavaScript as well. Assuming Jison is in your commonjs environment's load path:
 
-    // mygenerator.js
-    var Parser = require("jison").Parser;
-    
-    // a grammar in JSON
-    var grammar = {
-        "lex": {
-            "rules": [
-               ["\\s+", "/* skip whitespace */"],
-               ["[a-f0-9]+", "return 'HEX';"]
-            ]
-        },
-    
-        "bnf": {
-            "hex_strings" :[ "hex_strings HEX",
-                             "HEX" ]
-        }
-    };
-    
-    // `grammar` can also be a string that uses jison's grammar format
-    var parser = new Parser(grammar);
-    
-    // generate source, ready to be written to disk
-    var parserSource = parser.generate();
-    
-    // you can also use the parser directly from memory
-    
-    // returns true
-    parser.parse("adfe34bc e82a");
-    
-    // throws lexical error
-    parser.parse("adfe34bc zxg");
+```javascript
+// mygenerator.js
+var Parser = require("jison").Parser;
 
+// a grammar in JSON
+var grammar = {
+    "lex": {
+        "rules": [
+           ["\\s+", "/* skip whitespace */"],
+           ["[a-f0-9]+", "return 'HEX';"]
+        ]
+    },
+
+    "bnf": {
+        "hex_strings" :[ "hex_strings HEX",
+                         "HEX" ]
+    }
+};
+
+// `grammar` can also be a string that uses jison's grammar format
+var parser = new Parser(grammar);
+
+// generate source, ready to be written to disk
+var parserSource = parser.generate();
+
+// you can also use the parser directly from memory
+
+// returns true
+parser.parse("adfe34bc e82a");
+
+// throws lexical error
+parser.parse("adfe34bc zxg");
+```
 
 More Documentation
 ------------------
diff --git a/examples/README b/examples/README
deleted file mode 100644
index a31ac71..0000000
--- a/examples/README
+++ /dev/null
@@ -1,2 +0,0 @@
-Use Jison to generate parsers from an example, e.g.:
-    $ node ../lib/cli.js basic_lex.jison
diff --git a/examples/ansic.jison b/examples/ansic.jison
deleted file mode 100644
index c8eccd0..0000000
--- a/examples/ansic.jison
+++ /dev/null
@@ -1,418 +0,0 @@
-%token IDENTIFIER CONSTANT STRING_LITERAL SIZEOF
-%token PTR_OP INC_OP DEC_OP LEFT_OP RIGHT_OP LE_OP GE_OP EQ_OP NE_OP
-%token AND_OP OR_OP MUL_ASSIGN DIV_ASSIGN MOD_ASSIGN ADD_ASSIGN
-%token SUB_ASSIGN LEFT_ASSIGN RIGHT_ASSIGN AND_ASSIGN
-%token XOR_ASSIGN OR_ASSIGN TYPE_NAME
-
-%token TYPEDEF EXTERN STATIC AUTO REGISTER
-%token CHAR SHORT INT LONG SIGNED UNSIGNED FLOAT DOUBLE CONST VOLATILE VOID
-%token STRUCT UNION ENUM ELLIPSIS
-
-%token CASE DEFAULT IF ELSE SWITCH WHILE DO FOR GOTO CONTINUE BREAK RETURN
-
-%nonassoc IF_WITHOUT_ELSE
-%nonassoc ELSE
-
-%start translation_unit
-%%
-
-primary_expression
-	: IDENTIFIER
-	| CONSTANT
-	| STRING_LITERAL
-	| '(' expression ')'
-	;
-
-postfix_expression
-	: primary_expression
-	| postfix_expression '[' expression ']'
-	| postfix_expression '(' ')'
-	| postfix_expression '(' argument_expression_list ')'
-	| postfix_expression '.' IDENTIFIER
-	| postfix_expression PTR_OP IDENTIFIER
-	| postfix_expression INC_OP
-	| postfix_expression DEC_OP
-	;
-
-argument_expression_list
-	: assignment_expression
-	| argument_expression_list ',' assignment_expression
-	;
-
-unary_expression
-	: postfix_expression
-	| INC_OP unary_expression
-	| DEC_OP unary_expression
-	| unary_operator cast_expression
-	| SIZEOF unary_expression
-	| SIZEOF '(' type_name ')'
-	;
-
-unary_operator
-	: '&'
-	| '*'
-	| '+'
-	| '-'
-	| '~'
-	| '!'
-	;
-
-cast_expression
-	: unary_expression
-	| '(' type_name ')' cast_expression
-	;
-
-multiplicative_expression
-	: cast_expression
-	| multiplicative_expression '*' cast_expression
-	| multiplicative_expression '/' cast_expression
-	| multiplicative_expression '%' cast_expression
-	;
-
-additive_expression
-	: multiplicative_expression
-	| additive_expression '+' multiplicative_expression
-	| additive_expression '-' multiplicative_expression
-	;
-
-shift_expression
-	: additive_expression
-	| shift_expression LEFT_OP additive_expression
-	| shift_expression RIGHT_OP additive_expression
-	;
-
-relational_expression
-	: shift_expression
-	| relational_expression '<' shift_expression
-	| relational_expression '>' shift_expression
-	| relational_expression LE_OP shift_expression
-	| relational_expression GE_OP shift_expression
-	;
-
-equality_expression
-	: relational_expression
-	| equality_expression EQ_OP relational_expression
-	| equality_expression NE_OP relational_expression
-	;
-
-and_expression
-	: equality_expression
-	| and_expression '&' equality_expression
-	;
-
-exclusive_or_expression
-	: and_expression
-	| exclusive_or_expression '^' and_expression
-	;
-
-inclusive_or_expression
-	: exclusive_or_expression
-	| inclusive_or_expression '|' exclusive_or_expression
-	;
-
-logical_and_expression
-	: inclusive_or_expression
-	| logical_and_expression AND_OP inclusive_or_expression
-	;
-
-logical_or_expression
-	: logical_and_expression
-	| logical_or_expression OR_OP logical_and_expression
-	;
-
-conditional_expression
-	: logical_or_expression
-	| logical_or_expression '?' expression ':' conditional_expression
-	;
-
-assignment_expression
-	: conditional_expression
-	| unary_expression assignment_operator assignment_expression
-	;
-
-assignment_operator
-	: '='
-	| MUL_ASSIGN
-	| DIV_ASSIGN
-	| MOD_ASSIGN
-	| ADD_ASSIGN
-	| SUB_ASSIGN
-	| LEFT_ASSIGN
-	| RIGHT_ASSIGN
-	| AND_ASSIGN
-	| XOR_ASSIGN
-	| OR_ASSIGN
-	;
-
-expression
-	: assignment_expression
-	| expression ',' assignment_expression
-	;
-
-constant_expression
-	: conditional_expression
-	;
-
-declaration
-	: declaration_specifiers ';'
-	| declaration_specifiers init_declarator_list ';'
-	;
-
-declaration_specifiers
-	: storage_class_specifier
-	| storage_class_specifier declaration_specifiers
-	| type_specifier
-	| type_specifier declaration_specifiers
-	| type_qualifier
-	| type_qualifier declaration_specifiers
-	;
-
-init_declarator_list
-	: init_declarator
-	| init_declarator_list ',' init_declarator
-	;
-
-init_declarator
-	: declarator
-	| declarator '=' initializer
-	;
-
-storage_class_specifier
-	: TYPEDEF
-	| EXTERN
-	| STATIC
-	| AUTO
-	| REGISTER
-	;
-
-type_specifier
-	: VOID
-	| CHAR
-	| SHORT
-	| INT
-	| LONG
-	| FLOAT
-	| DOUBLE
-	| SIGNED
-	| UNSIGNED
-	| struct_or_union_specifier
-	| enum_specifier
-	| TYPE_NAME
-	;
-
-struct_or_union_specifier
-	: struct_or_union IDENTIFIER '{' struct_declaration_list '}'
-	| struct_or_union '{' struct_declaration_list '}'
-	| struct_or_union IDENTIFIER
-	;
-
-struct_or_union
-	: STRUCT
-	| UNION
-	;
-
-struct_declaration_list
-	: struct_declaration
-	| struct_declaration_list struct_declaration
-	;
-
-struct_declaration
-	: specifier_qualifier_list struct_declarator_list ';'
-	;
-
-specifier_qualifier_list
-	: type_specifier specifier_qualifier_list
-	| type_specifier
-	| type_qualifier specifier_qualifier_list
-	| type_qualifier
-	;
-
-struct_declarator_list
-	: struct_declarator
-	| struct_declarator_list ',' struct_declarator
-	;
-
-struct_declarator
-	: declarator
-	| ':' constant_expression
-	| declarator ':' constant_expression
-	;
-
-enum_specifier
-	: ENUM '{' enumerator_list '}'
-	| ENUM IDENTIFIER '{' enumerator_list '}'
-	| ENUM IDENTIFIER
-	;
-
-enumerator_list
-	: enumerator
-	| enumerator_list ',' enumerator
-	;
-
-enumerator
-	: IDENTIFIER
-	| IDENTIFIER '=' constant_expression
-	;
-
-type_qualifier
-	: CONST
-	| VOLATILE
-	;
-
-declarator
-	: pointer direct_declarator
-	| direct_declarator
-	;
-
-direct_declarator
-	: IDENTIFIER
-	| '(' declarator ')'
-	| direct_declarator '[' constant_expression ']'
-	| direct_declarator '[' ']'
-	| direct_declarator '(' parameter_type_list ')'
-	| direct_declarator '(' identifier_list ')'
-	| direct_declarator '(' ')'
-	;
-
-pointer
-	: '*'
-	| '*' type_qualifier_list
-	| '*' pointer
-	| '*' type_qualifier_list pointer
-	;
-
-type_qualifier_list
-	: type_qualifier
-	| type_qualifier_list type_qualifier
-	;
-
-
-parameter_type_list
-	: parameter_list
-	| parameter_list ',' ELLIPSIS
-	;
-
-parameter_list
-	: parameter_declaration
-	| parameter_list ',' parameter_declaration
-	;
-
-parameter_declaration
-	: declaration_specifiers declarator
-	| declaration_specifiers abstract_declarator
-	| declaration_specifiers
-	;
-
-identifier_list
-	: IDENTIFIER
-	| identifier_list ',' IDENTIFIER
-	;
-
-type_name
-	: specifier_qualifier_list
-	| specifier_qualifier_list abstract_declarator
-	;
-
-abstract_declarator
-	: pointer
-	| direct_abstract_declarator
-	| pointer direct_abstract_declarator
-	;
-
-direct_abstract_declarator
-	: '(' abstract_declarator ')'
-	| '[' ']'
-	| '[' constant_expression ']'
-	| direct_abstract_declarator '[' ']'
-	| direct_abstract_declarator '[' constant_expression ']'
-	| '(' ')'
-	| '(' parameter_type_list ')'
-	| direct_abstract_declarator '(' ')'
-	| direct_abstract_declarator '(' parameter_type_list ')'
-	;
-
-initializer
-	: assignment_expression
-	| '{' initializer_list '}'
-	| '{' initializer_list ',' '}'
-	;
-
-initializer_list
-	: initializer
-	| initializer_list ',' initializer
-	;
-
-statement
-	: labeled_statement
-	| compound_statement
-	| expression_statement
-	| selection_statement
-	| iteration_statement
-	| jump_statement
-	;
-
-labeled_statement
-	: IDENTIFIER ':' statement
-	| CASE constant_expression ':' statement
-	| DEFAULT ':' statement
-	;
-
-compound_statement
-	: '{' '}'
-	| '{' statement_list '}'
-	| '{' declaration_list '}'
-	| '{' declaration_list statement_list '}'
-	;
-
-declaration_list
-	: declaration
-	| declaration_list declaration
-	;
-
-statement_list
-	: statement
-	| statement_list statement
-	;
-
-expression_statement
-	: ';'
-	| expression ';'
-	;
-
-selection_statement
-	: IF '(' expression ')' statement %prec IF_WITHOUT_ELSE
-	| IF '(' expression ')' statement ELSE statement
-	| SWITCH '(' expression ')' statement
-	;
-
-iteration_statement
-	: WHILE '(' expression ')' statement
-	| DO statement WHILE '(' expression ')' ';'
-	| FOR '(' expression_statement expression_statement ')' statement
-	| FOR '(' expression_statement expression_statement expression ')' statement
-	;
-
-jump_statement
-	: GOTO IDENTIFIER ';'
-	| CONTINUE ';'
-	| BREAK ';'
-	| RETURN ';'
-	| RETURN expression ';'
-	;
-
-translation_unit
-	: external_declaration
-	| translation_unit external_declaration
-	;
-
-external_declaration
-	: function_definition
-	| declaration
-	;
-
-function_definition
-	: declaration_specifiers declarator declaration_list compound_statement
-	| declaration_specifiers declarator compound_statement
-	| declarator declaration_list compound_statement
-	| declarator compound_statement
-	;
diff --git a/examples/basic.jison b/examples/basic.jison
deleted file mode 100644
index c23c801..0000000
--- a/examples/basic.jison
+++ /dev/null
@@ -1,11 +0,0 @@
-%%
-
-E
-    : E PLUS T
-    | T
-    ;
-
-T
-    : ZERO
-    ;
-
diff --git a/examples/basic2.jison b/examples/basic2.jison
deleted file mode 100644
index f47e179..0000000
--- a/examples/basic2.jison
+++ /dev/null
@@ -1,10 +0,0 @@
-
-/* description: Basic grammar that contains a nullable A nonterminal. */
-
-%%
-
-A
-    : A x
-    | 
-    ;
-
diff --git a/examples/basic2_lex.jison b/examples/basic2_lex.jison
deleted file mode 100644
index acb0c63..0000000
--- a/examples/basic2_lex.jison
+++ /dev/null
@@ -1,18 +0,0 @@
-
-/* description: Basic grammar that contains a nullable A nonterminal. */
-
-%lex
-%%
-
-\s+         {/* skip whitespace */}
-"x"         {return 'x';}
-
-/lex
-
-%%
-
-A
-    : A x
-    | 
-    ;
-
diff --git a/examples/basic_lex.jison b/examples/basic_lex.jison
deleted file mode 100644
index ed3d310..0000000
--- a/examples/basic_lex.jison
+++ /dev/null
@@ -1,20 +0,0 @@
-%lex
-
-%%
-\s+         {/* skip whitespace */}
-[0-9]+         {return 'NAT';}
-"+"         {return '+';}
-
-/lex
-
-%%
-
-E
-    : E '+' T
-    | T
-    ;
-
-T
-    : NAT
-    ;
-
diff --git a/examples/calculator.jison b/examples/calculator.jison
deleted file mode 100644
index 2ad240f..0000000
--- a/examples/calculator.jison
+++ /dev/null
@@ -1,73 +0,0 @@
-
-/* description: Parses and executes mathematical expressions. */
-
-/* lexical grammar */
-%lex
-%%
-
-\s+                   /* skip whitespace */
-[0-9]+("."[0-9]+)?\b  return 'NUMBER'
-"*"                   return '*'
-"/"                   return '/'
-"-"                   return '-'
-"+"                   return '+'
-"^"                   return '^'
-"!"                   return '!'
-"%"                   return '%'
-"("                   return '('
-")"                   return ')'
-"PI"                  return 'PI'
-"E"                   return 'E'
-<<EOF>>               return 'EOF'
-.                     return 'INVALID'
-
-/lex
-
-/* operator associations and precedence */
-
-%left '+' '-'
-%left '*' '/'
-%left '^'
-%right '!'
-%right '%'
-%left UMINUS
-
-%start expressions
-
-%% /* language grammar */
-
-expressions
-    : e EOF
-        { typeof console !== 'undefined' ? console.log($1) : print($1);
-          return $1; }
-    ;
-
-e
-    : e '+' e
-        {$$ = $1+$3;}
-    | e '-' e
-        {$$ = $1-$3;}
-    | e '*' e
-        {$$ = $1*$3;}
-    | e '/' e
-        {$$ = $1/$3;}
-    | e '^' e
-        {$$ = Math.pow($1, $3);}
-    | e '!'
-        {{
-          $$ = (function fact (n) { return n==0 ? 1 : fact(n-1) * n })($1);
-        }}
-    | e '%'
-        {$$ = $1/100;}
-    | '-' e %prec UMINUS
-        {$$ = -$2;}
-    | '(' e ')'
-        {$$ = $2;}
-    | NUMBER
-        {$$ = Number(yytext);}
-    | E
-        {$$ = Math.E;}
-    | PI
-        {$$ = Math.PI;}
-    ;
-
diff --git a/examples/calculator.json b/examples/calculator.json
deleted file mode 100644
index bc09aa7..0000000
--- a/examples/calculator.json
+++ /dev/null
@@ -1,51 +0,0 @@
-{
-   "comment": "JSON Math Parser",
-   // JavaScript comments also work
-
-   "lex": {
-      "rules": [
-         ["\\s+",                    "/* skip whitespace */"],
-         ["[0-9]+(?:\\.[0-9]+)?\\b", "return 'NUMBER'"],
-         ["\\*",                     "return '*'"],
-         ["\\/",                     "return '/'"],
-         ["-",                       "return '-'"],
-         ["\\+",                     "return '+'"],
-         ["\\^",                     "return '^'"],
-         ["!",                       "return '!'"],
-         ["%",                       "return '%'"],
-         ["\\(",                     "return '('"],
-         ["\\)",                     "return ')'"],
-         ["PI\\b",                   "return 'PI'"],
-         ["E\\b",                    "return 'E'"],
-         ["$",                       "return 'EOF'"]
-      ]
-   },
-
-   "operators": [
-      ["left", "+", "-"],
-      ["left", "*", "/"],
-      ["left", "^"],
-      ["right", "!"],
-      ["right", "%"],
-      ["left", "UMINUS"]
-   ],
-
-   "bnf": {
-      "expressions": [["e EOF",   "return $1"]],
-
-      "e" :[
-         ["e + e",  "$$ = $1+$3"],
-         ["e - e",  "$$ = $1-$3"],
-         ["e * e",  "$$ = $1*$3"],
-         ["e / e",  "$$ = $1/$3"],
-         ["e ^ e",  "$$ = Math.pow($1, $3)"],
-         ["e !",    "$$ = (function(n) {if(n==0) return 1; return arguments.callee(n-1) * n})($1)"],
-         ["e %",    "$$ = $1/100"],
-         ["- e",    "$$ = -$2", {"prec": "UMINUS"}],
-         ["( e )",  "$$ = $2"],
-         ["NUMBER", "$$ = Number(yytext)"],
-         ["E",      "$$ = Math.E"],
-         ["PI",     "$$ = Math.PI"]
-      ]
-   }
-}
diff --git a/examples/classy.jison b/examples/classy.jison
deleted file mode 100644
index 295bfe6..0000000
--- a/examples/classy.jison
+++ /dev/null
@@ -1,84 +0,0 @@
-
-/* description: ClassyLang grammar. Very classy. */
-/* 
-  To build parser:
-
-    $ ./bin/jison examples/classy.jison examples/classy.jisonlex 
-
-*/
-
-
-/* author: Zach Carter */
-
-%right ASSIGN
-%left OR
-%nonassoc EQUALITY GREATER
-%left PLUS MINUS
-%left TIMES
-%right NOT
-%left DOT
-
-%%
-
-pgm
-    : cdl MAIN LBRACE vdl el RBRACE ENDOFFILE
-    ;
-
-cdl
-    : c cdl
-    | 
-    ;
-
-c
-    : CLASS id EXTENDS id LBRACE vdl mdl RBRACE
-    ;
-
-vdl
-    : VAR t id SEMICOLON vdl
-    | 
-    ;
-
-mdl
-    : t id LPAREN t id RPAREN LBRACE vdl el RBRACE mdl
-    | 
-    ;
-
-t
-    : NATTYPE
-    | id
-    ;
-
-id
-    : ID
-    ;
-
-el
-    : e SEMICOLON el
-    | e SEMICOLON
-    ;
-
-e
-    : NATLITERAL
-    | NUL
-    | id
-    | NEW id
-    | THIS
-    | IF LPAREN e RPAREN LBRACE el RBRACE ELSE LBRACE el RBRACE
-    | FOR LPAREN e SEMICOLON e SEMICOLON e RPAREN LBRACE el RBRACE
-    | READNAT LPAREN RPAREN
-    | PRINTNAT LPAREN e RPAREN
-    | e PLUS e
-    | e MINUS e
-    | e TIMES e
-    | e EQUALITY e
-    | e GREATER e
-    | NOT e
-    | e OR e
-    | e DOT id
-    | id ASSIGN e
-    | e DOT id ASSIGN e
-    | id LPAREN e RPAREN
-    | e DOT id LPAREN e RPAREN
-    | LPAREN e RPAREN
-    ;
-
diff --git a/examples/classy.jisonlex b/examples/classy.jisonlex
deleted file mode 100644
index e0e7edf..0000000
--- a/examples/classy.jisonlex
+++ /dev/null
@@ -1,39 +0,0 @@
-digit                       [0-9]
-id                          [a-zA-Z][a-zA-Z0-9]*
-
-%%
-"//".*                      /* ignore comment */
-"main"                      return 'MAIN';
-"class"                     return 'CLASS';
-"extends"                   return 'EXTENDS';
-"nat"                       return 'NATTYPE';
-"if"                        return 'IF';
-"else"                      return 'ELSE';
-"for"                       return 'FOR';
-"printNat"                  return 'PRINTNAT';
-"readNat"                   return 'READNAT';
-"this"                      return 'THIS';
-"new"                       return 'NEW';
-"var"                       return 'VAR';
-"null"                      return 'NUL';
-{digit}+                    return 'NATLITERAL';
-{id}                        return 'ID';
-"=="                        return 'EQUALITY';
-"="                         return 'ASSIGN';
-"+"                         return 'PLUS';
-"-"                         return 'MINUS';
-"*"                         return 'TIMES';
-">"                         return 'GREATER';
-"||"                        return 'OR';
-"!"                         return 'NOT';
-"."                         return 'DOT';
-"{"                         return 'LBRACE';
-"}"                         return 'RBRACE';
-"("                         return 'LPAREN';
-")"                         return 'RPAREN';
-";"                         return 'SEMICOLON';
-\s+                         /* skip whitespace */
-"."                         throw 'Illegal character';
-<<EOF>>                     return 'ENDOFFILE';
-
-
diff --git a/examples/classy_ast.jison b/examples/classy_ast.jison
deleted file mode 100644
index eab4239..0000000
--- a/examples/classy_ast.jison
+++ /dev/null
@@ -1,124 +0,0 @@
-/* description: ClassyLang grammar with AST-building actions. Very classy. */
-/* 
-  To build parser:
-
-    $ ./bin/jison examples/classy_ast.jison examples/classy.jisonlex 
-
-*/
-
-/* author: Zach Carter */
-
-%{
-    function prependChild(node, child){
-      node.splice(2,0,child); 
-      return node;
-    }
-%}
-
-%right ASSIGN
-%left OR
-%nonassoc EQUALITY GREATER
-%left PLUS MINUS
-%left TIMES
-%right NOT
-%left DOT
-
-%%
-
-pgm
-    : cdl MAIN LBRACE vdl el RBRACE ENDOFFILE
-        {{$$ = ['PROGRAM',{},$1,$4,$5]; return $$;}}
-    ;
-
-cdl
-    : c cdl
-        {$$ = prependChild($2, $1);}
-    | 
-        {{$$ = ['CLASS_DECL_LIST',{}];}}
-    ;
-
-c
-    : CLASS id EXTENDS id LBRACE vdl mdl RBRACE
-        {{$$ = ['CLASS_DECL',{},$2,$4,$6,$7];}}
-    ;
-
-vdl
-    : VAR t id SEMICOLON vdl
-        {{$$ = prependChild($5, ['VAR_DECL',{},$2,$3]);}}
-    | 
-        {{$$ = ['VAR_DECL_LIST',{}];}}
-    ;
-
-mdl
-    : t id LPAREN t id RPAREN LBRACE vdl el RBRACE mdl
-        {{$$ = prependChild($11, ['METHOD_DECL',{},$1,$2,$4,$5,$8,$9]);}}
-    | 
-        {{$$ = ['METHOD_DECL_LIST',{}];}}
-    ;
-
-t
-    : NATTYPE
-        {{$$ = ['NAT_TYPE',{}];}}
-    | id
-        {$$ = $1}
-    ;
-
-id
-    : ID
-        {{$$ = ['AST_ID',{val:yytext}]}}
-    ;
-
-el
-    : e SEMICOLON el
-        {$$ = prependChild($3, $1);}
-    | e SEMICOLON
-        {{$$ = ['EXPR_LIST',{},$1];}}
-    ;
-
-e
-    : NATLITERAL
-        {{$$ = ['NAT_LITERAL_EXPR',{val:parseInt(yytext)}];}}
-    | NUL
-        {{$$ = ['NULL_EXPR',{}];}}
-    | id
-        {{$$ = ['ID_EXPR',{},$1];}}
-    | NEW id
-        {{$$ = ['NEW_EXPR',{},$2];}}
-    | THIS
-        {{$$ = ['THIS_EXPR',{}];}}
-    | IF LPAREN e RPAREN LBRACE el RBRACE ELSE LBRACE el RBRACE
-        {{$$ = ['IF_THEN_ELSE_EXPR',{},$3,$6,$10];}}
-    | FOR LPAREN e SEMICOLON e SEMICOLON e RPAREN LBRACE el RBRACE
-        {{$$ = ['FOR_EXPR',{},$3,$5,$7,$10];}}
-    | READNAT LPAREN RPAREN
-        {{$$ = ['READ_EXPR',{}];}}
-    | PRINTNAT LPAREN e RPAREN
-        {{$$ = ['PRINT_EXPR',{},$3];}}
-    | e PLUS e
-        {{$$ = ['PLUS_EXPR',{},$1,$3];}}
-    | e MINUS e
-        {{$$ = ['MINUS_EXPR',{},$1,$3];}}
-    | e TIMES e
-        {{$$ = ['TIMES_EXPR',{},$1,$3];}}
-    | e EQUALITY e
-        {{$$ = ['EQUALITY_EXPR',{},$1,$3];}}
-    | e GREATER e
-        {{$$ = ['GREATER_THAN_EXPR',{},$1,$3];}}
-    | NOT e
-        {{$$ = ['NOT_EXPR',{},$2];}}
-    | e OR e
-        {{$$ = ['OR_EXPR',{},$1,$3];}}
-    | e DOT id
-        {{$$ = ['DOT_ID_EXPR',{},$1,$3];}}
-    | id ASSIGN e
-        {{$$ = ['ASSIGN_EXPR',{},$1,$3];}}
-    | e DOT id ASSIGN e
-        {{$$ = ['DOT_ASSIGN_EXPR',{},$1,$3,$5];}}
-    | id LPAREN e RPAREN
-        {{$$ = ['METHOD_CALL_EXPR',{},$1,$3];}}
-    | e DOT id LPAREN e RPAREN
-        {{$$ = ['DOT_METHOD_CALL_EXPR',{},$1,$3,$5];}}
-    | LPAREN e RPAREN
-        {$$ = $2;}
-    ;
-
diff --git a/examples/classy_test.src b/examples/classy_test.src
deleted file mode 100644
index cbbac5c..0000000
--- a/examples/classy_test.src
+++ /dev/null
@@ -1,7 +0,0 @@
-class Chris extends Person {
-}
-
-main {
-	var string cool;
-	printnat(cool);
-}
diff --git a/examples/dism.jison b/examples/dism.jison
deleted file mode 100644
index e6c9131..0000000
--- a/examples/dism.jison
+++ /dev/null
@@ -1,39 +0,0 @@
-
-/* author: Jay Ligatti */
-
-%%
-
-pgm
-    : instlist
-    ;
-
-instlist
-    : label COLON inst instlist
-    | inst instlist
-    | 
-    ;
-
-inst
-    : ADD intt intt intt
-    | SUB intt intt intt
-    | MUL intt intt intt
-    | MOV intt intt
-    | LOD intt intt intt
-    | STR intt intt intt
-    | JMP intt intt intt
-    | BEQ intt intt intt
-    | BLT intt intt intt
-    | RDN intt
-    | PTN intt
-    | HLT intt
-    ;
-
-label
-    : LABEL
-    ;
-
-intt
-    : INT
-    | label
-    ;
-
diff --git a/examples/dism_lr0.jison b/examples/dism_lr0.jison
deleted file mode 100644
index 74cbe5d..0000000
--- a/examples/dism_lr0.jison
+++ /dev/null
@@ -1,35 +0,0 @@
-
-/* author: Jay Ligatti */
-
-%%
-
-instlist
-    : instlist label COLON inst
-    | instlist inst
-    | inst
-    ;
-
-inst
-    : ADD intt intt intt
-    | SUB intt intt intt
-    | MUL intt intt intt
-    | MOV intt intt
-    | LOD intt intt intt
-    | STR intt intt intt
-    | JMP intt intt intt
-    | BEQ intt intt intt
-    | BLT intt intt intt
-    | RDN intt
-    | PTN intt
-    | HLT intt
-    ;
-
-label
-    : LABEL
-    ;
-
-intt
-    : INT
-    | label
-    ;
-
diff --git a/examples/inherited.y b/examples/inherited.y
deleted file mode 100644
index c40a5ae..0000000
--- a/examples/inherited.y
+++ /dev/null
@@ -1,35 +0,0 @@
-%lex
-%%
-\s+                           {}
-(global|local|integer|float)  { return yytext; }
-[a-zA-Z_]\w*                  { return 'id'; }
-.                             { return yytext; }
-/lex
-%%
-D
-  : C T L
-  ;
-
-C
-  : global
-  | local
-  ;
-
-T
-  : integer
-  | float
-  ;
-
-L
-  : L ',' id    {
-                  console.log("L -> L ',' id ("+yytext+")");
-                  console.log($id + ' is of type ' + $0);
-                  console.log($1 + ' is of class ' + $-1);
-                }
-  | id          {
-                  console.log("L -> id ("+yytext+")");
-                  console.log($id + ' is of type ' + $0);
-                  console.log($1 + ' is of class ' + $-1);
-                }
-  ;
-%%
diff --git a/examples/jscore.jison b/examples/jscore.jison
deleted file mode 100644
index 3d2eb5e..0000000
--- a/examples/jscore.jison
+++ /dev/null
@@ -1,599 +0,0 @@
-/* http://www.opensource.apple.com/source/JavaScriptCore/ */
-
-%start Program
-
-%nonassoc IF_WITHOUT_ELSE
-%nonassoc ELSE
-
-%%
-
-Literal
-    : NULLTOKEN
-    | TRUETOKEN
-    | FALSETOKEN
-    | NUMBER
-    | STRING
-    | '/'
-    | DIVEQUAL
-    ;
-
-Property
-    : IDENT ':' AssignmentExpr
-    | STRING ':' AssignmentExpr
-    | NUMBER ':' AssignmentExpr
-    | IDENT IDENT '(' ')' OPENBRACE FunctionBody CLOSEBRACE
-    | IDENT IDENT '(' FormalParameterList ')' OPENBRACE FunctionBody CLOSEBRACE
-    ;
-
-PropertyList
-    : Property
-    | PropertyList ',' Property
-    ;
-
-PrimaryExpr
-    : PrimaryExprNoBrace
-    | OPENBRACE CLOSEBRACE
-    | OPENBRACE PropertyList CLOSEBRACE
-    | OPENBRACE PropertyList ',' CLOSEBRACE
-    ;
-
-PrimaryExprNoBrace
-    : THISTOKEN
-    | Literal
-    | ArrayLiteral
-    | IDENT
-    | '(' Expr ')'
-    ;
-
-ArrayLiteral
-    : '[' ElisionOpt ']'
-    | '[' ElementList ']'
-    | '[' ElementList ',' ElisionOpt ']'
-    ;
-
-ElementList
-    : ElisionOpt AssignmentExpr
-    | ElementList ',' ElisionOpt AssignmentExpr
-    ;
-
-ElisionOpt
-    : 
-    | Elision
-    ;
-
-Elision
-    : ','
-    | Elision ','
-    ;
-
-MemberExpr
-    : PrimaryExpr
-    | FunctionExpr
-    | MemberExpr '[' Expr ']'
-    | MemberExpr '.' IDENT
-    | NEW MemberExpr Arguments
-    ;
-
-MemberExprNoBF
-    : PrimaryExprNoBrace
-    | MemberExprNoBF '[' Expr ']'
-    | MemberExprNoBF '.' IDENT
-    | NEW MemberExpr Arguments
-    ;
-
-NewExpr
-    : MemberExpr
-    | NEW NewExpr
-    ;
-
-NewExprNoBF
-    : MemberExprNoBF
-    | NEW NewExpr
-    ;
-
-CallExpr
-    : MemberExpr Arguments
-    | CallExpr Arguments
-    | CallExpr '[' Expr ']'
-    | CallExpr '.' IDENT
-    ;
-
-CallExprNoBF
-    : MemberExprNoBF Arguments
-    | CallExprNoBF Arguments
-    | CallExprNoBF '[' Expr ']'
-    | CallExprNoBF '.' IDENT
-    ;
-
-Arguments
-    : '(' ')'
-    | '(' ArgumentList ')'
-    ;
-
-ArgumentList
-    : AssignmentExpr
-    | ArgumentList ',' AssignmentExpr
-    ;
-
-LeftHandSideExpr
-    : NewExpr
-    | CallExpr
-    ;
-
-LeftHandSideExprNoBF
-    : NewExprNoBF
-    | CallExprNoBF
-    ;
-
-PostfixExpr
-    : LeftHandSideExpr
-    | LeftHandSideExpr PLUSPLUS
-    | LeftHandSideExpr MINUSMINUS
-    ;
-
-PostfixExprNoBF
-    : LeftHandSideExprNoBF
-    | LeftHandSideExprNoBF PLUSPLUS
-    | LeftHandSideExprNoBF MINUSMINUS
-    ;
-
-UnaryExprCommon
-    : DELETETOKEN UnaryExpr
-    | VOIDTOKEN UnaryExpr
-    | TYPEOF UnaryExpr
-    | PLUSPLUS UnaryExpr
-    | AUTOPLUSPLUS UnaryExpr
-    | MINUSMINUS UnaryExpr
-    | AUTOMINUSMINUS UnaryExpr
-    | '+' UnaryExpr
-    | '-' UnaryExpr
-    | '~' UnaryExpr
-    | '!' UnaryExpr
-    ;
-
-UnaryExpr
-    : PostfixExpr
-    | UnaryExprCommon
-    ;
-
-UnaryExprNoBF
-    : PostfixExprNoBF
-    | UnaryExprCommon
-    ;
-
-MultiplicativeExpr
-    : UnaryExpr
-    | MultiplicativeExpr '*' UnaryExpr
-    | MultiplicativeExpr '/' UnaryExpr
-    | MultiplicativeExpr '%' UnaryExpr
-    ;
-
-MultiplicativeExprNoBF
-    : UnaryExprNoBF
-    | MultiplicativeExprNoBF '*' UnaryExpr
-    | MultiplicativeExprNoBF '/' UnaryExpr
-    | MultiplicativeExprNoBF '%' UnaryExpr
-    ;
-
-AdditiveExpr
-    : MultiplicativeExpr
-    | AdditiveExpr '+' MultiplicativeExpr
-    | AdditiveExpr '-' MultiplicativeExpr
-    ;
-
-AdditiveExprNoBF
-    : MultiplicativeExprNoBF
-    | AdditiveExprNoBF '+' MultiplicativeExpr
-    | AdditiveExprNoBF '-' MultiplicativeExpr
-    ;
-
-ShiftExpr
-    : AdditiveExpr
-    | ShiftExpr LSHIFT AdditiveExpr
-    | ShiftExpr RSHIFT AdditiveExpr
-    | ShiftExpr URSHIFT AdditiveExpr
-    ;
-
-ShiftExprNoBF
-    : AdditiveExprNoBF
-    | ShiftExprNoBF LSHIFT AdditiveExpr
-    | ShiftExprNoBF RSHIFT AdditiveExpr
-    | ShiftExprNoBF URSHIFT AdditiveExpr
-    ;
-
-RelationalExpr
-    : ShiftExpr
-    | RelationalExpr '<' ShiftExpr
-    | RelationalExpr '>' ShiftExpr
-    | RelationalExpr LE ShiftExpr
-    | RelationalExpr GE ShiftExpr
-    | RelationalExpr INSTANCEOF ShiftExpr
-    | RelationalExpr INTOKEN ShiftExpr
-    ;
-
-RelationalExprNoIn
-    : ShiftExpr
-    | RelationalExprNoIn '<' ShiftExpr
-    | RelationalExprNoIn '>' ShiftExpr
-    | RelationalExprNoIn LE ShiftExpr
-    | RelationalExprNoIn GE ShiftExpr
-    | RelationalExprNoIn INSTANCEOF ShiftExpr
-    ;
-
-RelationalExprNoBF
-    : ShiftExprNoBF
-    | RelationalExprNoBF '<' ShiftExpr
-    | RelationalExprNoBF '>' ShiftExpr
-    | RelationalExprNoBF LE ShiftExpr
-    | RelationalExprNoBF GE ShiftExpr
-    | RelationalExprNoBF INSTANCEOF ShiftExpr
-    | RelationalExprNoBF INTOKEN ShiftExpr
-    ;
-
-EqualityExpr
-    : RelationalExpr
-    | EqualityExpr EQEQ RelationalExpr
-    | EqualityExpr NE RelationalExpr
-    | EqualityExpr STREQ RelationalExpr
-    | EqualityExpr STRNEQ RelationalExpr
-    ;
-
-EqualityExprNoIn
-    : RelationalExprNoIn
-    | EqualityExprNoIn EQEQ RelationalExprNoIn
-    | EqualityExprNoIn NE RelationalExprNoIn
-    | EqualityExprNoIn STREQ RelationalExprNoIn
-    | EqualityExprNoIn STRNEQ RelationalExprNoIn
-    ;
-
-EqualityExprNoBF
-    : RelationalExprNoBF
-    | EqualityExprNoBF EQEQ RelationalExpr
-    | EqualityExprNoBF NE RelationalExpr
-    | EqualityExprNoBF STREQ RelationalExpr
-    | EqualityExprNoBF STRNEQ RelationalExpr
-    ;
-
-BitwiseANDExpr
-    : EqualityExpr
-    | BitwiseANDExpr '&' EqualityExpr
-    ;
-
-BitwiseANDExprNoIn
-    : EqualityExprNoIn
-    | BitwiseANDExprNoIn '&' EqualityExprNoIn
-    ;
-
-BitwiseANDExprNoBF
-    : EqualityExprNoBF
-    | BitwiseANDExprNoBF '&' EqualityExpr
-    ;
-
-BitwiseXORExpr
-    : BitwiseANDExpr
-    | BitwiseXORExpr '^' BitwiseANDExpr
-    ;
-
-BitwiseXORExprNoIn
-    : BitwiseANDExprNoIn
-    | BitwiseXORExprNoIn '^' BitwiseANDExprNoIn
-    ;
-
-BitwiseXORExprNoBF
-    : BitwiseANDExprNoBF
-    | BitwiseXORExprNoBF '^' BitwiseANDExpr
-    ;
-
-BitwiseORExpr
-    : BitwiseXORExpr
-    | BitwiseORExpr '|' BitwiseXORExpr
-    ;
-
-BitwiseORExprNoIn
-    : BitwiseXORExprNoIn
-    | BitwiseORExprNoIn '|' BitwiseXORExprNoIn
-    ;
-
-BitwiseORExprNoBF
-    : BitwiseXORExprNoBF
-    | BitwiseORExprNoBF '|' BitwiseXORExpr
-    ;
-
-LogicalANDExpr
-    : BitwiseORExpr
-    | LogicalANDExpr AND BitwiseORExpr
-    ;
-
-LogicalANDExprNoIn
-    : BitwiseORExprNoIn
-    | LogicalANDExprNoIn AND BitwiseORExprNoIn
-    ;
-
-LogicalANDExprNoBF
-    : BitwiseORExprNoBF
-    | LogicalANDExprNoBF AND BitwiseORExpr
-    ;
-
-LogicalORExpr
-    : LogicalANDExpr
-    | LogicalORExpr OR LogicalANDExpr
-    ;
-
-LogicalORExprNoIn
-    : LogicalANDExprNoIn
-    | LogicalORExprNoIn OR LogicalANDExprNoIn
-    ;
-
-LogicalORExprNoBF
-    : LogicalANDExprNoBF
-    | LogicalORExprNoBF OR LogicalANDExpr
-    ;
-
-ConditionalExpr
-    : LogicalORExpr
-    | LogicalORExpr '?' AssignmentExpr ':' AssignmentExpr
-    ;
-
-ConditionalExprNoIn
-    : LogicalORExprNoIn
-    | LogicalORExprNoIn '?' AssignmentExprNoIn ':' AssignmentExprNoIn
-    ;
-
-ConditionalExprNoBF
-    : LogicalORExprNoBF
-    | LogicalORExprNoBF '?' AssignmentExpr ':' AssignmentExpr
-    ;
-
-AssignmentExpr
-    : ConditionalExpr
-    | LeftHandSideExpr AssignmentOperator AssignmentExpr
-    ;
-
-AssignmentExprNoIn
-    : ConditionalExprNoIn
-    | LeftHandSideExpr AssignmentOperator AssignmentExprNoIn
-    ;
-
-AssignmentExprNoBF
-    : ConditionalExprNoBF
-    | LeftHandSideExprNoBF AssignmentOperator AssignmentExpr
-    ;
-
-AssignmentOperator
-    : '='
-    | PLUSEQUAL
-    | MINUSEQUAL
-    | MULTEQUAL
-    | DIVEQUAL
-    | LSHIFTEQUAL
-    | RSHIFTEQUAL
-    | URSHIFTEQUAL
-    | ANDEQUAL
-    | XOREQUAL
-    | OREQUAL
-    | MODEQUAL
-    ;
-
-Expr
-    : AssignmentExpr
-    | Expr ',' AssignmentExpr
-    ;
-
-ExprNoIn
-    : AssignmentExprNoIn
-    | ExprNoIn ',' AssignmentExprNoIn
-    ;
-
-ExprNoBF
-    : AssignmentExprNoBF
-    | ExprNoBF ',' AssignmentExpr
-    ;
-
-Statement
-    : Block
-    | VariableStatement
-    | ConstStatement
-    | FunctionDeclaration
-    | EmptyStatement
-    | ExprStatement
-    | IfStatement
-    | IterationStatement
-    | ContinueStatement
-    | BreakStatement
-    | ReturnStatement
-    | WithStatement
-    | SwitchStatement
-    | LabelledStatement
-    | ThrowStatement
-    | TryStatement
-    | DebuggerStatement
-    ;
-
-Block
-    : OPENBRACE CLOSEBRACE
-    | OPENBRACE SourceElements CLOSEBRACE
-    ;
-
-VariableStatement
-    : VAR VariableDeclarationList ';'
-    | VAR VariableDeclarationList error
-    ;
-
-VariableDeclarationList
-    : IDENT
-    | IDENT Initializer
-    | VariableDeclarationList ',' IDENT
-    | VariableDeclarationList ',' IDENT Initializer
-    ;
-
-VariableDeclarationListNoIn
-    : IDENT
-    | IDENT InitializerNoIn
-    | VariableDeclarationListNoIn ',' IDENT
-    | VariableDeclarationListNoIn ',' IDENT InitializerNoIn
-    ;
-
-ConstStatement
-    : CONSTTOKEN ConstDeclarationList ';'
-    | CONSTTOKEN ConstDeclarationList error
-    ;
-
-ConstDeclarationList
-    : ConstDeclaration
-    | ConstDeclarationList ',' ConstDeclaration
-    ;
-
-ConstDeclaration
-    : IDENT
-    | IDENT Initializer
-    ;
-
-Initializer
-    : '=' AssignmentExpr
-    ;
-
-InitializerNoIn
-    : '=' AssignmentExprNoIn
-    ;
-
-EmptyStatement
-    : ';'
-    ;
-
-ExprStatement
-    : ExprNoBF ';'
-    | ExprNoBF error
-    ;
-
-IfStatement
-    : IF '(' Expr ')' Statement %prec IF_WITHOUT_ELSE
-    | IF '(' Expr ')' Statement ELSE Statement
-    ;
-
-IterationStatement
-    : DO Statement WHILE '(' Expr ')' ';'
-    | DO Statement WHILE '(' Expr ')' error
-    | WHILE '(' Expr ')' Statement
-    | FOR '(' ExprNoInOpt ';' ExprOpt ';' ExprOpt ')' Statement
-    | FOR '(' VAR VariableDeclarationListNoIn ';' ExprOpt ';' ExprOpt ')' Statement
-    | FOR '(' LeftHandSideExpr INTOKEN Expr ')' Statement
-    | FOR '(' VAR IDENT INTOKEN Expr ')' Statement
-    | FOR '(' VAR IDENT InitializerNoIn INTOKEN Expr ')' Statement
-    ;
-
-ExprOpt
-    : 
-    | Expr
-    ;
-
-ExprNoInOpt
-    : 
-    | ExprNoIn
-    ;
-
-ContinueStatement
-    : CONTINUE ';'
-    | CONTINUE error
-    | CONTINUE IDENT ';'
-    | CONTINUE IDENT error
-    ;
-
-BreakStatement
-    : BREAK ';'
-    | BREAK error
-    | BREAK IDENT ';'
-    | BREAK IDENT error
-    ;
-
-ReturnStatement
-    : RETURN ';'
-    | RETURN error
-    | RETURN Expr ';'
-    | RETURN Expr error
-    ;
-
-WithStatement
-    : WITH '(' Expr ')' Statement
-    ;
-
-SwitchStatement
-    : SWITCH '(' Expr ')' CaseBlock
-    ;
-
-CaseBlock
-    : OPENBRACE CaseClausesOpt CLOSEBRACE
-    | OPENBRACE CaseClausesOpt DefaultClause CaseClausesOpt CLOSEBRACE
-    ;
-
-CaseClausesOpt
-    : 
-    | CaseClauses
-    ;
-
-CaseClauses
-    : CaseClause
-    | CaseClauses CaseClause
-    ;
-
-CaseClause
-    : CASE Expr ':'
-    | CASE Expr ':' SourceElements
-    ;
-
-DefaultClause
-    : DEFAULT ':'
-    | DEFAULT ':' SourceElements
-    ;
-
-LabelledStatement
-    : IDENT ':' Statement
-    ;
-
-ThrowStatement
-    : THROW Expr ';'
-    | THROW Expr error
-    ;
-
-TryStatement
-    : TRY Block FINALLY Block
-    | TRY Block CATCH '(' IDENT ')' Block
-    | TRY Block CATCH '(' IDENT ')' Block FINALLY Block
-    ;
-
-DebuggerStatement
-    : DEBUGGER ';'
-    | DEBUGGER error
-    ;
-
-FunctionDeclaration
-    : FUNCTION IDENT '(' ')' OPENBRACE FunctionBody CLOSEBRACE
-    | FUNCTION IDENT '(' FormalParameterList ')' OPENBRACE FunctionBody CLOSEBRACE
-    ;
-
-FunctionExpr
-    : FUNCTION '(' ')' OPENBRACE FunctionBody CLOSEBRACE
-    | FUNCTION '(' FormalParameterList ')' OPENBRACE FunctionBody CLOSEBRACE
-    | FUNCTION IDENT '(' ')' OPENBRACE FunctionBody CLOSEBRACE
-    | FUNCTION IDENT '(' FormalParameterList ')' OPENBRACE FunctionBody CLOSEBRACE
-    ;
-
-FormalParameterList
-    : IDENT
-    | FormalParameterList ',' IDENT
-    ;
-
-FunctionBody
-    : 
-    | SourceElements
-    ;
-
-Program
-    : 
-    | SourceElements
-    ;
-
-SourceElements
-    : Statement
-    | SourceElements Statement
-    ;
-
diff --git a/examples/json.js b/examples/json.js
deleted file mode 100644
index a206db2..0000000
--- a/examples/json.js
+++ /dev/null
@@ -1,78 +0,0 @@
-var Generator = require("../lib/jison").Generator;
-
-exports.grammar = {
-    "comment": "ECMA-262 5th Edition, 15.12.1 The JSON Grammar.",
-    "author": "Zach Carter",
-
-    "lex": {
-        "macros": {
-            "digit": "[0-9]",
-            "esc": "\\\\",
-            "int": "-?(?:[0-9]|[1-9][0-9]+)",
-            "exp": "(?:[eE][-+]?[0-9]+)",
-            "frac": "(?:\\.[0-9]+)"
-        },
-        "rules": [
-            ["\\s+", "/* skip whitespace */"],
-            ["{int}{frac}?{exp}?\\b", "return 'NUMBER';"],
-            ["\"(?:{esc}[\"bfnrt/{esc}]|{esc}u[a-fA-F0-9]{4}|[^\"{esc}])*\"", "yytext = yytext.substr(1,yyleng-2); return 'STRING';"],
-            ["\\{", "return '{'"],
-            ["\\}", "return '}'"],
-            ["\\[", "return '['"],
-            ["\\]", "return ']'"],
-            [",", "return ','"],
-            [":", "return ':'"],
-            ["true\\b", "return 'TRUE'"],
-            ["false\\b", "return 'FALSE'"],
-            ["null\\b", "return 'NULL'"]
-        ]
-    },
-
-    "tokens": "STRING NUMBER { } [ ] , : TRUE FALSE NULL",
-    "start": "JSONText",
-
-    "bnf": {
-        "JSONString": [ "STRING" ],
-        
-        "JSONNullLiteral": [ "NULL" ],
-
-        "JSONNumber": [ "NUMBER" ],
-
-        "JSONBooleanLiteral": [ "TRUE", "FALSE" ],
-
-
-        "JSONText": [ "JSONValue" ],
-
-        "JSONValue": [ "JSONNullLiteral",
-                       "JSONBooleanLiteral",
-                       "JSONString",
-                       "JSONNumber",
-                       "JSONObject",
-                       "JSONArray" ],
-
-        "JSONObject": [ "{ }",
-                        "{ JSONMemberList }" ],
-
-        "JSONMember": [ "JSONString : JSONValue" ],
-
-        "JSONMemberList": [ "JSONMember",
-                              "JSONMemberList , JSONMember" ],
-
-        "JSONArray": [ "[ ]",
-                       "[ JSONElementList ]" ],
-
-        "JSONElementList": [ "JSONValue",
-                             "JSONElementList , JSONValue" ]
-    }
-};
-
-var options = {type: "slr", moduleType: "commonjs", moduleName: "jsoncheck"};
-
-exports.main = function main () {
-    var code = new Generator(exports.grammar, options).generate();
-    console.log(code);
-};
-
-if (require.main === module)
-    exports.main();
-
diff --git a/examples/json_ast.js b/examples/json_ast.js
deleted file mode 100644
index 8a817e1..0000000
--- a/examples/json_ast.js
+++ /dev/null
@@ -1,79 +0,0 @@
-var Generator = require("../lib/jison").Generator;
-
-exports.grammar = {
-    "comment": "ECMA-262 5th Edition, 15.12.1 The JSON Grammar. Parses JSON strings into objects.",
-    "author": "Zach Carter",
-
-    "lex": {
-        "macros": {
-            "digit": "[0-9]",
-            "esc": "\\\\",
-            "int": "-?(?:[0-9]|[1-9][0-9]+)",
-            "exp": "(?:[eE][-+]?[0-9]+)",
-            "frac": "(?:\\.[0-9]+)"
-        },
-        "rules": [
-            ["\\s+", "/* skip whitespace */"],
-            ["{int}{frac}?{exp}?\\b", "return 'NUMBER';"],
-            ["\"(?:{esc}[\"bfnrt/{esc}]|{esc}u[a-fA-F0-9]{4}|[^\"{esc}])*\"", "yytext = yytext.substr(1,yyleng-2); return 'STRING';"],
-            ["\\{", "return '{'"],
-            ["\\}", "return '}'"],
-            ["\\[", "return '['"],
-            ["\\]", "return ']'"],
-            [",", "return ','"],
-            [":", "return ':'"],
-            ["true\\b", "return 'TRUE'"],
-            ["false\\b", "return 'FALSE'"],
-            ["null\\b", "return 'NULL'"]
-        ]
-    },
-
-    "tokens": "STRING NUMBER { } [ ] , : TRUE FALSE NULL",
-    "start": "JSONText",
-
-    "bnf": {
-        "JSONString": [[ "STRING", "$$ = yytext;" ]],
-
-        "JSONNumber": [[ "NUMBER", "$$ = Number(yytext);" ]],
-
-        "JSONNullLiteral": [[ "NULL", "$$ = null;" ]],
-
-        "JSONBooleanLiteral": [[ "TRUE", "$$ = true;" ],
-                               [ "FALSE", "$$ = false;" ]],
-
-
-        "JSONText": [[ "JSONValue", "return $$ = $1;" ]],
-
-        "JSONValue": [[ "JSONNullLiteral",    "$$ = $1;" ],
-                      [ "JSONBooleanLiteral", "$$ = $1;" ],
-                      [ "JSONString",         "$$ = $1;" ],
-                      [ "JSONNumber",         "$$ = $1;" ],
-                      [ "JSONObject",         "$$ = $1;" ],
-                      [ "JSONArray",          "$$ = $1;" ]],
-
-        "JSONObject": [[ "{ }", "$$ = {};" ],
-                       [ "{ JSONMemberList }", "$$ = $2;" ]],
-
-        "JSONMember": [[ "JSONString : JSONValue", "$$ = [$1, $3];" ]],
-
-        "JSONMemberList": [[ "JSONMember", "$$ = {}; $$[$1[0]] = $1[1];" ],
-                           [ "JSONMemberList , JSONMember", "$$ = $1; $1[$3[0]] = $3[1];" ]],
-
-        "JSONArray": [[ "[ ]", "$$ = [];" ],
-                      [ "[ JSONElementList ]", "$$ = $2;" ]],
-
-        "JSONElementList": [[ "JSONValue", "$$ = [$1];" ],
-                            [ "JSONElementList , JSONValue", "$$ = $1; $1.push($3);" ]]
-    }
-};
-
-var options = {type: "slr", moduleType: "commonjs", moduleName: "jsonparse"};
-
-exports.main = function main (args) {
-    var code = new Generator(exports.grammar, options).generate();
-    console.log(code);
-};
-
-if (require.main === module)
-    exports.main();
-
diff --git a/examples/lambdacalc.jison b/examples/lambdacalc.jison
deleted file mode 100644
index f929c70..0000000
--- a/examples/lambdacalc.jison
+++ /dev/null
@@ -1,54 +0,0 @@
-/* Lambda calculus grammar by Zach Carter */
-
-%lex
-%%
-
-\s*\n\s*  {/* ignore */}
-"("       { return '('; }
-")"       { return ')'; }
-"^"|"λ"   { return 'LAMBDA'; }
-"."\s?    { return '.'; }
-[a-zA-Z]  { return 'VAR'; }
-\s+       { return 'SEP'; }
-<<EOF>>   { return 'EOF'; }
-/lex
-
-
-%right LAMBDA
-%left SEP
-
-%%
-
-file
-  : expr EOF
-    { return $expr; }
-  ;
-
-expr
-  : LAMBDA var_list '.' expr
-    %{
-      var temp = ["LambdaExpr", $var_list.shift(), $expr];
-      $var_list.forEach(function (v) {
-        temp = ["LambdaExpr", v, temp];
-      });
-      $$ = temp;
-    %}
-  | expr SEP expr
-    { $$ = ["ApplyExpr", $expr1, $expr2]; }
-  | var
-    { $$ = ["VarExpr", $var]; }
-  | '(' expr ')'
-    { $$ = $expr; }
-  ;
-
-var_list
-  : var_list var
-    { $$ = $var_list; $$.unshift($var); }
-  | var
-    { $$ = [$var]; }
-  ;
-
-var
-  : VAR
-    { $$ = yytext; }
-  ;
diff --git a/examples/nv_classy_ast.jison b/examples/nv_classy_ast.jison
deleted file mode 100644
index 057a816..0000000
--- a/examples/nv_classy_ast.jison
+++ /dev/null
@@ -1,126 +0,0 @@
-/* description: ClassyLang grammar with AST-building actions. Very classy. */
-/* 
-  To build parser:
-
-    $ ./bin/jison examples/classy_ast.jison examples/classy.jisonlex 
-
-*/
-
-/* author: Zach Carter */
-
-%{
-    function prependChild(node, child){
-      node.splice(2,0,child); 
-      return node;
-    }
-%}
-
-%ebnf
-
-%right ASSIGN
-%left OR
-%nonassoc EQUALITY GREATER
-%left PLUS MINUS
-%left TIMES
-%right NOT
-%left DOT
-
-%%
-
-pgm
-    : cdl MAIN LBRACE vdl el RBRACE ENDOFFILE
-        {{$$ = ['PROGRAM',{},$1,$4,$5]; console.log(JSON.stringify($$, null, 4)); return $$; }}
-    ;
-
-cdl
-    : c cdl
-        {$$ = prependChild($2, $1);}
-    | 
-        {{$$ = ['CLASS_DECL_LIST',{}];}}
-    ;
-
-c
-    : CLASS id[class_name] EXTENDS id[base_class] LBRACE vdl mdl RBRACE
-        {{$$ = ['CLASS_DECL',{},$class_name,$base_class,$vdl,$mdl];}}
-    ;
-
-vdl
-    : VAR t id SEMICOLON vdl
-        {{$$ = prependChild($5, ['VAR_DECL',{},$2,$3]);}}
-    | 
-        {{$$ = ['VAR_DECL_LIST',{}];}}
-    ;
-
-mdl
-    : t id LPAREN t id RPAREN LBRACE vdl el RBRACE mdl
-        {{$$ = prependChild($11, ['METHOD_DECL',{},$1,$2,$4,$5,$8,$9]);}}
-    | 
-        {{$$ = ['METHOD_DECL_LIST',{}];}}
-    ;
-
-t
-    : NATTYPE
-        {{$$ = ['NAT_TYPE',{}];}}
-    | id
-        {$$ = $1}
-    ;
-
-id
-    : ID
-        {{$$ = ['AST_ID',{val:yytext}]}}
-    ;
-
-el
-    : e SEMICOLON el
-        {$$ = prependChild($3, $1);}
-    | e SEMICOLON
-        {{$$ = ['EXPR_LIST',{},$1];}}
-    ;
-
-e
-    : NATLITERAL
-        {{$$ = ['NAT_LITERAL_EXPR',{val:parseInt(yytext)}];}}
-    | NUL
-        {{$$ = ['NULL_EXPR',{}];}}
-    | id
-        {{$$ = ['ID_EXPR',{},$1];}}
-    | NEW id
-        {{$$ = ['NEW_EXPR',{},$2];}}
-    | THIS
-        {{$$ = ['THIS_EXPR',{}];}}
-    | IF LPAREN e RPAREN LBRACE el RBRACE ELSE LBRACE el RBRACE
-        {{$$ = ['IF_THEN_ELSE_EXPR',{},$3,$6,$10];}}
-    | FOR LPAREN e SEMICOLON e SEMICOLON e RPAREN LBRACE el RBRACE
-        {{$$ = ['FOR_EXPR',{},$3,$5,$7,$10];}}
-    | READNAT LPAREN RPAREN
-        {{$$ = ['READ_EXPR',{}];}}
-    | PRINTNAT LPAREN e RPAREN
-        {{$$ = ['PRINT_EXPR',{},$3];}}
-    | e PLUS e
-        {{$$ = ['PLUS_EXPR',{},$1,$3];}}
-    | e MINUS e
-        {{$$ = ['MINUS_EXPR',{},$1,$3];}}
-    | e TIMES e
-        {{$$ = ['TIMES_EXPR',{},$1,$3];}}
-    | e EQUALITY e
-        {{$$ = ['EQUALITY_EXPR',{},$1,$3];}}
-    | e GREATER e
-        {{$$ = ['GREATER_THAN_EXPR',{},$1,$3];}}
-    | NOT e
-        {{$$ = ['NOT_EXPR',{},$2];}}
-    | e OR e
-        {{$$ = ['OR_EXPR',{},$1,$3];}}
-    | e DOT id
-        {{$$ = ['DOT_ID_EXPR',{},$1,$3];}}
-    | id ASSIGN e
-        {{$$ = ['ASSIGN_EXPR',{},$1,$3];}}
-    | e DOT id ASSIGN e
-        {{$$ = ['DOT_ASSIGN_EXPR',{},$1,$3,$5];}}
-    | id LPAREN e RPAREN
-        {{$$ = ['METHOD_CALL_EXPR',{},$1,$3];}}
-    | e DOT id LPAREN e RPAREN
-        {{$$ = ['DOT_METHOD_CALL_EXPR',{},$1,$3,$5];}}
-    | LPAREN e RPAREN
-        {$$ = $2;}
-    ;
-
diff --git a/examples/phraser.jison b/examples/phraser.jison
deleted file mode 100644
index 3c96e4d..0000000
--- a/examples/phraser.jison
+++ /dev/null
@@ -1,46 +0,0 @@
-/* description: Parses words out of html, ignoring html in the parse, but returning it in the end */
-
-/* lexical grammar */
-%lex
-%%
-"<"(.|\n)*?">"						return 'TAG'
-[a-zA-Z0-9]+						return 'WORD'
-(.|\n)								return 'CHAR'
-<<EOF>>								return 'EOF'
-
-
-/lex
-
-%start html
-
-%% /* language grammar */
-
-html
- : contents EOF
-     {return $1;}
- ;
-
-contents
- : content
-	{$$ = $1;}
- | contents content
-	{$$ =  $1 + $2;}
- ;
-
-content
-	: TAG
-		{
-			if (!yy.lexer.tagHandler) yy.lexer.tagHandler = function(tag) {return tag;};
-			$$ = yy.lexer.tagHandler(yytext);
-		}
-	| WORD
-		{
-			if (!yy.lexer.wordHandler) yy.lexer.wordHandler = function(word) {return word;};
-			$$ = yy.lexer.wordHandler(yytext);
-		}
-	| CHAR
-		{
-			if (!yy.lexer.charHandler) yy.lexer.charHandler = function(char) {return char;};
-			$$ = yy.lexer.charHandler(yytext);
-		}
- ;
diff --git a/examples/precedence.jison b/examples/precedence.jison
deleted file mode 100644
index ba1e488..0000000
--- a/examples/precedence.jison
+++ /dev/null
@@ -1,32 +0,0 @@
-
-/* description: Grammar showing precedence operators and semantic actions. */
-
-%lex
-%%
-\s+         {/* skip whitespace */}
-[0-9]+         {return 'NAT';}
-"+"         {return '+';}
-"*"         {return '*';}
-<<EOF>>         {return 'EOF';}
-
-/lex
-
-%left '+'
-%left '*'
-
-%%
-
-S
-    : e EOF
-        {return $1;}
-    ;
-
-e
-    : e '+' e
-        {$$ = [$1,'+', $3];}
-    | e '*' e
-        {$$ = [$1, '*', $3];}
-    | NAT
-        {$$ = parseInt(yytext);}
-    ;
-
diff --git a/examples/reduce_conflict.jison b/examples/reduce_conflict.jison
deleted file mode 100644
index baed52b..0000000
--- a/examples/reduce_conflict.jison
+++ /dev/null
@@ -1,23 +0,0 @@
-
-/* description: Produces a reduce-reduce conflict unless using LR(1). */
-
-
-%start S
-
-%%
-
-S
-    : a A c
-    | a B d
-    | b A d
-    | b B c
-    ;
-
-A
-    : z
-    ;
-
-B
-    : z
-    ;
-
diff --git a/examples/semwhitespace.jison b/examples/semwhitespace.jison
deleted file mode 100644
index 4878838..0000000
--- a/examples/semwhitespace.jison
+++ /dev/null
@@ -1,67 +0,0 @@
-/* Demonstrates use of semantic whitespace pseudo-tokens. */
-
-%start prog
-
-%ebnf
-
-%options token-stack
-
-%% /* language grammar */
-
-prog
-	: proglist ENDOFFILE
-	{ console.log("AST: %j", $proglist); }
-	;
-
-proglist
-	: proglist stmt
-	{ $proglist.push($stmt); $$ = $proglist; }
-	| stmt
-	{ $$ = [$stmt]; }
-	;
-
-if_stmt
-	: IF LPAREN expr RPAREN COLON stmt_block
-	{ $$ = [ "if", $expr, $stmt_block ]; }
-	| IF LPAREN expr RPAREN COLON stmt_block ELSE COLON stmt_block
-	{ $$ = [ "if", $expr, $6, $9 ]; }
-	;
-
-print_stmt
-	: PRINT STRING
-	{ $$ = ["print", $2]; }
-	;
-
-stmt
-	: if_stmt
-	| print_stmt
-	;
-
-stmt_list
-	: stmt
-	{ $$ = ["stmt_list", $stmt]; }
-	| stmt_list stmt
-	{ $stmt_list.push($stmt); $$ = $stmt_list; }
-	;
-
-stmt_block
-	: INDENT stmt_list DEDENT
-	{ $$ = $stmt_list; }
-	;
-
-atom
-	: ID
-	{ $$ = ["id", $1]; }
-	| NATLITERAL
-	{ $$ = ["natlit", $1]; }
-	| LPAREN expr RPAREN
-	{ $$ = ["expr", $2]; }
-	;
-
-expr
-	: atom
-	| expr PLUS atom
-	{ $expr.push(["plus", $atom]); $$ = $expr; }
-	| expr MINUS atom
-	{ $expr.push(["minus", $atom]); $$ = $expr; }
-	;
diff --git a/examples/semwhitespace_ex.src b/examples/semwhitespace_ex.src
deleted file mode 100644
index 4d70d0f..0000000
--- a/examples/semwhitespace_ex.src
+++ /dev/null
@@ -1,12 +0,0 @@
-if (a+b):
-	print "this line has trailing spaces"   
-	if (123-b):
-		print "this one does not"
-	else:
-	print "will error until indentation corrected"
-		print "correctly indented"
-	print "another line, a couple trailing tabs"		
-		print "unexpected indent"
-
-print "end of program"
-
diff --git a/examples/semwhitespace_lex.jison b/examples/semwhitespace_lex.jison
deleted file mode 100644
index 72526db..0000000
--- a/examples/semwhitespace_lex.jison
+++ /dev/null
@@ -1,55 +0,0 @@
-/* Demonstrates semantic whitespace pseudo-tokens, INDENT/DEDENT. */
-
-id			[a-zA-Z][a-zA-Z0-9]*
-spc			[\t \u00a0\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u200b\u2028\u2029\u3000]
-
-%s EXPR
-
-%%
-"if"				return 'IF';
-"else"				return 'ELSE';
-"print"				return 'PRINT';
-":"				return 'COLON';
-"("				this.begin('EXPR'); return 'LPAREN';
-")"				this.popState(); return 'RPAREN';
-\"[^\"]*\"|\'[^\']*\'		yytext = yytext.substr(1,yyleng-2); return 'STRING';
-"+"				return 'PLUS';
-"-"				return 'MINUS';
-{id}				return 'ID';
-\d+				return 'NATLITERAL';
-<<EOF>>				return "ENDOFFILE";
-<INITIAL>\s*<<EOF>>		%{
-					// remaining DEDENTs implied by EOF, regardless of tabs/spaces
-					var tokens = [];
-				
-					while (0 < _iemitstack[0]) {
-						this.popState();
-						tokens.unshift("DEDENT");
-						_iemitstack.shift();
-					}
-				    
-					if (tokens.length) return tokens;
-				%}
-[\n\r]+{spc}*/![^\n\r]		/* eat blank lines */
-<INITIAL>[\n\r]{spc}*		%{
-					var indentation = yytext.length - yytext.search(/\s/) - 1;
-					if (indentation > _iemitstack[0]) {
-						_iemitstack.unshift(indentation);
-						return 'INDENT';
-					}
-				
-					var tokens = [];
-				
-					while (indentation < _iemitstack[0]) {
-						this.popState();
-						tokens.unshift("DEDENT");
-						_iemitstack.shift();
-					}
-					if (tokens.length) return tokens;
-				%}
-{spc}+				/* ignore all other whitespace */
-
-%%
-/* initialize the pseudo-token stack with 0 indents */
-_iemitstack = [0];
-
diff --git a/examples/tikiwikiparser.jison b/examples/tikiwikiparser.jison
deleted file mode 100755
index 8d79e49..0000000
--- a/examples/tikiwikiparser.jison
+++ /dev/null
@@ -1,211 +0,0 @@
-%lex
-
-PLUGIN_ID   					[A-Z]+
-INLINE_PLUGIN_ID				[a-z]+
-SMILE							[a-z]+
-
-%s bold box center colortext italic header6 header5 header4 header3 header2 header1 link strikethrough table titlebar underscore wikilink
-
-%%
-
-"{"{INLINE_PLUGIN_ID}.*?"}"
-	%{
-		yytext = parserlib.inlinePlugin(yytext);
-		return 'INLINE_PLUGIN';
-	%}
-
-"{"{PLUGIN_ID}"(".*?")}"
-	%{
-		yy.pluginStack = parserlib.stackPlugin(yytext, yy.pluginStack);
-		
-		if (parserlib.size(yy.pluginStack) == 1) {
-			return 'PLUGIN_START';
-		} else {
-			return 'CONTENT';
-		}
-	%}
-
-"{"{PLUGIN_ID}"}"
-	%{
-		if (yy.pluginStack) {
-			if (
-				parserlib.size(yy.pluginStack) > 0 &&
-				parserlib.substring(yytext, 1, -1) == yy.pluginStack[parserlib.size(yy.pluginStack) - 1].name
-			) {
-				if (parserlib.size(yy.pluginStack) == 1) {
-					yytext = yy.pluginStack[parserlib.size(yy.pluginStack) - 1];
-					yy.pluginStack = parserlib.pop(yy.pluginStack);
-					return 'PLUGIN_END';
-				} else {
-					yy.pluginStack = parserlib.pop(yy.pluginStack);
-					return 'CONTENT';
-				}
-			}
-		}
-		return 'CONTENT';
-	%}
-
-("~np~")
-	%{
-		yy.npStack = parserlib.push(yy.npStack, true);
-		this.yy.npOn = true;
-		
-		return 'NP_START';
-	%}
-
-("~/np~")
-	%{
-		this.yy.npStack = parserlib.pop(yy.npStack);
-		if (parserlib.size(yy.npStack) < 1) yy.npOn = false;
-		return 'NP_END';
-	%}
-
-"---" 
-	%{
-		yytext = parserlib.hr();
-		return 'HORIZONTAL_BAR';
-	%}
-
-"(:"{SMILE}":)"
-	%{
-		yytext = parserlib.substring(yytext, 2, -2);
-		yytext = parserlib.smile(yytext);
-		return 'SMILE';
-	%}
-
-"[[".*?
-	%{
-		yytext = parserlib.substring(yytext, 2, -1);
-		return 'CONTENT';
-	%}
-
-<bold>[_][_]				%{ this.popState();				return parserlib.npState(this.yy.npOn, 'CONTENT', 'BOLD_END'); %}
-[_][_]						%{ this.begin('bold');			return parserlib.npState(this.yy.npOn, 'CONTENT', 'BOLD_START'); %}
-<box>[\^]					%{ this.popState();				return parserlib.npState(this.yy.npOn, 'CONTENT', 'BOX_END'); %}
-[\^]						%{ this.begin('box');			return parserlib.npState(this.yy.npOn, 'CONTENT', 'BOX_START'); %}
-<center>[:][:]				%{ this.popState();				return parserlib.npState(this.yy.npOn, 'CONTENT', 'CENTER_END'); %}
-[:][:]						%{ this.begin('center');		return parserlib.npState(this.yy.npOn, 'CONTENT', 'CENTER_START'); %}
-<colortext>[\~][\~]			%{ this.popState();				return parserlib.npState(this.yy.npOn, 'CONTENT', 'COLORTEXT_END'); %}
-[\~][\~][#]					%{ this.begin('colortext');		return parserlib.npState(this.yy.npOn, 'CONTENT', 'COLORTEXT_START'); %}
-<header6>[\n]				%{ this.popState();				return parserlib.npState(this.yy.npOn, 'CONTENT', 'HEADER6_END'); %}
-[\n]("!!!!!!")				%{ this.begin('header6');		return parserlib.npState(this.yy.npOn, 'CONTENT', 'HEADER6_START'); %}
-<header5>[\n]				%{ this.popState();				return parserlib.npState(this.yy.npOn, 'CONTENT', 'HEADER5_END'); %}
-[\n]("!!!!!")				%{ this.begin('header5');		return parserlib.npState(this.yy.npOn, 'CONTENT', 'HEADER5_START'); %}
-<header4>[\n]				%{ this.popState();				return parserlib.npState(this.yy.npOn, 'CONTENT', 'HEADER4_END'); %}
-[\n]("!!!!")				%{ this.begin('header4');		return parserlib.npState(this.yy.npOn, 'CONTENT', 'HEADER4_START'); %}
-<header3>[\n]				%{ this.popState();				return parserlib.npState(this.yy.npOn, 'CONTENT', 'HEADER3_END'); %}
-[\n]("!!!")					%{ this.begin('header3');		return parserlib.npState(this.yy.npOn, 'CONTENT', 'HEADER3_START'); %}
-<header2>[\n]				%{ this.popState();				return parserlib.npState(this.yy.npOn, 'CONTENT', 'HEADER2_END'); %}
-[\n]("!!")					%{ this.begin('header2');		return parserlib.npState(this.yy.npOn, 'CONTENT', 'HEADER2_START'); %}
-<header1>[\n]				%{ this.popState();				return parserlib.npState(this.yy.npOn, 'CONTENT', 'HEADER1_END'); %}
-[\n]("!")					%{ this.begin('header1');		return parserlib.npState(this.yy.npOn, 'CONTENT', 'HEADER1_START'); %}
-<italic>['][']				%{ this.popState();				return parserlib.npState(this.yy.npOn, 'CONTENT', 'ITALIC_END'); %}
-['][']						%{ this.begin('italic');		return parserlib.npState(this.yy.npOn, 'CONTENT', 'ITALIC_START'); %}
-<link>("]")					%{ this.popState();				return parserlib.npState(this.yy.npOn, 'CONTENT', 'LINK_END'); %}
-("[")						%{ this.begin('link');			return parserlib.npState(this.yy.npOn, 'CONTENT', 'LINK_START'); %}
-<strikethrough>[-][-]		%{ this.popState();				return parserlib.npState(this.yy.npOn, 'CONTENT', 'STRIKETHROUGH_END'); %}
-[-][-]						%{ this.begin('strikethrough');	return parserlib.npState(this.yy.npOn, 'CONTENT', 'STRIKETHROUGH_START'); %}
-<table>[|][|]				%{ this.popState();				return parserlib.npState(this.yy.npOn, 'CONTENT', 'TABLE_END'); %}
-[|][|]						%{ this.begin('table');			return parserlib.npState(this.yy.npOn, 'CONTENT', 'TABLE_START'); %}
-<titlebar>[=][-]			%{ this.popState();				return parserlib.npState(this.yy.npOn, 'CONTENT', 'TITLEBAR_END'); %}
-[-][=]						%{ this.begin('titlebar');		return parserlib.npState(this.yy.npOn, 'CONTENT', 'TITLEBAR_START'); %}
-<underscore>[=][=][=]		%{ this.popState();				return parserlib.npState(this.yy.npOn, 'CONTENT', 'UNDERSCORE_END'); %}
-[=][=][=]					%{ this.begin('underscore');	return parserlib.npState(this.yy.npOn, 'CONTENT', 'UNDERSCORE_START'); %}
-<wikilink>[)][)]			%{ this.popState();				return parserlib.npState(this.yy.npOn, 'CONTENT', 'WIKILINK_END'); %}
-[(][(]						%{ this.begin('wikilink');		return parserlib.npState(this.yy.npOn, 'CONTENT', 'WIKILINK_START'); %}
-
-"<"(.|\n)*?">"								return 'HTML'
-(.)											return 'CONTENT'
-(\n)
-	%{
-		if (parserlib.npState(this.yy.npOn, false, true) == true) {
-			yytext = parserlib.formatContent(yytext);
-		}
-		
-		return 'CONTENT';
-	%}
-
-<<EOF>>                         			return 'EOF'
-
-/lex
-
-%%
-
-wiki
- : wiki_contents EOF
-	{return $1;}
- ;
-
-wiki_contents
- :
- | contents
-	{$$ = $1;}
- | wiki_contents plugin
-	{$$ = parserlib.join($1, $2);}
- | wiki_contents plugin contents
-	{$$ = parserlib.join($1, $2, $3);}
- ;
-
-plugin
- : INLINE_PLUGIN
-	{$$ = parserlib.plugin($1);}
- | PLUGIN_START wiki_contents PLUGIN_END
-	{
-		$3.body = $2;
-		$$ = parserlib.plugin($3);
-	}
- ;
-
-contents
- : content
-	{$$ = $1;}
- | contents content
-	{$$ =  parserlib.join($1, $2);}
- ;
-
-content
- : CONTENT
-	{$$ = $1;}
- | HTML
-	{$$ = parserlib.html($1);}
- | HORIZONTAL_BAR
-	{$$ = $1;}
- | SMILE
-	{$$ = $1;}
- | BOLD_START wiki_contents BOLD_END
-	{$$ = parserlib.bold($2);}
- | BOX_START wiki_contents BOX_END
-	{$$ = parserlib.box($2);}
- | CENTER_START wiki_contents CENTER_END
-	{$$ = parserlib.center($2);}
- | COLORTEXT_START wiki_contents COLORTEXT_END
-	{$$ = parserlib.colortext($2);}
- | ITALIC_START wiki_contents ITALIC_END
-	{$$ = parserlib.italics($2);}
- | HEADER6_START wiki_contents HEADER6_END
-	{$$ = parserlib.header6($2);}
- | HEADER5_START wiki_contents HEADER5_END
-	{$$ = parserlib.header5($2);}
- | HEADER4_START wiki_contents HEADER4_END
-	{$$ = parserlib.header4($2);}
- | HEADER3_START wiki_contents HEADER3_END
-	{$$ = parserlib.header3($2);}
- | HEADER2_START wiki_contents HEADER2_END
-	{$$ = parserlib.header2($2);}
- | HEADER1_START wiki_contents HEADER1_END
-	{$$ = parserlib.header1($2);}
- | LINK_START wiki_contents LINK_END
-	{$$ = parserlib.link($2);}
- | NP_START wiki_contents NP_END
-	{$$ = $2;}
- | STRIKETHROUGH_START wiki_contents STRIKETHROUGH_END
-	{$$ = parserlib.strikethrough($2);}
- | TABLE_START wiki_contents TABLE_END
-	{$$ = parserlib.table($2);}
- | TITLEBAR_START wiki_contents TITLEBAR_END
-	{$$ = parserlib.titlebar($2);}
- | UNDERSCORE_START wiki_contents UNDERSCORE_END
-	{$$ = parserlib.underscore($2);}
- | WIKILINK_START wiki_contents WIKILINK_END
-	{$$ = parserlib.wikilink($2);}
- ;
diff --git a/lib/jison.js b/lib/jison.js
index b47f80a..d078056 100755
--- a/lib/jison.js
+++ b/lib/jison.js
@@ -1359,13 +1359,9 @@ function parseError (str, hash) {
     if (hash.recoverable) {
         this.trace(str);
     } else {
-        function _parseError (msg, hash) {
-            this.message = msg;
-            this.hash = hash;
-        }
-        _parseError.prototype = Error;
-
-        throw new _parseError(str, hash);
+        var error = new Error(str);
+        error.hash = hash;
+        throw error;
     }
 }
 
diff --git a/package.json b/package.json
index 69fe60a..4ca2e42 100644
--- a/package.json
+++ b/package.json
@@ -2,7 +2,7 @@
   "author": "Zach Carter <zach@carter.name> (http://zaa.ch)",
   "name": "jison",
   "description": "A parser generator with Bison's API",
-  "version": "0.4.17",
+  "version": "0.4.18",
   "license": "MIT",
   "keywords": [
     "jison",