PASS: 0 failures. Peggy Version: undefined
  • generated parser API

    • parse

      • parses input2ms

        const e=t.generate("start = 'a'");o(e.parse("a")).to.equal("a")
      • parses input in library mode1ms

        const e=t.generate("start = 'a'").parse("a",{peg$library:!0});o(e.peg$result).to.equal("a"),o(e.peg$success).to.equal(!0),o(e.peg$throw).to.equal(void 0)
      • throws an exception on syntax error3ms

        const e=t.generate("start = 'a'");o(()=>{e.parse("b")}).to.throw()
      • gives partial result on syntax error in library mode2ms

        const e=t.generate("start = 'a'+").parse("aab",{peg$library:!0});o(e.peg$result).to.deep.equal(["a","a"]),o(e.peg$success).to.equal(!1),o(e.peg$throw).to.throw('Expected "a" or end of input but "b" found.')
      • correctly describe character class in syntax error2ms

        const e=t.generate("start = [123-5]");o(()=>{e.parse("0")}).to.throw("[123-5]")
      • accepts custom options1ms

        t.generate("start = 'a'").parse("a",{foo:42})
      • start rule

      • tracing

        • default tracer

          • traces using console.log (if console is defined)1ms

            const t=["1:1-1:1 rule.enter start","1:1-1:1 rule.enter   a","1:1-1:1 rule.fail    a","1:1-1:1 rule.enter   b","1:1-1:2 rule.match   b","1:1-1:2 rule.match start"];"object"==typeof console&&a(console,"log");try{e.parse("b"),"object"==typeof console&&(o(console.log.callCount).to.equal(t.length),t.forEach((e,t)=>{const r=console.log.getCall(t);o(r.calledWithExactly(e)).to.equal(!0)}))}finally{"object"==typeof console&&console.log.restore()}
        • custom tracers

          • trace

            • receives tracing events1ms

              const t=[{type:"rule.enter",rule:"start",location:{source:void 0,start:{offset:0,line:1,column:1},end:{offset:0,line:1,column:1}}},{type:"rule.enter",rule:"a",location:{source:void 0,start:{offset:0,line:1,column:1},end:{offset:0,line:1,column:1}}},{type:"rule.fail",rule:"a",location:{source:void 0,start:{offset:0,line:1,column:1},end:{offset:0,line:1,column:1}}},{type:"rule.enter",rule:"b",location:{source:void 0,start:{offset:0,line:1,column:1},end:{offset:0,line:1,column:1}}},{type:"rule.match",rule:"b",result:"b",location:{source:void 0,start:{offset:0,line:1,column:1},end:{offset:1,line:1,column:2}}},{type:"rule.match",rule:"start",result:"b",location:{source:void 0,start:{offset:0,line:1,column:1},end:{offset:1,line:1,column:2}}}],a={trace:r()};e.parse("b",{tracer:a}),o(a.trace.callCount).to.equal(t.length),t.forEach((e,t)=>{const r=a.trace.getCall(t);o(r.calledWithExactly(e)).to.equal(!0)})