Label specs: Improve structure and descriptions

redux
David Majda 9 years ago
parent 8487c9a0ff
commit 6f2c75f7d8

@ -436,7 +436,8 @@ describe("generated parser behavior", function() {
});
describe("label variables", function() {
it("can access label variables from preceding labeled elements in a sequence", function() {
describe("in a containing sequence", function() {
it("can access variables defined by preceding labeled elements", function() {
var parser = PEG.buildParser(
'start = a:"a" b:"b" c:"c" &{ return a === "a" && b === "b" && c === "c"; }',
options
@ -444,8 +445,10 @@ describe("generated parser behavior", function() {
expect(parser).toParse("abc");
});
});
it("can access label variables from preceding labeled elements in an outside sequence (group)", function() {
describe("in an outside sequence", function() {
it("can access variables defined by preceding labeled elements (group)", function() {
var parser = PEG.buildParser(
'start = a:"a" ("b" &{ return a === "a"; })',
options
@ -454,7 +457,7 @@ describe("generated parser behavior", function() {
expect(parser).toParse("ab", ["a", ["b", undefined]]);
});
it("can access label variables from preceding labeled elements in an outside sequence (optional)", function() {
it("can access variables defined by preceding labeled elements (optional)", function() {
var parser = PEG.buildParser(
'start = a:"a" ("b" &{ return a === "a"; })?',
options
@ -463,7 +466,7 @@ describe("generated parser behavior", function() {
expect(parser).toParse("ab", ["a", ["b", undefined]]);
});
it("can access label variables from preceding labeled elements in an outside sequence (zero or more)", function() {
it("can access variables defined by preceding labeled elements (zero or more)", function() {
var parser = PEG.buildParser(
'start = a:"a" ("b" &{ return a === "a"; })*',
options
@ -472,7 +475,7 @@ describe("generated parser behavior", function() {
expect(parser).toParse("ab", ["a", [["b", undefined]]]);
});
it("can access label variables from preceding labeled elements in an outside sequence (one or more)", function() {
it("can access variables defined by preceding labeled elements (one or more)", function() {
var parser = PEG.buildParser(
'start = a:"a" ("b" &{ return a === "a"; })+',
options
@ -481,7 +484,7 @@ describe("generated parser behavior", function() {
expect(parser).toParse("ab", ["a", [["b", undefined]]]);
});
it("can access label variables from preceding labeled elements in an outside sequence (text)", function() {
it("can access variables defined by preceding labeled elements (text)", function() {
var parser = PEG.buildParser(
'start = a:"a" $("b" &{ return a === "a"; })',
options
@ -490,7 +493,7 @@ describe("generated parser behavior", function() {
expect(parser).toParse("ab", ["a", "b"]);
});
it("can access label variables from preceding labeled elements in an outside sequence (positive simple predicate)", function() {
it("can access variables defined by preceding labeled elements (positive simple predicate)", function() {
var parser = PEG.buildParser(
'start = a:"a" &("b" &{ return a === "a"; }) "b"',
options
@ -499,7 +502,7 @@ describe("generated parser behavior", function() {
expect(parser).toParse("ab", ["a", undefined, "b"]);
});
it("can access label variables from preceding labeled elements in an outside sequence (negative simple predicate)", function() {
it("can access variables defined by preceding labeled elements (negative simple predicate)", function() {
var parser = PEG.buildParser(
'start = a:"a" !("b" &{ return a === "a"; }) "c"',
options
@ -508,7 +511,7 @@ describe("generated parser behavior", function() {
expect(parser).toParse("ac", ["a", undefined, "c"]);
});
it("can access label variables from preceding labeled elements in an outside sequence (label)", function() {
it("can access variables defined by preceding labeled elements (label)", function() {
var parser = PEG.buildParser(
'start = a:"a" b:("b" &{ return a === "a"; })',
options
@ -517,7 +520,7 @@ describe("generated parser behavior", function() {
expect(parser).toParse("ab", ["a", ["b", undefined]]);
});
it("can access label variables from preceding labeled elements in an outside sequence (sequence)", function() {
it("can access variables defined by preceding labeled elements (sequence)", function() {
var parser = PEG.buildParser(
'start = a:"a" ("b" ("c" &{ return a === "a"; }) "d")',
options
@ -526,7 +529,7 @@ describe("generated parser behavior", function() {
expect(parser).toParse("abcd", ["a", ["b", ["c", undefined], "d"]]);
});
it("can access label variables from preceding labeled elements in an outside sequence (action)", function() {
it("can access variables defined by preceding labeled elements (action)", function() {
var parser = PEG.buildParser(
'start = a:"a" (b:("b" &{ return a === "a"; }) { return b; })',
options
@ -535,7 +538,7 @@ describe("generated parser behavior", function() {
expect(parser).toParse("ab", ["a", ["b", undefined]]);
});
it("can access label variables from preceding labeled elements in an outside sequence (choice)", function() {
it("can access variables defined by preceding labeled elements (choice)", function() {
var parser = PEG.buildParser(
'start = a:"a" ("b" / "c" &{ return a === "a"; } / "d")',
options
@ -544,6 +547,7 @@ describe("generated parser behavior", function() {
expect(parser).toParse("ac", ["a", ["c", undefined]]);
});
});
});
describe("initializer variables & functions", function() {
it("can access variables defined in the initializer", function() {
@ -645,7 +649,8 @@ describe("generated parser behavior", function() {
});
describe("label variables", function() {
it("can access label variables from preceding labeled elements in a sequence", function() {
describe("in a containing sequence", function() {
it("can access variables defined by preceding labeled elements", function() {
var parser = PEG.buildParser(
'start = a:"a" b:"b" c:"c" !{ return a !== "a" || b !== "b" || c !== "c"; }',
options
@ -653,8 +658,10 @@ describe("generated parser behavior", function() {
expect(parser).toParse("abc");
});
});
it("can access label variables from preceding labeled elements in an outside sequence (group)", function() {
describe("in an outside sequence", function() {
it("can access variables defined by preceding labeled elements (group)", function() {
var parser = PEG.buildParser(
'start = a:"a" ("b" !{ return a !== "a"; })',
options
@ -663,7 +670,7 @@ describe("generated parser behavior", function() {
expect(parser).toParse("ab", ["a", ["b", undefined]]);
});
it("can access label variables from preceding labeled elements in an outside sequence (optional)", function() {
it("can access variables defined by preceding labeled elements (optional)", function() {
var parser = PEG.buildParser(
'start = a:"a" ("b" !{ return a !== "a"; })?',
options
@ -672,7 +679,7 @@ describe("generated parser behavior", function() {
expect(parser).toParse("ab", ["a", ["b", undefined]]);
});
it("can access label variables from preceding labeled elements in an outside sequence (zero or more)", function() {
it("can access variables defined by preceding labeled elements (zero or more)", function() {
var parser = PEG.buildParser(
'start = a:"a" ("b" !{ return a !== "a"; })*',
options
@ -681,7 +688,7 @@ describe("generated parser behavior", function() {
expect(parser).toParse("ab", ["a", [["b", undefined]]]);
});
it("can access label variables from preceding labeled elements in an outside sequence (one or more)", function() {
it("can access variables defined by preceding labeled elements (one or more)", function() {
var parser = PEG.buildParser(
'start = a:"a" ("b" !{ return a !== "a"; })+',
options
@ -690,7 +697,7 @@ describe("generated parser behavior", function() {
expect(parser).toParse("ab", ["a", [["b", undefined]]]);
});
it("can access label variables from preceding labeled elements in an outside sequence (text)", function() {
it("can access variables defined by preceding labeled elements (text)", function() {
var parser = PEG.buildParser(
'start = a:"a" $("b" !{ return a !== "a"; })',
options
@ -699,7 +706,7 @@ describe("generated parser behavior", function() {
expect(parser).toParse("ab", ["a", "b"]);
});
it("can access label variables from preceding labeled elements in an outside sequence (positive simple predicate)", function() {
it("can access variables defined by preceding labeled elements (positive simple predicate)", function() {
var parser = PEG.buildParser(
'start = a:"a" &("b" !{ return a !== "a"; }) "b"',
options
@ -708,7 +715,7 @@ describe("generated parser behavior", function() {
expect(parser).toParse("ab", ["a", undefined, "b"]);
});
it("can access label variables from preceding labeled elements in an outside sequence (negative simple predicate)", function() {
it("can access variables defined by preceding labeled elements (negative simple predicate)", function() {
var parser = PEG.buildParser(
'start = a:"a" !("b" !{ return a !== "a"; }) "c"',
options
@ -717,7 +724,7 @@ describe("generated parser behavior", function() {
expect(parser).toParse("ac", ["a", undefined, "c"]);
});
it("can access label variables from preceding labeled elements in an outside sequence (label)", function() {
it("can access variables defined by preceding labeled elements (label)", function() {
var parser = PEG.buildParser(
'start = a:"a" b:("b" !{ return a !== "a"; })',
options
@ -726,7 +733,7 @@ describe("generated parser behavior", function() {
expect(parser).toParse("ab", ["a", ["b", undefined]]);
});
it("can access label variables from preceding labeled elements in an outside sequence (sequence)", function() {
it("can access variables defined by preceding labeled elements (sequence)", function() {
var parser = PEG.buildParser(
'start = a:"a" ("b" ("c" !{ return a !== "a"; }) "d")',
options
@ -735,7 +742,7 @@ describe("generated parser behavior", function() {
expect(parser).toParse("abcd", ["a", ["b", ["c", undefined], "d"]]);
});
it("can access label variables from preceding labeled elements in an outside sequence (action)", function() {
it("can access variables defined by preceding labeled elements (action)", function() {
var parser = PEG.buildParser(
'start = a:"a" (b:("b" !{ return a !== "a"; }) { return b; })',
options
@ -744,7 +751,7 @@ describe("generated parser behavior", function() {
expect(parser).toParse("ab", ["a", ["b", undefined]]);
});
it("can access label variables from preceding labeled elements in an outside sequence (choice)", function() {
it("can access variables defined by preceding labeled elements (choice)", function() {
var parser = PEG.buildParser(
'start = a:"a" ("b" / "c" !{ return a !== "a"; } / "d")',
options
@ -753,6 +760,7 @@ describe("generated parser behavior", function() {
expect(parser).toParse("ac", ["a", ["c", undefined]]);
});
});
});
describe("initializer variables & functions", function() {
it("can access variables defined in the initializer", function() {
@ -1044,13 +1052,14 @@ describe("generated parser behavior", function() {
});
describe("label variables", function() {
it("can access label variables from a labeled expression", function() {
describe("in the expression", function() {
it("can access label variables defined by a labeled expression", function() {
var parser = PEG.buildParser('start = a:"a" { return a; }', options);
expect(parser).toParse("a", "a");
});
it("can access label variables from a sequence with labeled elements", function() {
it("can access label variables defined by labeled sequence elements", function() {
var parser = PEG.buildParser(
'start = a:"a" b:"b" c:"c" { return [a, b, c]; }',
options
@ -1058,8 +1067,10 @@ describe("generated parser behavior", function() {
expect(parser).toParse("abc", ["a", "b", "c"]);
});
});
it("can access label variables from preceding labeled elements in an outside sequence (group)", function() {
describe("in an outside sequence", function() {
it("can access variables defined by preceding labeled elements (group)", function() {
var parser = PEG.buildParser(
'start = a:"a" ("b" { return a; })',
options
@ -1068,7 +1079,7 @@ describe("generated parser behavior", function() {
expect(parser).toParse("ab", ["a", "a"]);
});
it("can access label variables from preceding labeled elements in an outside sequence (optional)", function() {
it("can access variables defined by preceding labeled elements (optional)", function() {
var parser = PEG.buildParser(
'start = a:"a" ("b" { return a; })?',
options
@ -1077,7 +1088,7 @@ describe("generated parser behavior", function() {
expect(parser).toParse("ab", ["a", "a"]);
});
it("can access label variables from preceding labeled elements in an outside sequence (zero or more)", function() {
it("can access variables defined by preceding labeled elements (zero or more)", function() {
var parser = PEG.buildParser(
'start = a:"a" ("b" { return a; })*',
options
@ -1086,7 +1097,7 @@ describe("generated parser behavior", function() {
expect(parser).toParse("ab", ["a", ["a"]]);
});
it("can access label variables from preceding labeled elements in an outside sequence (one or more)", function() {
it("can access variables defined by preceding labeled elements (one or more)", function() {
var parser = PEG.buildParser(
'start = a:"a" ("b" { return a; })+',
options
@ -1095,7 +1106,7 @@ describe("generated parser behavior", function() {
expect(parser).toParse("ab", ["a", ["a"]]);
});
it("can access label variables from preceding labeled elements in an outside sequence (text)", function() {
it("can access variables defined by preceding labeled elements (text)", function() {
var parser = PEG.buildParser(
'start = a:"a" $("b" { return a; })',
options
@ -1104,7 +1115,7 @@ describe("generated parser behavior", function() {
expect(parser).toParse("ab", ["a", "b"]);
});
it("can access label variables from preceding labeled elements in an outside sequence (positive simple predicate)", function() {
it("can access variables defined by preceding labeled elements (positive simple predicate)", function() {
var parser = PEG.buildParser(
'start = a:"a" &("b" { return a; }) "b"',
options
@ -1113,7 +1124,7 @@ describe("generated parser behavior", function() {
expect(parser).toParse("ab", ["a", undefined, "b"]);
});
it("can access label variables from preceding labeled elements in an outside sequence (negative simple predicate)", function() {
it("can access variables defined by preceding labeled elements (negative simple predicate)", function() {
var parser = PEG.buildParser(
'start = a:"a" !("b" { return a; }) "c"',
options
@ -1122,7 +1133,7 @@ describe("generated parser behavior", function() {
expect(parser).toParse("ac", ["a", undefined, "c"]);
});
it("can access label variables from preceding labeled elements in an outside sequence (label)", function() {
it("can access variables defined by preceding labeled elements (label)", function() {
var parser = PEG.buildParser(
'start = a:"a" b:("b" { return a; })',
options
@ -1131,7 +1142,7 @@ describe("generated parser behavior", function() {
expect(parser).toParse("ab", ["a", "a"]);
});
it("can access label variables from preceding labeled elements in an outside sequence (sequence)", function() {
it("can access variables defined by preceding labeled elements (sequence)", function() {
var parser = PEG.buildParser(
'start = a:"a" ("b" ("c" { return a; }) "d")',
options
@ -1140,7 +1151,7 @@ describe("generated parser behavior", function() {
expect(parser).toParse("abcd", ["a", ["b", "a", "d"]]);
});
it("can access label variables from preceding labeled elements in an outside sequence (action)", function() {
it("can access variables defined by preceding labeled elements (action)", function() {
var parser = PEG.buildParser(
'start = a:"a" (b:("b" { return a; }) { return b; })',
options
@ -1149,7 +1160,7 @@ describe("generated parser behavior", function() {
expect(parser).toParse("ab", ["a", "a"]);
});
it("can access label variables from preceding labeled elements in an outside sequence (choice)", function() {
it("can access variables defined by preceding labeled elements (choice)", function() {
var parser = PEG.buildParser(
'start = a:"a" ("b" / "c" { return a; } / "d")',
options
@ -1158,6 +1169,7 @@ describe("generated parser behavior", function() {
expect(parser).toParse("ac", ["a", "a"]);
});
});
});
describe("initializer variables & functions", function() {
it("can access variables defined in the initializer", function() {

Loading…
Cancel
Save