148 Commits (44f541330e844ee6687ba26a8a833a551e28b3e3)
 

Author SHA1 Message Date
David Majda 41abb7ad92 AST refactoring 4/6: Rewrite compilation to not extend the AST nodes 15 years ago
David Majda 5885a34dde AST refactoring 3/6: Rewrite checks to not extend the AST nodes 15 years ago
David Majda c59516541f AST refactoring 2/6: Add |type| property to AST nodes 15 years ago
David Majda 4e99a2bda7 AST refactoring 1/6: Make properties of AST nodes public
Removed undescore prefix of the properties and deleted getters.
15 years ago
David Majda 1c7c5bb5da Correct variable name: "choice" -> "optional". 15 years ago
David Majda 81eced29b2 Whitespace fixes 15 years ago
David Majda 08635b658b Make bin/pegjs work when called via a symlink
Similar issue exists on Windows too (they have symlinks since Vista), but I
could not find how to dereference symlinks from batch files, so I did not fix
it. I guess this does not matter much given how little the symlinks are used in
the Windows world.

Closes #1.
15 years ago
David Majda 6f2a188efc Checks refactoring
Changed two things:

  1. Checks are run in |PEG.Compiler.compileParser|, not in
     |PEG.buildParser|.

  2. Checks are extracted into separate functions.
15 years ago
David Majda 85930cbcfe Reorder AST stuff more consistently and sensibly
There is no functional change in this commit.
15 years ago
David Majda f28c52fde2 Rename |_element| to |_expression| in AST
All nodes which have one subexpression store it in the |_expression| property
now.
15 years ago
David Majda 7d1261c0fc Regenerate lib/metagrammar.js (forgot to do it in previous commit) 15 years ago
David Majda cc7f1d96eb Avoid |call| when calling actions with one parameter.
This speeds up the benchmark suite execution by 0.18%, which may just be a
measurement error. (Standrad statistic tests would tell more, but I don't want
to mess with them now.) The code is little bit nicer this way though.

Going further and avoiding |apply| seems to slow thigs down a bit, possibly
because multiple array accesses. I may try improved version without array
accesses (where Action passes the Sequence variable names to save the results
into) sometime later.

Detailed results (benchmark suite totals):

---------------------------------
 Test #     Before       After
---------------------------------
      1   29.08 kB/s   28.91 kB/s
      2   28.72 kB/s   28.75 kB/s
      3   28.78 kB/s   28.88 kB/s
      4   28.57 kB/s   28.90 kB/s
      5   28.84 kB/s   28.81 kB/s
---------------------------------
Average   28.80 kB/s   28.85 kB/s
---------------------------------

Mozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/533.2 (KHTML, like Gecko) Chrome/5.0.342.9 Safari/533.2
15 years ago
David Majda e3aa4df090 Changed action parameter processing to avoid the arguments object.
The action now computes the number of passed parameters during the code
generation and the parameters are declared directly as $1, $2, etc. in the
generated function.

This does not speed up the benchmark suite execution statistically significantly
on V8.

Detailed results (benchmark suite totals):

---------------------------------
 Test #     Before       After
---------------------------------
      1   28.68 kB/s   29.08 kB/s
      2   28.77 kB/s   28.72 kB/s
      3   28.89 kB/s   28.78 kB/s
      4   28.84 kB/s   28.57 kB/s
      5   28.86 kB/s   28.84 kB/s
---------------------------------
Average   28.81 kB/s   28.80 kB/s
---------------------------------

Mozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/533.2 (KHTML, like Gecko) Chrome/5.0.342.9 Safari/533.2
15 years ago
David Majda a1dcd245bb Action AST node no longer accepts functions as actions (only strings). 15 years ago
David Majda b2f230fad2 Added Optional AST node.
This does not speed up the benchmark suite execution statistically significantly
on V8.

Detailed results (benchmark suite totals):

---------------------------------
 Test #     Before       After
---------------------------------
      1   28.84 kB/s   28.75 kB/s
      2   28.76 kB/s   28.69 kB/s
      3   28.72 kB/s   28.69 kB/s
      4   28.84 kB/s   28.93 kB/s
      5   28.82 kB/s   28.70 kB/s
---------------------------------
Average   28.80 kB/s   28.75 kB/s
---------------------------------

Mozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/533.2 (KHTML, like Gecko)
Chrome/5.0.342.9 Safari/533.2
15 years ago
David Majda e5df8284b5 Added AndPredicate AST node.
This does not speed up the benchmark suite execution statistically significantly
on V8.

Detailed results (benchmark suite totals):

---------------------------------
 Test #     Before       After
---------------------------------
      1   28.72 kB/s   28.84 kB/s
      2   28.84 kB/s   28.76 kB/s
      3   28.83 kB/s   28.72 kB/s
      4   28.81 kB/s   28.84 kB/s
      5   28.76 kB/s   28.82 kB/s
---------------------------------
Average   28.79 kB/s   28.80 kB/s
---------------------------------

Mozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/533.2 (KHTML, like Gecko) Chrome/5.0.342.9 Safari/533.2
15 years ago
David Majda c3c1c79665 Added OneOrMore AST node.
This speeds up the benchmark suite execution by 1.08% on V8.

Detailed results (benchmark suite totals):

---------------------------------
 Test #     Before       After
---------------------------------
      1   28.38 kB/s   28.72 kB/s
      2   28.52 kB/s   28.84 kB/s
      3   28.41 kB/s   28.83 kB/s
      4   28.47 kB/s   28.81 kB/s
      5   28.64 kB/s   28.76 kB/s
---------------------------------
Average   28.48 kB/s   28.79 kB/s
---------------------------------

Mozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/533.2 (KHTML, like Gecko) Chrome/5.0.342.9 Safari/533.2
15 years ago
David Majda 8f59e21c8d Renamed an iterator variable: "key" -> "rule". 15 years ago
David Majda 3f5cb8850c Fixed PEG.buildParser's documentation and added a test. 15 years ago
David Majda 48da65d08e PEG.buildParser now accepts grammars only in string format. 15 years ago
David Majda 927f2d65c9 Exception tests also test exception messages. 15 years ago
David Majda b5ac4f0c4a Refactored helpers for testing of thrown exceptions. 15 years ago
David Majda de7536fd94 Added notes about ECMA-262, 5th ed. compatibility to the JSON example grammar. 15 years ago
David Majda a86e06a216 Add "Generated by ..." message to the generated parsers. 15 years ago
David Majda f37ca3fcdb Updated version to 0.4 15 years ago
David Majda 870144b439 Added CHANGELOG. 15 years ago
David Majda 7214de6dc8 README.md: Removed unnecessary "id" attribute from the example. 15 years ago
David Majda db4cc71f2c README.md: Fixed formatting. 15 years ago
David Majda 7822379c70 Rewrote the "Usage" section. 15 years ago
David Majda c9a5e283e7 README.md: Renamed the "Requirements" section to "Compatibility" and moved it at the end. 15 years ago
David Majda 3752fe211a README.md: Added the "Features" section. 15 years ago
David Majda b4bf906cf8 Modified README.md to indicate that IE6+ is supported. 15 years ago
David Majda 09291d6f0f Use "charAt(...)" instead of "[...]" for accessing string characters (compatibility with IE < 8). 15 years ago
David Majda 28459236aa Removed trailing comma that caused error in IE. 15 years ago
David Majda 4b51e6a6d3 Quote null characters in regexps, IE does not like them. 15 years ago
David Majda 7fc491412d Work around the fact that IE does not recognize "\v" in strings. 15 years ago
David Majda 6abda95a99 Made regexps generated for empty character classes ("[]" and "[^]") work in IE. 15 years ago
David Majda e79e869993 Compensate for IE's lack of Array.prototype.indexOf function. 15 years ago
David Majda 05381fedfa Fixed the inverted empty character class handling test. 15 years ago
David Majda e63f64a3d5 Make the generated parsers standalone (no runtime is required).
This and also speeds up the benchmark suite execution by 7.83 % on V8.

Detailed results (benchmark suite totals):

---------------------------------
 Test #     Before       After
---------------------------------
      1   26.17 kB/s   28.16 kB/s
      2   26.05 kB/s   28.16 kB/s
      3   25.99 kB/s   28.10 kB/s
      4   26.13 kB/s   28.11 kB/s
      5   26.14 kB/s   28.07 kB/s
---------------------------------
Average   26.10 kB/s   28.14 kB/s
---------------------------------

Mozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/533.2 (KHTML, like Gecko) Chrome/5.0.342.7 Safari/533.2
15 years ago
David Majda 3f85a9ca84 Regenerated the metaparser with one-level rule cache. 15 years ago
David Majda 24d38f74b9 Replaced two-level rule cache with a one-level one.
This leads to simpler code and also speeds up the benchmark suite execution by
5,89 % on V8.

Detailed results (benchmark suite totals):

---------------------------------
 Test #     Before       After
---------------------------------
      1   24,70 kB/s   26,14 kB/s
      2   24,49 kB/s   26,05 kB/s
      3   24,67 kB/s   25,99 kB/s
      4   24,65 kB/s   26,13 kB/s
      5   24,71 kB/s   26,14 kB/s
---------------------------------
Average   24,64 kB/s   26.10 kB/s
---------------------------------

Mozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/533.2 (KHTML, like Gecko) Chrome/5.0.342.7 Safari/533.2
15 years ago
David Majda 74830d4f8f Sort expected strings in the error messages. 15 years ago
David Majda 37521cffa5 Error messages now do not contain duplicities. 15 years ago
David Majda 714512f232 Implemented generic AST node extension mechanism. 15 years ago
David Majda 1aa3d8e07e Implemented a nop (no operation) function and used it on few places. 15 years ago
David Majda 6a194e8f68 Added example JavaScript parser. 15 years ago
David Majda 16f238a64d Fixed comment heading. 15 years ago
David Majda 3291c70d97 Added \uFEFF (BOM) to the definition of whitespace in the metagrammar.
The Rhino bug that prevented inclusion of \uFEFF among the whitespace characters
is no longer relevant here because we compile character classes into regexps
now, which avoids the infinite recursion.
15 years ago
David Majda 383c5acaa6 Replaced \xA0 by \u00A0 in the whitespace definition in the metagrammar.
This is purely stylistic change.
15 years ago