Browse Source

Fix comma-dangle warning from ESLint

master
Futago-za Ryuu 1 year ago
parent
commit
b7b87ea8ae
23 changed files with 178 additions and 180 deletions
  1. +38
    -38
      packages/pegjs/lib/compiler/passes/generate-bytecode.js
  2. +23
    -23
      packages/pegjs/lib/compiler/passes/generate-js.js
  3. +1
    -1
      packages/pegjs/lib/compiler/passes/inference-match-result.js
  4. +1
    -1
      packages/pegjs/lib/compiler/passes/report-duplicate-labels.js
  5. +1
    -1
      packages/pegjs/lib/compiler/passes/report-duplicate-rules.js
  6. +1
    -1
      packages/pegjs/lib/compiler/passes/report-infinite-recursion.js
  7. +2
    -2
      packages/pegjs/lib/compiler/passes/report-infinite-repetition.js
  8. +1
    -1
      packages/pegjs/lib/compiler/passes/report-undefined-rules.js
  9. +1
    -1
      packages/pegjs/lib/compiler/passes/report-unused-rules.js
  10. +1
    -1
      packages/pegjs/lib/peg.js
  11. +2
    -2
      packages/pegjs/lib/util/js.js
  12. +25
    -25
      test/behavior/generated-parser-behavior.spec.js
  13. +27
    -29
      test/unit/compiler/passes/generate-bytecode.spec.js
  14. +3
    -3
      test/unit/compiler/passes/helpers.js
  15. +3
    -3
      test/unit/compiler/passes/inference-match-result.spec.js
  16. +2
    -2
      test/unit/compiler/passes/remove-proxy-rules.spec.js
  17. +1
    -1
      test/unit/compiler/passes/report-undefined-rules.spec.js
  18. +3
    -3
      test/unit/compiler/passes/report-unused-rules.spec.js
  19. +35
    -35
      test/unit/parser.spec.js
  20. +3
    -3
      tools/benchmark/browser.stub.js
  21. +1
    -1
      tools/benchmark/index.js
  22. +2
    -2
      tools/benchmark/runner.js
  23. +1
    -1
      tools/impact/index.js

+ 38
- 38
packages/pegjs/lib/compiler/passes/generate-bytecode.js View File

@@ -254,7 +254,7 @@ function generateBytecode( ast, session ) {
return condCode.concat(
[ thenCode.length, elseCode.length ],
thenCode,
elseCode
elseCode,
);

}
@@ -291,14 +291,14 @@ function generateBytecode( ast, session ) {
buildSequence(
[ op.POP ],
[ negative ? op.POP : op.POP_CURR_POS ],
[ op.PUSH_UNDEFINED ]
[ op.PUSH_UNDEFINED ],
),
buildSequence(
[ op.POP ],
[ negative ? op.POP_CURR_POS : op.POP ],
[ op.PUSH_FAILED ]
)
)
[ op.PUSH_FAILED ],
),
),
);

}
@@ -314,8 +314,8 @@ function generateBytecode( ast, session ) {
node.match|0,
[ op.IF ],
buildSequence( [ op.POP ], negative ? [ op.PUSH_FAILED ] : [ op.PUSH_UNDEFINED ] ),
buildSequence( [ op.POP ], negative ? [ op.PUSH_UNDEFINED ] : [ op.PUSH_FAILED ] )
)
buildSequence( [ op.POP ], negative ? [ op.PUSH_UNDEFINED ] : [ op.PUSH_FAILED ] ),
),
);

}
@@ -324,7 +324,7 @@ function generateBytecode( ast, session ) {

return buildLoop(
[ op.WHILE_NOT_ERROR ],
buildSequence( [ op.APPEND ], expressionCode )
buildSequence( [ op.APPEND ], expressionCode ),
);

}
@@ -355,7 +355,7 @@ function generateBytecode( ast, session ) {

// Do not generate unused constant, if no need it
const nameIndex = context.reportFailures ? addExpectedConst(
{ type: "rule", value: node.name }
{ type: "rule", value: node.name },
) : null;
const expressionCode = generate( node.expression, {
sp: context.sp,
@@ -369,7 +369,7 @@ function generateBytecode( ast, session ) {
[ op.EXPECT, nameIndex ],
[ op.SILENT_FAILS_ON ],
expressionCode,
[ op.SILENT_FAILS_OFF ]
[ op.SILENT_FAILS_OFF ],
) : expressionCode;

},
@@ -393,10 +393,10 @@ function generateBytecode( ast, session ) {
[ op.IF_ERROR ],
buildSequence(
[ op.POP ],
buildAlternativesCode( alternatives.slice( 1 ), context )
buildAlternativesCode( alternatives.slice( 1 ), context ),
),
[]
)
[],
),
);

}
@@ -430,11 +430,11 @@ function generateBytecode( ast, session ) {
[ op.IF_NOT_ERROR ],
buildSequence(
[ op.LOAD_SAVED_POS, 1 ],
buildCall( functionIndex, 1, env, context.sp + 2 )
buildCall( functionIndex, 1, env, context.sp + 2 ),
),
[]
[],
),
[ op.NIP ]
[ op.NIP ],
);

},
@@ -470,9 +470,9 @@ function generateBytecode( ast, session ) {
buildSequence(
processedCount > 1 ? [ op.POP_N, processedCount ] : [ op.POP ],
[ op.POP_CURR_POS ],
[ op.PUSH_FAILED ]
)
)
[ op.PUSH_FAILED ],
),
),
);

}
@@ -481,7 +481,7 @@ function generateBytecode( ast, session ) {

return buildSequence(
[ op.PLUCK, TOTAL_ELEMENTS + 1, context.pluck.length ],
context.pluck.map( eSP => context.sp - eSP )
context.pluck.map( eSP => context.sp - eSP ),
);

if ( context.action )
@@ -492,12 +492,12 @@ function generateBytecode( ast, session ) {
addFunctionConst( // functionIndex
false,
Object.keys( context.env ),
context.action.code
context.action.code,
),
TOTAL_ELEMENTS + 1,
context.env,
context.sp
)
context.sp,
),
);

return buildSequence( [ op.WRAP, TOTAL_ELEMENTS ], [ op.NIP ] );
@@ -512,7 +512,7 @@ function generateBytecode( ast, session ) {
pluck: [],
action: context.action,
reportFailures: context.reportFailures,
} )
} ),
);

},
@@ -557,8 +557,8 @@ function generateBytecode( ast, session ) {
node.expression.match|0,
[ op.IF_NOT_ERROR ],
buildSequence( [ op.POP ], [ op.TEXT ] ),
[ op.NIP ]
)
[ op.NIP ],
),
);

},
@@ -589,8 +589,8 @@ function generateBytecode( ast, session ) {
-( node.expression.match|0 ),
[ op.IF_ERROR ],
buildSequence( [ op.POP ], [ op.PUSH_NULL ] ),
[]
)
[],
),
);

},
@@ -608,7 +608,7 @@ function generateBytecode( ast, session ) {
[ op.PUSH_EMPTY_ARRAY ],
expressionCode,
buildAppendLoop( expressionCode ),
[ op.POP ]
[ op.POP ],
);

},
@@ -629,8 +629,8 @@ function generateBytecode( ast, session ) {
node.expression.match|0,
[ op.IF_NOT_ERROR ],
buildSequence( buildAppendLoop( expressionCode ), [ op.POP ] ),
buildSequence( [ op.POP ], [ op.POP ], [ op.PUSH_FAILED ] )
)
buildSequence( [ op.POP ], [ op.POP ], [ op.PUSH_FAILED ] ),
),
);

},
@@ -671,7 +671,7 @@ function generateBytecode( ast, session ) {
const match = node.match|0;
const needConst = match === 0 || ( match > 0 && ! node.ignoreCase );
const stringIndex = needConst ? addLiteralConst(
node.ignoreCase ? node.value.toLowerCase() : node.value
node.ignoreCase ? node.value.toLowerCase() : node.value,
) : null;
// Do not generate unused constant, if no need it
const expectedIndex = context.reportFailures ? addExpectedConst( {
@@ -693,8 +693,8 @@ function generateBytecode( ast, session ) {
node.ignoreCase
? [ op.ACCEPT_N, node.value.length ]
: [ op.ACCEPT_STRING, stringIndex ],
[ op.PUSH_FAILED ]
)
[ op.PUSH_FAILED ],
),
);

}
@@ -721,8 +721,8 @@ function generateBytecode( ast, session ) {
match,
[ op.MATCH_CLASS, classIndex ],
[ op.ACCEPT_N, 1 ],
[ op.PUSH_FAILED ]
)
[ op.PUSH_FAILED ],
),
);

},
@@ -740,8 +740,8 @@ function generateBytecode( ast, session ) {
node.match|0,
[ op.MATCH_ANY ],
[ op.ACCEPT_N, 1 ],
[ op.PUSH_FAILED ]
)
[ op.PUSH_FAILED ],
),
);

},


+ 23
- 23
packages/pegjs/lib/compiler/passes/generate-js.js View File

@@ -147,13 +147,13 @@ function generateJS( ast, session, options ) {
return ast.literals
.map( ( c, i ) => "var " + l( i ) + " = " + buildLiteral( c ) + ";" )
.concat( "", ast.classes.map(
( c, i ) => "var " + r( i ) + " = " + buildRegexp( c ) + ";"
( c, i ) => "var " + r( i ) + " = " + buildRegexp( c ) + ";",
) )
.concat( "", ast.expectations.map(
( c, i ) => "var " + e( i ) + " = " + buildExpectation( c ) + ";"
( c, i ) => "var " + e( i ) + " = " + buildExpectation( c ) + ";",
) )
.concat( "", ast.functions.map(
( c, i ) => "var " + f( i ) + " = " + buildFunc( c ) + ";"
( c, i ) => "var " + f( i ) + " = " + buildFunc( c ) + ";",
) )
.join( "\n" );

@@ -492,15 +492,15 @@ function generateJS( ast, session, options ) {
" case " + op.IF_ERROR + ":", // IF_ERROR t, f
indent10( generateCondition(
"stack[stack.length - 1] === peg$FAILED",
0
0,
) ),
"",
" case " + op.IF_NOT_ERROR + ":", // IF_NOT_ERROR t, f
indent10(
generateCondition(
"stack[stack.length - 1] !== peg$FAILED",
0
)
0,
),
),
"",
" case " + op.WHILE_NOT_ERROR + ":", // WHILE_NOT_ERROR b
@@ -512,19 +512,19 @@ function generateJS( ast, session, options ) {
" case " + op.MATCH_STRING + ":", // MATCH_STRING s, a, f, ...
indent10( generateCondition(
"input.substr(peg$currPos, peg$literals[bc[ip + 1]].length) === peg$literals[bc[ip + 1]]",
1
1,
) ),
"",
" case " + op.MATCH_STRING_IC + ":", // MATCH_STRING_IC s, a, f, ...
indent10( generateCondition(
"input.substr(peg$currPos, peg$literals[bc[ip + 1]].length).toLowerCase() === peg$literals[bc[ip + 1]]",
1
1,
) ),
"",
" case " + op.MATCH_CLASS + ":", // MATCH_CLASS c, a, f, ...
indent10( generateCondition(
"peg$regexps[bc[ip + 1]].test(input.charAt(peg$currPos))",
1
1,
) ),
"",
" case " + op.ACCEPT_N + ":", // ACCEPT_N n
@@ -697,7 +697,7 @@ function generateJS( ast, session, options ) {
session.fatal(
"Rule '" + rule.name + "', position " + pos + ": "
+ "Branches of a condition can't move the stack pointer differently "
+ "(before: " + baseSp + ", after then: " + thenSp + ", after else: " + elseSp + ")."
+ "(before: " + baseSp + ", after then: " + thenSp + ", after else: " + elseSp + ").",
);

}
@@ -735,7 +735,7 @@ function generateJS( ast, session, options ) {
session.fatal(
"Rule '" + rule.name + "', position " + pos + ": "
+ "Body of a loop can't move the stack pointer "
+ "(before: " + baseSp + ", after: " + bodySp + ")."
+ "(before: " + baseSp + ", after: " + bodySp + ").",
);

}
@@ -829,14 +829,14 @@ function generateJS( ast, session, options ) {

case op.WRAP: // WRAP n
parts.push(
stack.push( "[" + stack.pop( bc[ ip + 1 ] ).join( ", " ) + "]" )
stack.push( "[" + stack.pop( bc[ ip + 1 ] ).join( ", " ) + "]" ),
);
ip += 2;
break;

case op.TEXT: // TEXT
parts.push(
stack.push( "input.substring(" + stack.pop() + ", peg$currPos)" )
stack.push( "input.substring(" + stack.pop() + ", peg$currPos)" ),
);
ip++;
break;
@@ -886,7 +886,7 @@ function generateJS( ast, session, options ) {
+ l( bc[ ip + 1 ] )
: "input.charCodeAt(peg$currPos) === "
+ ast.literals[ bc[ ip + 1 ] ].charCodeAt( 0 )
, 1
, 1,
);
break;

@@ -896,7 +896,7 @@ function generateJS( ast, session, options ) {
+ ast.literals[ bc[ ip + 1 ] ].length
+ ").toLowerCase() === "
+ l( bc[ ip + 1 ] )
, 1
, 1,
);
break;

@@ -908,12 +908,12 @@ function generateJS( ast, session, options ) {
parts.push( stack.push(
bc[ ip + 1 ] > 1
? "input.substr(peg$currPos, " + bc[ ip + 1 ] + ")"
: "input.charAt(peg$currPos)"
: "input.charAt(peg$currPos)",
) );
parts.push(
bc[ ip + 1 ] > 1
? "peg$currPos += " + bc[ ip + 1 ] + ";"
: "peg$currPos++;"
: "peg$currPos++;",
);
ip += 2;
break;
@@ -923,7 +923,7 @@ function generateJS( ast, session, options ) {
parts.push(
ast.literals[ bc[ ip + 1 ] ].length > 1
? "peg$currPos += " + ast.literals[ bc[ ip + 1 ] ].length + ";"
: "peg$currPos++;"
: "peg$currPos++;",
);
ip += 2;
break;
@@ -976,7 +976,7 @@ function generateJS( ast, session, options ) {
default:
session.fatal(
"Rule '" + rule.name + "', position " + ip + ": "
+ "Invalid opcode " + bc[ ip ] + "."
+ "Invalid opcode " + bc[ ip ] + ".",
);

}
@@ -1007,12 +1007,12 @@ function generateJS( ast, session, options ) {

parts.push( indent2( generateRuleHeader(
"\"" + util.stringEscape( rule.name ) + "\"",
ast.indexOfRule( rule.name )
ast.indexOfRule( rule.name ),
) ) );
parts.push( indent2( code ) );
parts.push( indent2( generateRuleFooter(
"\"" + util.stringEscape( rule.name ) + "\"",
s( 0 )
s( 0 ),
) ) );

parts.push( "}" );
@@ -1746,7 +1746,7 @@ function generateJS( ast, session, options ) {

parts.push(
generateHeaderComment(),
""
"",
);

if ( dependencyVars.length > 0 ) {
@@ -1769,7 +1769,7 @@ function generateJS( ast, session, options ) {
"export " + generateParserExports() + ";",
"",
"export default " + generateParserObject() + ";",
""
"",
);

return parts.join( "\n" );


+ 1
- 1
packages/pegjs/lib/compiler/passes/inference-match-result.js View File

@@ -90,7 +90,7 @@ function inferenceMatchResult( ast, session ) {

session.error(
"Infinity cycle detected when trying to evaluate node match result",
node.location
node.location,
);

}


+ 1
- 1
packages/pegjs/lib/compiler/passes/report-duplicate-labels.js View File

@@ -43,7 +43,7 @@ function reportDuplicateLabels( ast, session ) {

session.error(
`Label "${ label }" is already defined at line ${ start.line }, column ${ start.column }.`,
node.location
node.location,
);

}


+ 1
- 1
packages/pegjs/lib/compiler/passes/report-duplicate-rules.js View File

@@ -18,7 +18,7 @@ function reportDuplicateRules( ast, session ) {

session.error(
`Rule "${ name }" is already defined at line ${ start.line }, column ${ start.column }.`,
node.location
node.location,
);

}


+ 1
- 1
packages/pegjs/lib/compiler/passes/report-infinite-recursion.js View File

@@ -44,7 +44,7 @@ function reportInfiniteRecursion( ast, session ) {

session.error(
`Possible infinite loop when parsing (left recursion: ${ rulePath }).`,
node.location
node.location,
);

}


+ 2
- 2
packages/pegjs/lib/compiler/passes/report-infinite-repetition.js View File

@@ -11,7 +11,7 @@ function reportInfiniteRepetition( ast, session ) {

session.error(
"Possible infinite loop when parsing (repetition used with an expression that may not consume any input).",
node.location
node.location,
);

}
@@ -24,7 +24,7 @@ function reportInfiniteRepetition( ast, session ) {

session.error(
"Possible infinite loop when parsing (repetition used with an expression that may not consume any input).",
node.location
node.location,
);

}


+ 1
- 1
packages/pegjs/lib/compiler/passes/report-undefined-rules.js View File

@@ -10,7 +10,7 @@ function reportUndefinedRules( ast, session, options ) {

session.error(
`Rule "${ node.name }" is not defined.`,
node.location
node.location,
);

}


+ 1
- 1
packages/pegjs/lib/compiler/passes/report-unused-rules.js View File

@@ -19,7 +19,7 @@ function reportUnusedRules( ast, session, options ) {

session.warn(
`Rule "${ rule.name }" is not referenced.`,
rule.location
rule.location,
);

}


+ 1
- 1
packages/pegjs/lib/peg.js View File

@@ -44,7 +44,7 @@ const peg = {
return compiler.compile(
session.parse( grammar, options.parser || {} ),
session,
options
options,
);

},


+ 2
- 2
packages/pegjs/lib/util/js.js View File

@@ -39,7 +39,7 @@ const js = {
return sourceEscape(
s
.replace( /\\/g, "\\\\" ) // backslash
.replace( /"/g, "\\\"" ) // closing double quote
.replace( /"/g, "\\\"" ), // closing double quote
);

},
@@ -57,7 +57,7 @@ const js = {
.replace( /\//g, "\\/" ) // closing slash
.replace( /]/g, "\\]" ) // closing bracket
.replace( /\^/g, "\\^" ) // caret
.replace( /-/g, "\\-" ) // dash
.replace( /-/g, "\\-" ), // dash
);

},


+ 25
- 25
test/behavior/generated-parser-behavior.spec.js View File

@@ -29,7 +29,7 @@ describe( "generated parser behavior", function () {

block( peg.util.clone( variant ) );

}
},
);

} );
@@ -71,7 +71,7 @@ describe( "generated parser behavior", function () {
"expected #{this} to not parse input as #{exp}",
expected,
result,
! utils.flag( this, "negate" )
! utils.flag( this, "negate" ),
);

}
@@ -102,7 +102,7 @@ describe( "generated parser behavior", function () {
"expected #{this} to fail to parse input but got #{act}",
"expected #{this} to not fail to parse input but #{act} was thrown",
null,
result
result,
);

if ( ! passed && typeof props !== "undefined" ) {
@@ -556,7 +556,7 @@ describe( "generated parser behavior", function () {

const parser = peg.generate(
"start = a:'a' &{ return a === 'a'; }",
options
options,
);

expect( parser ).to.parse( "a" );
@@ -567,7 +567,7 @@ describe( "generated parser behavior", function () {

const parser = peg.generate(
"start = 'a' b:&{ return b === undefined; } 'c'",
options
options,
);

expect( parser ).to.failToParse( "ac" );
@@ -578,7 +578,7 @@ describe( "generated parser behavior", function () {

const parser = peg.generate(
"start = &{ return a === 'a'; } a:'a'",
options
options,
);

expect( parser ).to.failToParse( "a" );
@@ -651,7 +651,7 @@ describe( "generated parser behavior", function () {

const parser = peg.generate(
"start = a:'a' ('b' &{ return a === 'a'; })",
options
options,
);

expect( parser ).to.parse( "ab" );
@@ -662,7 +662,7 @@ describe( "generated parser behavior", function () {

const parser = peg.generate(
"start = 'a' b:('b' &{ return b === undefined; }) 'c'",
options
options,
);

expect( parser ).to.failToParse( "abc" );
@@ -673,7 +673,7 @@ describe( "generated parser behavior", function () {

const parser = peg.generate(
"start = ('a' &{ return b === 'b'; }) b:'b'",
options
options,
);

expect( parser ).to.failToParse( "ab" );
@@ -815,7 +815,7 @@ describe( "generated parser behavior", function () {

const parser = peg.generate(
"start = a:'a' !{ return a !== 'a'; }",
options
options,
);

expect( parser ).to.parse( "a" );
@@ -826,7 +826,7 @@ describe( "generated parser behavior", function () {

const parser = peg.generate(
"start = 'a' b:!{ return b !== undefined; } 'c'",
options
options,
);

expect( parser ).to.failToParse( "ac" );
@@ -837,7 +837,7 @@ describe( "generated parser behavior", function () {

const parser = peg.generate(
"start = !{ return a !== 'a'; } a:'a'",
options
options,
);

expect( parser ).to.failToParse( "a" );
@@ -910,7 +910,7 @@ describe( "generated parser behavior", function () {

const parser = peg.generate(
"start = a:'a' ('b' !{ return a !== 'a'; })",
options
options,
);

expect( parser ).to.parse( "ab" );
@@ -921,7 +921,7 @@ describe( "generated parser behavior", function () {

const parser = peg.generate(
"start = 'a' b:('b' !{ return b !== undefined; }) 'c'",
options
options,
);

expect( parser ).to.failToParse( "abc" );
@@ -932,7 +932,7 @@ describe( "generated parser behavior", function () {

const parser = peg.generate(
"start = ('a' !{ return b !== 'b'; }) b:'b'",
options
options,
);

expect( parser ).to.failToParse( "ab" );
@@ -1482,7 +1482,7 @@ describe( "generated parser behavior", function () {

const parser = peg.generate(
"start = a:'a' b:'b' c:'c' { return [a, b, c]; }",
options
options,
);

expect( parser ).to.parse( "abc", [ "a", "b", "c" ] );
@@ -1555,7 +1555,7 @@ describe( "generated parser behavior", function () {

const parser = peg.generate(
"start = a:'a' ('b' { return a; })",
options
options,
);

expect( parser ).to.parse( "ab", [ "a", "a" ] );
@@ -1566,7 +1566,7 @@ describe( "generated parser behavior", function () {

const parser = peg.generate(
"start = 'a' b:('b' { return b; }) c:'c'",
options
options,
);

expect( parser ).to.failToParse( "abc" );
@@ -1577,7 +1577,7 @@ describe( "generated parser behavior", function () {

const parser = peg.generate(
"start = ('a' { return b; }) b:'b'",
options
options,
);

expect( parser ).to.failToParse( "ab" );
@@ -1620,7 +1620,7 @@ describe( "generated parser behavior", function () {

const parser = peg.generate(
"start = 'a' { return options; }",
options
options,
);

expect( parser ).to.parse( "a", { a: 42 }, { a: 42 } );
@@ -1631,7 +1631,7 @@ describe( "generated parser behavior", function () {

const parser = peg.generate(
"start = 'a' { return text(); }",
options
options,
);

expect( parser ).to.parse( "a", "a" );
@@ -1673,7 +1673,7 @@ describe( "generated parser behavior", function () {

const parser = peg.generate(
"start = 'a' { expected('a'); }",
options
options,
);

expect( parser ).to.failToParse( "a", {
@@ -1719,7 +1719,7 @@ describe( "generated parser behavior", function () {

const parser = peg.generate(
"start = 'a' { error('a'); }",
options
options,
);

expect( parser ).to.failToParse( "a", {
@@ -1777,7 +1777,7 @@ describe( "generated parser behavior", function () {

const parser = peg.generate(
"start = 'a' { throw 'Boom!'; } / 'b'",
options
options,
);

expect( parser ).to.parse( "b" );
@@ -2195,7 +2195,7 @@ describe( "generated parser behavior", function () {
expect( parser ).to.parse( "(*(**)*)", "(*(**)*)" );
expect( parser ).to.parse(
"(*abc(*def*)ghi(*(*(*jkl*)*)*)mno*)",
"(*abc(*def*)ghi(*(*(*jkl*)*)*)mno*)"
"(*abc(*def*)ghi(*(*(*jkl*)*)*)mno*)",
);

} );


+ 27
- 29
test/unit/compiler/passes/generate-bytecode.spec.js View File

@@ -1,5 +1,3 @@
/* eslint-disable function-call-argument-newline */

"use strict";

const chai = require( "chai" );
@@ -63,7 +61,7 @@ describe( "compiler pass |generateBytecode|", function () {
{ type: "literal", value: "b", ignoreCase: false },
{ type: "literal", value: "c", ignoreCase: false },
],
[]
[],
) );

} );
@@ -119,19 +117,19 @@ describe( "compiler pass |generateBytecode|", function () {
[],
[],
[ { type: "rule", value: "start" } ],
[]
[],
) );
expect( pass ).to.changeAST( grammar2, constsDetails(
[ "a" ],
[],
[ { type: "rule", value: "start" } ],
[]
[],
) );
expect( pass ).to.changeAST( grammar3, constsDetails(
[],
[ { value: [ "a" ], inverted: false, ignoreCase: false } ],
[ { type: "rule", value: "start" } ],
[]
[],
) );

} );
@@ -209,7 +207,7 @@ describe( "compiler pass |generateBytecode|", function () {
[ "a" ],
[],
[ { type: "literal", value: "a", ignoreCase: false } ],
[ { predicate: false, params: [], body: " code " } ]
[ { predicate: false, params: [], body: " code " } ],
) );

} );
@@ -239,7 +237,7 @@ describe( "compiler pass |generateBytecode|", function () {
[ "a" ],
[],
[ { type: "literal", value: "a", ignoreCase: false } ],
[ { predicate: false, params: [ "a" ], body: " code " } ]
[ { predicate: false, params: [ "a" ], body: " code " } ],
) );

} );
@@ -285,7 +283,7 @@ describe( "compiler pass |generateBytecode|", function () {
{ type: "literal", value: "b", ignoreCase: false },
{ type: "literal", value: "c", ignoreCase: false },
],
[ { predicate: false, params: [ "a", "b", "c" ], body: " code " } ]
[ { predicate: false, params: [ "a", "b", "c" ], body: " code " } ],
) );

} );
@@ -333,7 +331,7 @@ describe( "compiler pass |generateBytecode|", function () {
{ type: "literal", value: "b", ignoreCase: false },
{ type: "literal", value: "c", ignoreCase: false },
],
[]
[],
) );

} );
@@ -441,7 +439,7 @@ describe( "compiler pass |generateBytecode|", function () {
[ "a" ],
[],
[ { type: "literal", value: "a", ignoreCase: false } ],
[]
[],
) );

} );
@@ -476,7 +474,7 @@ describe( "compiler pass |generateBytecode|", function () {
[ "a" ],
[],
[ { type: "literal", value: "a", ignoreCase: false } ],
[]
[],
) );

} );
@@ -504,7 +502,7 @@ describe( "compiler pass |generateBytecode|", function () {
[ "a" ],
[],
[ { type: "literal", value: "a", ignoreCase: false } ],
[]
[],
) );

} );
@@ -534,7 +532,7 @@ describe( "compiler pass |generateBytecode|", function () {
[ "a" ],
[],
[ { type: "literal", value: "a", ignoreCase: false } ],
[]
[],
) );

} );
@@ -568,7 +566,7 @@ describe( "compiler pass |generateBytecode|", function () {
[ "a" ],
[],
[ { type: "literal", value: "a", ignoreCase: false } ],
[]
[],
) );

} );
@@ -593,7 +591,7 @@ describe( "compiler pass |generateBytecode|", function () {
[ "a" ],
[],
[ { type: "literal", value: "a", ignoreCase: false } ],
[]
[],
) );

} );
@@ -624,7 +622,7 @@ describe( "compiler pass |generateBytecode|", function () {

expect( pass ).to.changeAST(
grammar,
constsDetails( [], [], [], [ { predicate: true, params: [], body: " code " } ] )
constsDetails( [], [], [], [ { predicate: true, params: [], body: " code " } ] ),
);

} );
@@ -681,7 +679,7 @@ describe( "compiler pass |generateBytecode|", function () {
{ type: "literal", value: "b", ignoreCase: false },
{ type: "literal", value: "c", ignoreCase: false },
],
[ { predicate: true, params: [ "a", "b", "c" ], body: " code " } ]
[ { predicate: true, params: [ "a", "b", "c" ], body: " code " } ],
) );

} );
@@ -714,7 +712,7 @@ describe( "compiler pass |generateBytecode|", function () {

expect( pass ).to.changeAST(
grammar,
constsDetails( [], [], [], [ { predicate: true, params: [], body: " code " } ] )
constsDetails( [], [], [], [ { predicate: true, params: [], body: " code " } ] ),
);

} );
@@ -771,7 +769,7 @@ describe( "compiler pass |generateBytecode|", function () {
{ type: "literal", value: "b", ignoreCase: false },
{ type: "literal", value: "c", ignoreCase: false },
],
[ { predicate: true, params: [ "a", "b", "c" ], body: " code " } ]
[ { predicate: true, params: [ "a", "b", "c" ], body: " code " } ],
) );

} );
@@ -845,7 +843,7 @@ describe( "compiler pass |generateBytecode|", function () {
[ "a" ],
[],
[ { type: "literal", value: "a", ignoreCase: false } ],
[]
[],
) );

} );
@@ -873,7 +871,7 @@ describe( "compiler pass |generateBytecode|", function () {
[ "a" ],
[],
[ { type: "literal", value: "A", ignoreCase: true } ],
[]
[],
) );

} );
@@ -975,7 +973,7 @@ describe( "compiler pass |generateBytecode|", function () {
[],
[ { value: [ "a" ], inverted: false, ignoreCase: false } ],
[ { type: "class", value: [ "a" ], inverted: false, ignoreCase: false } ],
[]
[],
) );

} );
@@ -990,7 +988,7 @@ describe( "compiler pass |generateBytecode|", function () {
[],
[ { value: [ "a" ], inverted: true, ignoreCase: false } ],
[ { type: "class", value: [ "a" ], inverted: true, ignoreCase: false } ],
[]
[],
) );

} );
@@ -1005,7 +1003,7 @@ describe( "compiler pass |generateBytecode|", function () {
[],
[ { value: [ "a" ], inverted: false, ignoreCase: true } ],
[ { type: "class", value: [ "a" ], inverted: false, ignoreCase: true } ],
[]
[],
) );

} );
@@ -1033,7 +1031,7 @@ describe( "compiler pass |generateBytecode|", function () {
ignoreCase: false,
},
],
[]
[],
) );

} );
@@ -1098,7 +1096,7 @@ describe( "compiler pass |generateBytecode|", function () {
},
],
[],
[]
[],
), {}, { reportFailures: false } );

} );
@@ -1130,7 +1128,7 @@ describe( "compiler pass |generateBytecode|", function () {

expect( pass ).to.changeAST(
grammar,
constsDetails( [], [], [ { type: "any" } ], [] )
constsDetails( [], [], [ { type: "any" } ], [] ),
);

} );
@@ -1157,7 +1155,7 @@ describe( "compiler pass |generateBytecode|", function () {
grammar,
constsDetails( [], [], [], [] ),
{},
{ reportFailures: false }
{ reportFailures: false },
);

} );


+ 3
- 3
test/unit/compiler/passes/helpers.js View File

@@ -67,7 +67,7 @@ module.exports = function ( chai, utils ) {
"expected #{this} to report an error but it didn't",
"expected #{this} to not report an error but #{act} was reported",
null,
result
result,
);

if ( ! passed && typeof props !== "undefined" ) {
@@ -118,7 +118,7 @@ module.exports = function ( chai, utils ) {
`expected #{this} to report ${ warningsCount } warnings, but it reported ${ messagesCount } warnings`,
`expected #{this} to not report ${ warningsCount } warnings`,
warnings,
messages
messages,
);

warnings.forEach( warning => {
@@ -127,7 +127,7 @@ module.exports = function ( chai, utils ) {
messages.indexOf( warning ) !== -1,
"expected #{this} to report the warning #{exp}, but it didn't",
"expected #{this} to not report the warning #{exp}",
warning
warning,
);

} );


+ 3
- 3
test/unit/compiler/passes/inference-match-result.spec.js View File

@@ -141,19 +141,19 @@ describe( "compiler pass |inferenceMatchResult|", function () {
[ "start = end", "end = . " ].join( "\n" ),
{ rules: [ { match: 0 }, { match: 0 } ] },
{},
{}
{},
);
expect( pass ).to.changeAST(
[ "start = end", "end = ''" ].join( "\n" ),
{ rules: [ { match: 1 }, { match: 1 } ] },
{},
{}
{},
);
expect( pass ).to.changeAST(
[ "start = end", "end = []" ].join( "\n" ),
{ rules: [ { match: -1 }, { match: -1 } ] },
{},
{}
{},
);

expect( pass ).to.changeAST( "start = . start", { rules: [ { match: 0 } ] }, {}, {} );


+ 2
- 2
test/unit/compiler/passes/remove-proxy-rules.spec.js View File

@@ -29,7 +29,7 @@ describe( "compiler pass |removeProxyRules|", function () {
{ name: "proxied" },
],
},
{ allowedStartRules: [ "start" ] }
{ allowedStartRules: [ "start" ] },
);

} );
@@ -59,7 +59,7 @@ describe( "compiler pass |removeProxyRules|", function () {
{ name: "proxied" },
],
},
{ allowedStartRules: [ "start", "proxy" ] }
{ allowedStartRules: [ "start", "proxy" ] },
);

} );


+ 1
- 1
test/unit/compiler/passes/report-undefined-rules.spec.js View File

@@ -31,7 +31,7 @@ describe( "compiler pass |reportUndefinedRules|", function () {
},
{
allowedStartRules: [ "missing" ],
}
},
);

} );


+ 3
- 3
test/unit/compiler/passes/report-unused-rules.spec.js View File

@@ -17,7 +17,7 @@ describe( "compiler pass |reportUnusedRules|", function () {
start = .
unused = .
`,
`Rule "unused" is not referenced.`
`Rule "unused" is not referenced.`,
);

expect( pass ).to.reportWarning(
@@ -29,7 +29,7 @@ describe( "compiler pass |reportUnusedRules|", function () {
[
`Rule "used" is not referenced.`,
`Rule "unused" is not referenced.`,
]
],
);

} );
@@ -56,7 +56,7 @@ describe( "compiler pass |reportUnusedRules|", function () {
null,
{
allowedStartRules: [ "b", "c" ],
}
},
);

} );


+ 35
- 35
test/unit/parser.spec.js View File

@@ -24,7 +24,7 @@ function varyParserOptions( block ) {

describe(
"with options " + chai.util.inspect( variant ),
() => block( variant )
() => block( variant ),
);

} );
@@ -103,7 +103,7 @@ describe( "PEG.js grammar parser", function () {
function actionGrammar( code ) {

return oneRuleGrammar(
{ type: "action", expression: literalAbcd, code: code }
{ type: "action", expression: literalAbcd, code: code },
);

}
@@ -111,7 +111,7 @@ describe( "PEG.js grammar parser", function () {
function literalGrammar( value, ignoreCase ) {

return oneRuleGrammar(
{ type: "literal", value: value, ignoreCase: ignoreCase }
{ type: "literal", value: value, ignoreCase: ignoreCase },
);

}
@@ -260,7 +260,7 @@ describe( "PEG.js grammar parser", function () {
"expected #{this} to not parse as #{exp}",
expected,
result,
! utils.flag( this, "negate" )
! utils.flag( this, "negate" ),
);

} );
@@ -292,7 +292,7 @@ describe( "PEG.js grammar parser", function () {
"expected #{this} to fail to parse but got #{act}",
"expected #{this} to not fail to parse but it failed with #{act}",
null,
result
result,
);

if ( ! passed && typeof props !== "undefined" ) {
@@ -340,13 +340,13 @@ describe( "PEG.js grammar parser", function () {
it( "parses Grammar", function () {

expect( "\na = 'abcd';\n" ).to.parseAs(
{ type: "grammar", comments: null, initializer: null, rules: [ ruleA ] }
{ type: "grammar", comments: null, initializer: null, rules: [ ruleA ] },
);
expect( "\na = 'abcd';\nb = 'efgh';\nc = 'ijkl';\n" ).to.parseAs(
{ type: "grammar", comments: null, initializer: null, rules: [ ruleA, ruleB, ruleC ] }
{ type: "grammar", comments: null, initializer: null, rules: [ ruleA, ruleB, ruleC ] },
);
expect( "\n{ code };\na = 'abcd';\n" ).to.parseAs(
{ type: "grammar", comments: null, initializer: initializer, rules: [ ruleA ] }
{ type: "grammar", comments: null, initializer: initializer, rules: [ ruleA ] },
);

} );
@@ -355,7 +355,7 @@ describe( "PEG.js grammar parser", function () {
it( "parses Initializer", function () {

expect( "{ code };start = 'abcd'" ).to.parseAs(
{ type: "grammar", comments: null, initializer: initializer, rules: [ ruleStart ] }
{ type: "grammar", comments: null, initializer: initializer, rules: [ ruleStart ] },
);

} );
@@ -364,10 +364,10 @@ describe( "PEG.js grammar parser", function () {
it( "parses Rule", function () {

expect( "start\n=\n'abcd';" ).to.parseAs(
oneRuleGrammar( literalAbcd )
oneRuleGrammar( literalAbcd ),
);
expect( "start\n'start rule'\n=\n'abcd';" ).to.parseAs(
oneRuleGrammar( named )
oneRuleGrammar( named ),
);

} );
@@ -376,7 +376,7 @@ describe( "PEG.js grammar parser", function () {
it( "parses Expression", function () {

expect( "start = 'abcd' / 'efgh' / 'ijkl'" ).to.parseAs(
oneRuleGrammar( choice )
oneRuleGrammar( choice ),
);

} );
@@ -385,15 +385,15 @@ describe( "PEG.js grammar parser", function () {
it( "parses ChoiceExpression", function () {

expect( "start = 'abcd' { code }" ).to.parseAs(
oneRuleGrammar( actionAbcd )
oneRuleGrammar( actionAbcd ),
);
expect( "start = 'abcd' { code }\n/\n'efgh' { code }" ).to.parseAs(
oneRuleGrammar( choice2 )
oneRuleGrammar( choice2 ),
);
expect(
"start = 'abcd' { code }\n/\n'efgh' { code }\n/\n'ijkl' { code }\n/\n'mnop' { code }"
"start = 'abcd' { code }\n/\n'efgh' { code }\n/\n'ijkl' { code }\n/\n'mnop' { code }",
).to.parseAs(
oneRuleGrammar( choice4 )
oneRuleGrammar( choice4 ),
);

} );
@@ -402,10 +402,10 @@ describe( "PEG.js grammar parser", function () {
it( "parses ActionExpression", function () {

expect( "start = 'abcd' 'efgh' 'ijkl'" ).to.parseAs(
oneRuleGrammar( sequence )
oneRuleGrammar( sequence ),
);
expect( "start = 'abcd' 'efgh' 'ijkl'\n{ code }" ).to.parseAs(
oneRuleGrammar( actionSequence )
oneRuleGrammar( actionSequence ),
);

} );
@@ -414,13 +414,13 @@ describe( "PEG.js grammar parser", function () {
it( "parses SequenceExpression", function () {

expect( "start = a:'abcd'" ).to.parseAs(
oneRuleGrammar( labeledAbcd )
oneRuleGrammar( labeledAbcd ),
);
expect( "start = a:'abcd'\nb:'efgh'" ).to.parseAs(
oneRuleGrammar( sequence2 )
oneRuleGrammar( sequence2 ),
);
expect( "start = a:'abcd'\nb:'efgh'\nc:'ijkl'\nd:'mnop'" ).to.parseAs(
oneRuleGrammar( sequence4 )
oneRuleGrammar( sequence4 ),
);

} );
@@ -448,22 +448,22 @@ describe( "PEG.js grammar parser", function () {
}

expect( "start = @'abcd'" ).to.parseAs(
$S( $P( null, literalAbcd ) )
$S( $P( null, literalAbcd ) ),
);
expect( "start = @a:'abcd'" ).to.parseAs(
$S( $P( "a", literalAbcd ) )
$S( $P( "a", literalAbcd ) ),
);
expect( "start = 'abcd' @'efgh'" ).to.parseAs(
$S( literalAbcd, $P( null, literalEfgh ) )
$S( literalAbcd, $P( null, literalEfgh ) ),
);
expect( "start = a:'abcd' @b:'efgh'" ).to.parseAs(
$S( labeledAbcd, $P( "b", literalEfgh ) )
$S( labeledAbcd, $P( "b", literalEfgh ) ),
);
expect( "start = @'abcd' b:'efgh'" ).to.parseAs(
$S( $P( null, literalAbcd ), labeledEfgh )
$S( $P( null, literalAbcd ), labeledEfgh ),
);
expect( "start = a:'abcd' @'efgh' 'ijkl' @d:'mnop'" ).to.parseAs(
$S( labeledAbcd, $P( null, literalEfgh ), literalIjkl, $P( "d", literalMnop ) )
$S( labeledAbcd, $P( null, literalEfgh ), literalIjkl, $P( "d", literalMnop ) ),
);

} );
@@ -723,30 +723,30 @@ describe( "PEG.js grammar parser", function () {
it( "parses CharacterClassMatcher", function () {

expect( "start = []" ).to.parseAs(
classGrammar( [], false, false )
classGrammar( [], false, false ),
);
expect( "start = [a-d]" ).to.parseAs(
classGrammar( [ [ "a", "d" ] ], false, false )
classGrammar( [ [ "a", "d" ] ], false, false ),
);
expect( "start = [a]" ).to.parseAs(
classGrammar( [ "a" ], false, false )
classGrammar( [ "a" ], false, false ),
);
expect( "start = [a-de-hi-l]" ).to.parseAs(
classGrammar(
[ [ "a", "d" ], [ "e", "h" ], [ "i", "l" ] ],
false,
false
)
false,
),
);
expect( "start = [^a-d]" ).to.parseAs(
classGrammar( [ [ "a", "d" ] ], true, false )
classGrammar( [ [ "a", "d" ] ], true, false ),
);
expect( "start = [a-d]i" ).to.parseAs(
classGrammar( [ [ "a", "d" ] ], false, true )
classGrammar( [ [ "a", "d" ] ], false, true ),
);

expect( "start = [\\\n]" ).to.parseAs(
classGrammar( [], false, false )
classGrammar( [], false, false ),
);

} );


+ 3
- 3
tools/benchmark/browser.stub.js View File

@@ -98,7 +98,7 @@ $( "#run" ).click( () => {
test.title,
`https://github.com/pegjs/pegjs/blob/${ BRANCH }/tools/benchmark/${ benchmark.id }/${ test.file }`,
inputSize,
parseTime
parseTime,
);

},
@@ -122,7 +122,7 @@ $( "#run" ).click( () => {
benchmark.title + " total",
null,
inputSize,
parseTime
parseTime,
);

},
@@ -143,7 +143,7 @@ $( "#run" ).click( () => {
"Total",
null,
inputSize,
parseTime
parseTime,
);

$.scrollTo( "max", { axis: "y", duration: 500 } );


+ 1
- 1
tools/benchmark/index.js View File

@@ -68,7 +68,7 @@ function writeResult( title, inputSize, parseTime ) {
padLeft( parseTime.toFixed( 2 ), 7 ) +
" ms │ " +
padLeft( ( ( inputSize / KB ) / ( parseTime / MS_IN_S ) ).toFixed( 2 ), 7 ) +
" kB/s │"
" kB/s │",
);

}


+ 2
- 2
tools/benchmark/runner.js View File

@@ -70,7 +70,7 @@ const Runner = {

state.parser = peg.generate(
callbacks.readFile( "examples/" + benchmark.id + ".pegjs" ),
options
options,
);
state.benchmarkInputSize = 0;
state.benchmarkParseTime = 0;
@@ -113,7 +113,7 @@ const Runner = {
callbacks.benchmarkFinish(
benchmark,
state.benchmarkInputSize,
state.benchmarkParseTime
state.benchmarkParseTime,
);

state.totalInputSize += state.benchmarkInputSize;


+ 1
- 1
tools/impact/index.js View File

@@ -73,7 +73,7 @@ function runBenchmark() {

// Trim the whitespaces and remove ` kB/s` from the end
.trim()
.slice( 0, -5 )
.slice( 0, -5 ),
);

}


Loading…
Cancel
Save