276 Commits (bdf91b594171529138a3e278809993168688ca16)

Author SHA1 Message Date
David Majda 2c8b323ade Replace variable name computations by computations of indices
This commit replaces all variable name computations in |computeVarNames|
and |computeParams| passes by computations of indices. The actual names
are computed later in the |generateCode| pass.

This change makes the code generator the only place that deals with the
actual variable names, making them easier to change for example.

The code generator code seems bit more complicated after the change, but
this complexity will pay off (and mostly disappear) later.
13 years ago
David Majda 725927e05f Change ordering of "action" code
Places all code that does something with "action" AST nodes under code
handling "choice" nodes.

This ordering is logical because now all the node handling code matches
the sequence in which various node types usually appear when descending
through the AST tree.
13 years ago
David Majda cdf23e0a49 Change ordering of "literal", "class" and "any" code
Changes all code that does something with "literal", "class" or "any"
AST nodes so that the code deals with these in the follwing order:

  1. literal
  2. class
  3. any

Previously the code used this ordering:

  1. literal
  2. any
  3. class

The new ordering is more logical because the nodes are handled from the
most specific to the most generic.
13 years ago
David Majda eb4badab24 Refactor named rules AST representation
PEG.js grammar rules are represented by |rule| nodes in the AST. Until
now, all such nodes had a |displayName| property which was either |null|
or stored rule's human-readable name. This commit gets rid of the
|displayName| property and starts representing rules with a
human-readable name using a new |named| node (a child of the |rule|
node).

This change simplifies code generation code a bit as tests for
|displayName| can be removed (see changes in generate-code.js). It also
separates different concerns from each other nicely.
13 years ago
David Majda a59516f89b Small reordering of properties when creating |class| nodes
General rule: Least important things/flags go last.
13 years ago
David Majda 55a255a882 Add forgotten tests for |nonBraceCharacter| & |nonBraceCharacters| rules 13 years ago
David Majda 7900b66c70 Fix |braced| rule in the PEG.js grammar
This fix does not change the behavior, it just makes the
|nonBraceCharacters| rule un-dead (as originally intended).
13 years ago
David Majda 8ef5f08c90 Jasmine: Convert |removeProxyRules| compiler pass tests 13 years ago
David Majda eaf2af8e7b Jasmine: Convert |computeParams| compiler pass tests 13 years ago
David Majda 4edc9982cc Jasmine: Convert |computeVarNames| compiler pass tests 13 years ago
David Majda 1471df9a69 Jasmine: Convert |reportLeftRecursion| compiler pass tests 13 years ago
David Majda 2889ca72fc Jasmine: Convert |reportMissingRules| compiler pass tests 13 years ago
David Majda ef25ec08c2 Extract |varyAll| calls one level up
DRY + less code.
13 years ago
David Majda 112e4122d0 Jasmine: Convert remaining error reporting tests 13 years ago
David Majda 94aaf4ec75 Jasmine: Convert error position reporting tests 13 years ago
David Majda 1825dd4a42 Jasmine: Convert start rule tests 13 years ago
David Majda f61813238d Jasmine: Convert complex example tests 13 years ago
David Majda 022a51f94e Jasmine: Convert cache tests 13 years ago
David Majda e9f7255d47 Jasmine: Convert initializer tests 13 years ago
David Majda f5f40f68d2 Jasmine: Convert choice matching tests 13 years ago
David Majda 1b0789fbae Jasmine: Convert sequence matching tests 13 years ago
David Majda ae8a89c9e4 Jasmine: Convert labeled matching tests 13 years ago
David Majda b013ba8cc9 Jasmine: Convert simple and matching tests 13 years ago
David Majda 343e9db525 Jasmine: Convert simple not matching tests 13 years ago
David Majda 2bb25efa44 Jasmine: Convert semantic and code tests 13 years ago
David Majda f04096189f Jasmine: Convert semantic not code tests 13 years ago
David Majda ccf31f8822 Jasmine: Convert optional matching tests 13 years ago
David Majda 669668fc1b Jasmine: Convert zero or more matching tests 13 years ago
David Majda 1ab06ff906 Jasmine: Convert one or more matching tests 13 years ago
David Majda 03716a562d Jasmine: Convert action code tests 13 years ago
David Majda b06bd774f5 Jasmine: Convert rule reference matching tests 13 years ago
David Majda 14c11b4dfc Jasmine: Convert class matching tests 13 years ago
David Majda 75ab03dc85 Jasmine: Convert any matching tests 13 years ago
David Majda ec48742032 Jasmine: Convert literal matching tests 13 years ago
David Majda 94205ab639 Jasmine: Convert tests of parser's "grammar" rule 13 years ago
David Majda f746189f2b Jasmine: Convert tests of parser's "initializer" rule 13 years ago
David Majda a49674b05f Jasmine: Change |oneRuleGrammar| parameter handling
This change makes code using |oneRuleGrammar| less verbose + prepares
for passing of the initializer (will be used by code added in the next
few commits).
13 years ago
David Majda 171d62fce4 Jasmine: Convert tests of parser's "rule" rule 13 years ago
David Majda e17d4de7ae Jasmine: Convert tests of parser's "expression" rule 13 years ago
David Majda cc22086a09 Jasmine: Convert tests of parser's "choice" rule 13 years ago
David Majda 434abdb272 Jasmine: Convert tests of parser's "sequence" rule 13 years ago
David Majda ec8889f85d Jasmine: Convert tests of parser's "labeled" rule 13 years ago
David Majda bf6d412a4f Jasmine: Convert tests of parser's "prefixed" rule 13 years ago
David Majda 3e083cc51b Jasmine: Convert tests of parser's "suffixed" rule 13 years ago
David Majda 45f825c24f Jasmine: Convert tests of parser's "primary" rule 13 years ago
David Majda 57bbcd71e5 Jasmine: Convert tests of parser's "action" rule 13 years ago
David Majda 35771e15bc Jasmine: Convert tests of parser's "braced" rule 13 years ago
David Majda b1cb214e8b Jasmine: Convert non-tests of parser's character class rules 13 years ago
David Majda 4f5b78b372 Jasmine: Convert tests of parser's "identifier" rule 13 years ago
David Majda a3d93f000f Jasmine: Convert tests of parser's "literal" rule 13 years ago
David Majda 573db92583 Jasmine: Convert tests of parser's "string" rule 13 years ago
David Majda fa65018b15 Jasmine: Convert tests of parser's "doubleQuotedString" rule 13 years ago
David Majda 0e384b31f4 Jasmine: Convert tests of parser's "doubleQuotedCharacter" rule 13 years ago
David Majda 2f5f8d5932 Jasmine: Convert tests of parser's "simpleDoubleQuotedCharacter" rule 13 years ago
David Majda fb01f48c97 Jasmine: Convert tests of parser's "singleQuotedString" rule 13 years ago
David Majda d3b3fe9b78 Jasmine: Convert tests of parser's "singleQuotedCharacter" rule 13 years ago
David Majda 124e45606c Jasmine: Convert tests of parser's "simpleSingleQuotedCharacter" rule 13 years ago
David Majda ba68919b0a Jasmine: Convert tests of parser's "class" rule 13 years ago
David Majda 5fb59b05f2 Jasmine: Convert tests of parser's "classCharacterRange" rule 13 years ago
David Majda d29a753b8d Jasmine: Convert tests of parser's "classCharacter" rule 13 years ago
David Majda b9ae8f9561 Jasmine: Convert tests of parser's "bracketDelimitedCharacter" rule 13 years ago
David Majda da4ac8bb92 Jasmine: Convert tests of parser's "simpleBracketDelimitedCharacter" rule 13 years ago
David Majda 2bb266bbaf Jasmine: Convert tests of parser's "simpleEscapeSequence" rule 13 years ago
David Majda 2619becb9d Jasmine: Convert tests of parser's "zeroEscapeSequence" rule 13 years ago
David Majda 2b43f8ebb8 Jasmine: Convert tests of parser's "hexEscapeSequence" rule 13 years ago
David Majda 0bbca136a2 Jasmine: Convert tests of parser's "unicodeEscapeSequence" rule 13 years ago
David Majda a27dc5ae4a Jasmine: Convert tests of parser's "eolEscapeSequence" rule 13 years ago
David Majda 4f91286013 Jasmine: Convert non-tests of parser's character class rules 13 years ago
David Majda 3bc61c4c50 Jasmine: Convert tests of parser's "__" rule 13 years ago
David Majda fadaef84dd Jasmine: Convert tests of parser's "comment" rule 13 years ago
David Majda b5ccaed491 Jasmine: Convert tests of parser's "singleLineComment" rule 13 years ago
David Majda dac3b0d8d9 Jasmine: Convert tests of parser's "multiLineComment" rule 13 years ago
David Majda 328edf667c Jasmine: Convert tests of parser's "eol" rule 13 years ago
David Majda b4cffee9d4 Jasmine: Convert tests of parser's "eolChar" rule 13 years ago
David Majda a46b9c197b Jasmine: Convert tests of parser's "whitespace" rule 13 years ago
David Majda c27b96051a Jasmine: Initial infrastructure
This is the first of many commits that gradually convert PEG.js's test
suite from QUnit to Jasmine, cleaning it up on the way.

Main reason for the change is that Jasmine allows nested contexts,
allowing to structure the tests in a better way than QUnit. Moreover,
the tests needed to be cleaned up a bit.
13 years ago