Sha256: 012054c05cfab8feca67f9539ff328c7b542ddb894fc9120be56d670f884b5ce

Contents?: true

Size: 1.37 KB

Versions: 7

Compression:

Stored size: 1.37 KB

Contents

var Jison = require("../setup").Jison,
    Lexer = require("../setup").Lexer,
    assert = require("assert");

var lexData = {
    rules: [
       ["x", "return 'x';"],
       ["y", "return 'y';"]
    ]
};

exports["test left-recursive nullable grammar"] = function () {

    var grammar = {
        tokens: [ 'x' ],
        startSymbol: "A",
        bnf: {
            "A" :[ 'A x',
                   ''      ]
        }
    };

    var gen = new Jison.Generator(grammar, {type: "slr"});
    var parser = gen.createParser();
    parser.lexer = new Lexer(lexData);

    assert.ok(parser.parse('xxx'), "parse 3 x's");
    assert.ok(parser.parse("x"), "parse single x");
    assert["throws"](function(){parser.parse("y")}, "throws parse error on invalid token");
    assert.ok(gen.conflicts == 0, "no conflicts");
};

exports["test right-recursive nullable grammar"] = function () {

    var grammar = {
        tokens: [ 'x' ],
        startSymbol: "A",
        bnf: {
            "A" :[ 'x A',
                   ''      ]
        }
    };

    var gen = new Jison.Generator(grammar, {type: "slr"});
    var parser = gen.createParser();
    parser.lexer = new Lexer(lexData);

    assert.ok(parser.parse('xxx'), "parse 3 x's");
    assert.ok(gen.table.length == 4, "table has 4 states");
    assert.ok(gen.conflicts == 0, "no conflicts");
    assert.equal(gen.nullable('A'), true, "A is nullable");
};

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
haml-more-0.5.1 vendor/coffee-script/vendor/jison/tests/parser/slr.js
haml-more-0.5.0 vendor/coffee-script/vendor/jison/tests/parser/slr.js
haml-more-0.4.0 vendor/coffee-script/vendor/jison/tests/parser/slr.js
haml-more-0.4.0.d vendor/coffee-script/vendor/jison/tests/parser/slr.js
haml-more-0.4.0.c vendor/coffee-script/vendor/jison/tests/parser/slr.js
haml-more-0.4.0.b vendor/coffee-script/vendor/jison/tests/parser/slr.js
haml-more-0.4.0.a vendor/coffee-script/vendor/jison/tests/parser/slr.js