Don't use the "i" suffix for case-insensitive class descriptions

If the described class is case-sensitive, nothing changes.

If the described class is case-insensitive, its description doesn't
indicate that anymore. The indication was awkward and it was meaningful
only for parser users familiar with PEG.js grammar syntax (typically a
minority). For cases where case insensitivity indication is vital, named
rules can be used to customize the reporting.

Note that literal descriptions already ignore the case-sensitivity flag;
this commit only makes things consistent.
redux
David Majda 8 years ago
parent b2d7f9e02f
commit d48983dd6a

@ -632,7 +632,7 @@ function generateBytecode(ast) {
+ classDescriptionEscape(part[1]) + classDescriptionEscape(part[1])
: classDescriptionEscape(part); : classDescriptionEscape(part);
}).join("") }).join("")
+ "]" + (node.ignoreCase ? "i" : ""); + "]";
regexpIndex = addConst(regexp); regexpIndex = addConst(regexp);
expectedIndex = addConst([ expectedIndex = addConst([

@ -288,7 +288,7 @@
peg$c129 = /^[0-9]/, peg$c129 = /^[0-9]/,
peg$c130 = { type: "class", value: "[0-9]", description: "[0-9]" }, peg$c130 = { type: "class", value: "[0-9]", description: "[0-9]" },
peg$c131 = /^[0-9a-f]/i, peg$c131 = /^[0-9a-f]/i,
peg$c132 = { type: "class", value: "[0-9a-f]i", description: "[0-9a-f]i" }, peg$c132 = { type: "class", value: "[0-9a-f]i", description: "[0-9a-f]" },
peg$c133 = ".", peg$c133 = ".",
peg$c134 = { type: "literal", value: ".", description: "\".\"" }, peg$c134 = { type: "literal", value: ".", description: "\".\"" },
peg$c135 = function() { return { type: "any", location: location() }; }, peg$c135 = function() { return { type: "any", location: location() }; },

@ -616,7 +616,7 @@ describe("compiler pass |generateBytecode|", function() {
it("defines correct constants", function() { it("defines correct constants", function() {
expect(pass).toChangeAST('start = [a]i', constsDetails([ expect(pass).toChangeAST('start = [a]i', constsDetails([
'/^[a]/i', '/^[a]/i',
'{ type: "class", value: "[a]i", description: "[a]i" }' '{ type: "class", value: "[a]i", description: "[a]" }'
])); ]));
}); });
}); });

Loading…
Cancel
Save