efc38eef9b
Before this change, knowledge about variable names was spread between the |computeStackDepths| pass and the code emitter code. For example, the fact that the |&...| expression needs one variable to store a position was represented in both places. This changes consolidates that knowledge and introduces a new |computeVarNames| pass. This pass replaces old |computeStackDepths| pass, does all computations realted to variable names and stores the results in the AST. Note that some knowledge about variables (inevitably) remained in emitter code templates. Beside DRYing things up, this change simplifies the emitter significantly. By storing variable names in the AST it also allows introduction of a pass that will identify parameters passed to actions using proper symbol tables. Right now, this is done in a hackish way directly in the emitter, which won't work well with changes planned in GH-69. |
||
---|---|---|
.. | ||
vendor/qunit | ||
compiler-test.js | ||
helpers.js | ||
index.html | ||
parser-test.js | ||
passes-test.js | ||
README | ||
run |
PEG.js Test Suite ================= This is the PEG.js test suite. It ensures PEG.js works correctly. All tests should always pass on all supported platforms. Running in a browser -------------------- 1. Open the index.html file in your browser. 2. Watch the test pass (or fail). Running from a command-line --------------------------- 1. Make sure you have Node.js installed. 2. Run the following command: ./run 3. Watch the tests pass (or fail).