Commit graph

66 commits

Author SHA1 Message Date
David Majda 09291d6f0f Use "charAt(...)" instead of "[...]" for accessing string characters (compatibility with IE < 8). 2010-04-16 11:06:29 +02:00
David Majda 28459236aa Removed trailing comma that caused error in IE. 2010-04-16 09:26:51 +02:00
David Majda 4b51e6a6d3 Quote null characters in regexps, IE does not like them. 2010-04-16 08:53:02 +02:00
David Majda 7fc491412d Work around the fact that IE does not recognize "\v" in strings. 2010-04-14 21:29:05 +02:00
David Majda 6abda95a99 Made regexps generated for empty character classes ("[]" and "[^]") work in IE. 2010-04-14 21:08:35 +02:00
David Majda e79e869993 Compensate for IE's lack of Array.prototype.indexOf function. 2010-04-14 21:00:09 +02:00
David Majda 05381fedfa Fixed the inverted empty character class handling test. 2010-04-14 20:59:41 +02:00
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
2010-04-12 19:06:04 +02:00
David Majda 3f85a9ca84 Regenerated the metaparser with one-level rule cache. 2010-04-11 17:02:53 +02:00
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
2010-04-11 16:46:45 +02:00
David Majda 74830d4f8f Sort expected strings in the error messages. 2010-04-11 15:34:30 +02:00
David Majda 37521cffa5 Error messages now do not contain duplicities. 2010-04-11 15:30:02 +02:00
David Majda 714512f232 Implemented generic AST node extension mechanism. 2010-04-11 14:48:52 +02:00
David Majda 1aa3d8e07e Implemented a nop (no operation) function and used it on few places. 2010-04-11 14:16:38 +02:00
David Majda 6a194e8f68 Added example JavaScript parser. 2010-04-11 13:18:23 +02:00
David Majda 16f238a64d Fixed comment heading. 2010-04-11 12:41:25 +02:00
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.
2010-04-11 11:45:05 +02:00
David Majda 383c5acaa6 Replaced \xA0 by \u00A0 in the whitespace definition in the metagrammar.
This is purely stylistic change.
2010-04-11 11:18:42 +02:00
David Majda db616f0b77 Made the "version" variable scope smaller. 2010-04-11 11:15:40 +02:00
David Majda c5cc545209 "rake metaparser" and "rake minify" now always generate the target files.
Until now, these tasks looked at the file times and generated the target files
only when they were older than the source files. This caused problems when I
mainupulated the lib/metagrammar.* files by hand sometimes, replaced them from
backups after screw-ups, etc.
2010-04-11 11:05:44 +02:00
David Majda 51232fd652 I don't like the .txt extension after all :-) 2010-04-11 10:59:13 +02:00
David Majda 9488291ac0 Converted README to GitHub Flavored Markdown.
Also added ".txt" extension to VERSION and LICENSE for more consistency.
2010-04-09 18:29:43 +02:00
David Majda 85bd98d846 Replaced .hgignore with .gitignore. 2010-04-09 17:30:32 +02:00
David Majda cfd46b622a Added a benchmark suite. 2010-03-29 20:18:54 +02:00
David Majda 751a33715d Added example CSS parser. 2010-03-29 12:44:32 +02:00
David Majda a1adbf0607 Added example JSON parser. 2010-03-22 12:18:58 +01:00
David Majda 20e230ca0e Killed *MatchFailure classes => simpler code. 2010-03-21 15:48:28 +01:00
David Majda f87bcd6332 Added tests for error messages displayed when a character class match fails. 2010-03-21 15:24:03 +01:00
David Majda 4f4bb34ded Implemented negative character classes (e.g. [^a-z]). 2010-03-20 12:08:45 +01:00
David Majda b3381b9352 Fixed test name. 2010-03-20 11:51:31 +01:00
David Majda 22d2ac8ac2 Rewrote implementation of classes to be regexp-based. 2010-03-20 11:24:04 +01:00
David Majda 56ffa94cc7 PEG.buildParser reports left recursion (both direct and indirect). 2010-03-19 17:10:54 +01:00
David Majda a3ecf768ca Fixed missing referenced rules test. 2010-03-19 16:36:43 +01:00
David Majda 3a65316416 PEG.buildParser reports missing referenced rules. 2010-03-19 11:15:53 +01:00
David Majda 6bbd88088b Implemented and used PEG.ArrayUtils.each. 2010-03-19 10:38:46 +01:00
David Majda eae48caf91 Regenerated the grammar parser. 2010-03-19 10:38:32 +01:00
David Majda 2e94dce944 Improved tests of the "arithmetics" grammar. 2010-03-19 10:28:24 +01:00
David Majda 6f510a0336 The cache does not remember match length but next position after the match.
This leads to simpler and faster code because it avoids one addition and
subtraction.
2010-03-19 10:12:35 +01:00
David Majda 8f2aa1e834 Fixed a bug in the example grammar where integers beginning with 0 were parsed as octal. 2010-03-18 20:06:55 +01:00
David Majda aff85fd228 Removed subtraction and division from the example grammar because of wrong associativity. 2010-03-18 20:06:05 +01:00
David Majda c35417c345 Added tag 0.3 for changeset 6c4975072e03 2010-03-14 18:49:01 +01:00
David Majda f4e0d0a5ce Updated version to 0.3. 2010-03-14 18:48:54 +01:00
David Majda 9d239db2d6 Simplified the example arithmetics grammar once more + addded comment. 2010-03-14 18:46:53 +01:00
David Majda 8f3fa8436d Wrote README. 2010-03-14 15:03:14 +01:00
David Majda 796c98bf8e Changed order of parameters in the SyntaxError constructor to make creating error with unknown location easier. Also fixes bug with reporting of invalid ranges such as [b-a] in the metagrammar. 2010-03-13 15:56:53 +01:00
David Majda 00a258d246 Renamed "humanName" to "displayName". 2010-03-13 15:36:04 +01:00
David Majda bdfc2a57e7 Avoid ugliness in QUnit output. 2010-03-13 15:33:03 +01:00
David Majda d3104742d9 Fixed --start vs. --start-rule inconsistency between help and actual option processing code. 2010-03-13 15:23:59 +01:00
David Majda a43d1b33e3 Bootstrapped the grammar parser, yay! I should have done this long ago. 2010-03-13 15:18:57 +01:00
David Majda 1ee0049b08 Changed standard grammar extension from .peg to .pegjs (it is more specific). 2010-03-13 09:52:54 +01:00