diff --git a/lib/compiler/passes/generate-bytecode.js b/lib/compiler/passes/generate-bytecode.js index fa4798f..06fc78f 100644 --- a/lib/compiler/passes/generate-bytecode.js +++ b/lib/compiler/passes/generate-bytecode.js @@ -573,7 +573,8 @@ function generateBytecode(ast) { expectedIndex = addConst([ '{', 'type: "literal",', - 'value: "' + js.stringEscape(node.value) + '",', + 'text: "' + js.stringEscape(node.value) + '",', + 'ignoreCase: ' + node.ignoreCase + ',', 'description: "' + js.stringEscape('"' + literalDescriptionEscape(node.value) + '"') + '"', diff --git a/spec/behavior/generated-parser-behavior.spec.js b/spec/behavior/generated-parser-behavior.spec.js index 8e04eda..cb2955c 100644 --- a/spec/behavior/generated-parser-behavior.spec.js +++ b/spec/behavior/generated-parser-behavior.spec.js @@ -190,7 +190,7 @@ describe("generated parser behavior", function() { var parser = peg.generate('start = "a"'); expect(parser).toFailToParse("b", { - expected: [{ type: "literal", value: "a", description: '"a"' }] + expected: [{ type: "literal", text: "a", ignoreCase: false, description: '"a"' }] }); }); }); @@ -271,7 +271,7 @@ describe("generated parser behavior", function() { var parser = peg.generate('start = "a"', options); expect(parser).toFailToParse("b", { - expected: [{ type: "literal", value: "a", description: '"a"' }] + expected: [{ type: "literal", text: "a", ignoreCase: false, description: '"a"' }] }); }); }); @@ -932,8 +932,8 @@ describe("generated parser behavior", function() { expect(parser).toFailToParse("d", { expected: [ - { type: "literal", value: "a", description: '"a"' }, - { type: "literal", value: "c", description: '"c"' } + { type: "literal", text: "a", ignoreCase: false, description: '"a"' }, + { type: "literal", text: "c", ignoreCase: false, description: '"c"' } ] }); }); @@ -967,8 +967,8 @@ describe("generated parser behavior", function() { expect(parser).toFailToParse("b", { expected: [ - { type: "literal", value: "a", description: '"a"' }, - { type: "literal", value: "c", description: '"c"' } + { type: "literal", text: "a", ignoreCase: false, description: '"a"' }, + { type: "literal", text: "c", ignoreCase: false, description: '"c"' } ] }); }); @@ -1331,7 +1331,7 @@ describe("generated parser behavior", function() { var parser = peg.generate('start = "a" "b" / "a" "c" "d"', options); expect(parser).toFailToParse("ace", { - expected: [{ type: "literal", value: "d", description: '"d"' }] + expected: [{ type: "literal", text: "d", ignoreCase: false, description: '"d"' }] }); }); }); @@ -1349,7 +1349,7 @@ describe("generated parser behavior", function() { var parser = peg.generate('start = "a"', options); expect(parser).toFailToParse("b", { - expected: [{ type: "literal", value: "a", description: '"a"' }] + expected: [{ type: "literal", text: "a", ignoreCase: false, description: '"a"' }] }); }); @@ -1358,9 +1358,9 @@ describe("generated parser behavior", function() { expect(parser).toFailToParse("d", { expected: [ - { type: "literal", value: "a", description: '"a"' }, - { type: "literal", value: "b", description: '"b"' }, - { type: "literal", value: "c", description: '"c"' } + { type: "literal", text: "a", ignoreCase: false, description: '"a"' }, + { type: "literal", text: "b", ignoreCase: false, description: '"b"' }, + { type: "literal", text: "c", ignoreCase: false, description: '"c"' } ] }); }); @@ -1376,7 +1376,7 @@ describe("generated parser behavior", function() { var parser = peg.generate('start = "a" / "a" / "a"', options); expect(parser).toFailToParse("b", { - expected: [{ type: "literal", value: "a", description: '"a"' }] + expected: [{ type: "literal", text: "a", ignoreCase: false, description: '"a"' }] }); }); @@ -1385,9 +1385,9 @@ describe("generated parser behavior", function() { expect(parser).toFailToParse("d", { expected: [ - { type: "literal", value: "a", description: '"a"' }, - { type: "literal", value: "b", description: '"b"' }, - { type: "literal", value: "c", description: '"c"' } + { type: "literal", text: "a", ignoreCase: false, description: '"a"' }, + { type: "literal", text: "b", ignoreCase: false, description: '"b"' }, + { type: "literal", text: "c", ignoreCase: false, description: '"c"' } ] }); }); diff --git a/spec/unit/compiler/passes/generate-bytecode.spec.js b/spec/unit/compiler/passes/generate-bytecode.spec.js index 9fdad43..0e8ebfa 100644 --- a/spec/unit/compiler/passes/generate-bytecode.spec.js +++ b/spec/unit/compiler/passes/generate-bytecode.spec.js @@ -35,11 +35,11 @@ describe("compiler pass |generateBytecode|", function() { 'c = "c"' ].join("\n"), constsDetails([ '"a"', - '{ type: "literal", value: "a", description: "\\"a\\"" }', + '{ type: "literal", text: "a", ignoreCase: false, description: "\\"a\\"" }', '"b"', - '{ type: "literal", value: "b", description: "\\"b\\"" }', + '{ type: "literal", text: "b", ignoreCase: false, description: "\\"b\\"" }', '"c"', - '{ type: "literal", value: "c", description: "\\"c\\"" }' + '{ type: "literal", text: "c", ignoreCase: false, description: "\\"c\\"" }' ])); }); }); @@ -69,7 +69,7 @@ describe("compiler pass |generateBytecode|", function() { expect(pass).toChangeAST(grammar, constsDetails([ '{ type: "other", description: "start" }', '"a"', - '{ type: "literal", value: "a", description: "\\"a\\"" }' + '{ type: "literal", text: "a", ignoreCase: false, description: "\\"a\\"" }' ])); }); }); @@ -106,7 +106,7 @@ describe("compiler pass |generateBytecode|", function() { it("defines correct constants", function() { expect(pass).toChangeAST(grammar, constsDetails([ '"a"', - '{ type: "literal", value: "a", description: "\\"a\\"" }', + '{ type: "literal", text: "a", ignoreCase: false, description: "\\"a\\"" }', 'function() { code }' ])); }); @@ -129,7 +129,7 @@ describe("compiler pass |generateBytecode|", function() { it("defines correct constants", function() { expect(pass).toChangeAST(grammar, constsDetails([ '"a"', - '{ type: "literal", value: "a", description: "\\"a\\"" }', + '{ type: "literal", text: "a", ignoreCase: false, description: "\\"a\\"" }', 'function(a) { code }' ])); }); @@ -165,11 +165,11 @@ describe("compiler pass |generateBytecode|", function() { it("defines correct constants", function() { expect(pass).toChangeAST(grammar, constsDetails([ '"a"', - '{ type: "literal", value: "a", description: "\\"a\\"" }', + '{ type: "literal", text: "a", ignoreCase: false, description: "\\"a\\"" }', '"b"', - '{ type: "literal", value: "b", description: "\\"b\\"" }', + '{ type: "literal", text: "b", ignoreCase: false, description: "\\"b\\"" }', '"c"', - '{ type: "literal", value: "c", description: "\\"c\\"" }', + '{ type: "literal", text: "c", ignoreCase: false, description: "\\"c\\"" }', 'function(a, b, c) { code }' ])); }); @@ -205,11 +205,11 @@ describe("compiler pass |generateBytecode|", function() { it("defines correct constants", function() { expect(pass).toChangeAST(grammar, constsDetails([ '"a"', - '{ type: "literal", value: "a", description: "\\"a\\"" }', + '{ type: "literal", text: "a", ignoreCase: false, description: "\\"a\\"" }', '"b"', - '{ type: "literal", value: "b", description: "\\"b\\"" }', + '{ type: "literal", text: "b", ignoreCase: false, description: "\\"b\\"" }', '"c"', - '{ type: "literal", value: "c", description: "\\"c\\"" }' + '{ type: "literal", text: "c", ignoreCase: false, description: "\\"c\\"" }' ])); }); }); @@ -257,7 +257,7 @@ describe("compiler pass |generateBytecode|", function() { it("defines correct constants", function() { expect(pass).toChangeAST(grammar, constsDetails([ '"a"', - '{ type: "literal", value: "a", description: "\\"a\\"" }' + '{ type: "literal", text: "a", ignoreCase: false, description: "\\"a\\"" }' ])); }); }); @@ -284,7 +284,7 @@ describe("compiler pass |generateBytecode|", function() { it("defines correct constants", function() { expect(pass).toChangeAST(grammar, constsDetails([ '"a"', - '{ type: "literal", value: "a", description: "\\"a\\"" }' + '{ type: "literal", text: "a", ignoreCase: false, description: "\\"a\\"" }' ])); }); }); @@ -304,7 +304,7 @@ describe("compiler pass |generateBytecode|", function() { it("defines correct constants", function() { expect(pass).toChangeAST(grammar, constsDetails([ '"a"', - '{ type: "literal", value: "a", description: "\\"a\\"" }' + '{ type: "literal", text: "a", ignoreCase: false, description: "\\"a\\"" }' ])); }); }); @@ -326,7 +326,7 @@ describe("compiler pass |generateBytecode|", function() { it("defines correct constants", function() { expect(pass).toChangeAST(grammar, constsDetails([ '"a"', - '{ type: "literal", value: "a", description: "\\"a\\"" }' + '{ type: "literal", text: "a", ignoreCase: false, description: "\\"a\\"" }' ])); }); }); @@ -352,7 +352,7 @@ describe("compiler pass |generateBytecode|", function() { it("defines correct constants", function() { expect(pass).toChangeAST(grammar, constsDetails([ '"a"', - '{ type: "literal", value: "a", description: "\\"a\\"" }' + '{ type: "literal", text: "a", ignoreCase: false, description: "\\"a\\"" }' ])); }); }); @@ -429,11 +429,11 @@ describe("compiler pass |generateBytecode|", function() { it("defines correct constants", function() { expect(pass).toChangeAST(grammar, constsDetails([ '"a"', - '{ type: "literal", value: "a", description: "\\"a\\"" }', + '{ type: "literal", text: "a", ignoreCase: false, description: "\\"a\\"" }', '"b"', - '{ type: "literal", value: "b", description: "\\"b\\"" }', + '{ type: "literal", text: "b", ignoreCase: false, description: "\\"b\\"" }', '"c"', - '{ type: "literal", value: "c", description: "\\"c\\"" }', + '{ type: "literal", text: "c", ignoreCase: false, description: "\\"c\\"" }', 'function(a, b, c) { code }' ])); }); @@ -504,11 +504,11 @@ describe("compiler pass |generateBytecode|", function() { it("defines correct constants", function() { expect(pass).toChangeAST(grammar, constsDetails([ '"a"', - '{ type: "literal", value: "a", description: "\\"a\\"" }', + '{ type: "literal", text: "a", ignoreCase: false, description: "\\"a\\"" }', '"b"', - '{ type: "literal", value: "b", description: "\\"b\\"" }', + '{ type: "literal", text: "b", ignoreCase: false, description: "\\"b\\"" }', '"c"', - '{ type: "literal", value: "c", description: "\\"c\\"" }', + '{ type: "literal", text: "c", ignoreCase: false, description: "\\"c\\"" }', 'function(a, b, c) { code }' ])); }); @@ -560,7 +560,7 @@ describe("compiler pass |generateBytecode|", function() { it("defines correct constants", function() { expect(pass).toChangeAST(grammar, constsDetails([ '"a"', - '{ type: "literal", value: "a", description: "\\"a\\"" }' + '{ type: "literal", text: "a", ignoreCase: false, description: "\\"a\\"" }' ])); }); }); @@ -579,7 +579,7 @@ describe("compiler pass |generateBytecode|", function() { it("defines correct constants", function() { expect(pass).toChangeAST(grammar, constsDetails([ '"a"', - '{ type: "literal", value: "A", description: "\\"A\\"" }' + '{ type: "literal", text: "A", ignoreCase: true, description: "\\"A\\"" }' ])); }); });