Pegjs: рдЦреВрдВрдЯреА рдкрд╛рд░реНрд╕рд░ рд╕реЗ рд╡реНрдпрд╛рдХрд░рдг рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 5 рдЬреБрд▓ре░ 2019  ┬╖  1рдЯрд┐рдкреНрдкрдгреА  ┬╖  рд╕реНрд░реЛрдд: pegjs/pegjs

рдкреНрд░рд╢реНрди

рдХреНрдпрд╛ рдХрд┐рд╕реА рдиреЗ рдЦреВрдВрдЯреА рдХреЗ рдЖрдЙрдЯрдкреБрдЯ рдХреЛ рд╡рд╛рдкрд╕ рдЗрдирдкреБрдЯ рд╡реНрдпрд╛рдХрд░рдг рдореЗрдВ рдмрджрд▓рдиреЗ рдХрд╛ рдХрд╛рдо рдХрд┐рдпрд╛ рд╣реИ?

рд╡рд┐рд╡рд░рдг

рдореБрдЭреЗ рд╣рд╛рд▓ рд╣реА рдореЗрдВ рдПрдХ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓рд╛ рд╣реИ рдЬреЛ рдкреАрдИрдЬреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдкреАрдИрдЬреА рдкрд╛рд░реНрд╕рд░ рд╣реИ рд▓реЗрдХрд┐рди рд╕реНрд░реЛрдд рд╡реНрдпрд╛рдХрд░рдг рдЦреЛ рдЧрдпрд╛ рд╣реИ рдпрд╛ рдЧрд╛рдпрдм рд╣реИред рдХреНрдпрд╛ рдХреЗрд╡рд▓ рдкреАрдИрдЬреА рдкрд╛рд░реНрд╕рд░ рдХреЛрдб рд╕реЗ рд╡реНрдпрд╛рдХрд░рдг рдХреЛ рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ?

рдкреНрд░рдЬрдирди рдХреЗ рдЪрд░рдг

  1. рдПрдХ рдкреЗрдЧ рдкрд╛рд░реНрд╕рд░ рджрд┐рдпрд╛ рдЧрдпрд╛
  2. рд╕реНрд░реЛрдд рд╡реНрдпрд╛рдХрд░рдг рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ

рд╕реЙрдлреНрдЯрд╡реЗрдпрд░

  • рдЦреВрдВрдЯреА.рдЬреЗрдПрд╕: 0.10.0
  • Node.js: 12.6.0

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╣рд╛рде рд╕реЗ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рд╕реАрдзреА рд╣реИред

  • рдкреНрд░рддреНрдпреЗрдХ рдирд┐рдпрдо рдПрдХ рдлрд╝рдВрдХреНрд╢рди рд╣реИ рдЬреЛ peg$parse рд╕реЗ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИред
  • рд╣рд░ рдПрдХ
} else {
    peg$currPos = s#;
    s# = peg$FAILED;
}

рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдХреНрд░рдо рдореЗрдВ рдПрдХ рд╡рд╕реНрддреБ рдереАред

  • рдкреНрд░рддреНрдпреЗрдХ while (s# !== peg$FAILED) рдПрдХ рджреЛрд╣рд░рд╛рд╡ рд╣реИред
  • рдкреНрд░рддреНрдпреЗрдХ if (s# === peg$FAILED) рдПрдХ рдкрд╕рдВрдж рдХреА рд╡реИрдХрд▓реНрдкрд┐рдХ рд╢рд╛рдЦрд╛ рд╣реИред

>рд╕рднреА рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╣рд╛рде рд╕реЗ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рд╕реАрдзреА рд╣реИред

  • рдкреНрд░рддреНрдпреЗрдХ рдирд┐рдпрдо рдПрдХ рдлрд╝рдВрдХреНрд╢рди рд╣реИ рдЬреЛ peg$parse рд╕реЗ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИред
  • рд╣рд░ рдПрдХ
} else {
    peg$currPos = s#;
    s# = peg$FAILED;
}

рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдХреНрд░рдо рдореЗрдВ рдПрдХ рд╡рд╕реНрддреБ рдереАред

  • рдкреНрд░рддреНрдпреЗрдХ while (s# !== peg$FAILED) рдПрдХ рджреЛрд╣рд░рд╛рд╡ рд╣реИред
  • рдкреНрд░рддреНрдпреЗрдХ if (s# === peg$FAILED) рдПрдХ рдкрд╕рдВрдж рдХреА рд╡реИрдХрд▓реНрдкрд┐рдХ рд╢рд╛рдЦрд╛ рд╣реИред
рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

Coffee2CodeNL picture Coffee2CodeNL  ┬╖  13рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

alanmimms picture alanmimms  ┬╖  10рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

vldmr1986 picture vldmr1986  ┬╖  12рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

dmajda picture dmajda  ┬╖  7рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

mattkanwisher picture mattkanwisher  ┬╖  5рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ