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