Pegjs: рдкреВрд░реНрдг рдпреВрдирд┐рдХреЛрдб рд╕рдорд░реНрдерди, рдЕрд░реНрдерд╛рддреН рдмреАрдПрдордкреА рдХреЗ рдмрд╛рд╣рд░ рдХреЛрдбрдкреЙрдЗрдВрдЯ рдХреЗ рд▓рд┐рдП

рдХреЛ рдирд┐рд░реНрдорд┐рдд 22 рдЕрдХреНрддреВре░ 2018  ┬╖  15рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: pegjs/pegjs

рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдкреНрд░рдХрд╛рд░

  • рдмрдЧ рд░рд┐рдкреЛрд░реНрдЯ: рд╣рд╛рдБ
  • рдлрд╝реАрдЪрд░ рдЕрдиреБрд░реЛрдз: рдереЛрдбрд╝реЗ
  • рдкреНрд░рд╢реНрди: рдирд╣реАрдВ
  • рдХреЛрдИ рдореБрджреНрджрд╛ рдирд╣реАрдВ

рдЖрд╡рд╢реНрдпрдХ рд╢рд░реНрддреЗрдВ

  • рдХреНрдпрд╛ рдЖрдк рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдкреБрди: рдкреЗрд╢ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ ?: рд╣рд╛рдБ
  • рдХреНрдпрд╛ рдЖрдкрдиреЗ рднрдВрдбрд╛рд░ рдХреЗ рдореБрджреНрджреЛрдВ рдХреА рдЦреЛрдЬ рдХреА ?: рд╣рд╛рдБ
  • рдХреНрдпрд╛ рдЖрдкрдиреЗ рдордВрдЪреЛрдВ рдХреА рдЬрд╛рдБрдЪ рдХреА ?: рд╣рд╛рдБ
  • рдХреНрдпрд╛ рдЖрдкрдиреЗ рд╡реЗрдм рдЦреЛрдЬ рдХреА рдереА (рдЧреВрдЧрд▓, рдпрд╛рд╣реВ, рдЖрджрд┐) ?: рд╣рд╛рдБ

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

рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ, рдХреБрдЫ рдХрд╕реНрдЯрдо рдмреЙрдпрд▓рд░рдкреНрд▓реЗрдЯ рдХреЗ рдмрд┐рдирд╛, рдмреАрдПрдордкреА рдХреЗ рдмрд╛рд╣рд░ рдпреВрдирд┐рдХреЛрдб рд╡рд░реНрдгреЛрдВ/рдХреЛрдбрдкреЙрдЗрдВрдЯреНрд╕ рд╕реЗ рдареАрдХ рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдореЗрдВ рдЕрд╕рдорд░реНрде рд╣реИ, рдпрд╛рдиреА, рдЬрд┐рдирдХреЗ рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП 16 рдмрд┐рдЯреНрд╕ рд╕реЗ рдЕрдзрд┐рдХ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╕реАрдорд╛ PEG.js рдкрд░ рд▓рд╛рдЧреВ рд╣реЛрддреА рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред

рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, рдореИрдВ [\u1D400-\u1D419] (рдЬреЛ рд╡рд░реНрддрдорд╛рди рдореЗрдВ [с╡А0-с╡Б9] рдореЗрдВ рдмрджрд▓ рдЬрд╛рддрд╛ рд╣реИ) рдпрд╛ рд╕рдордХрдХреНрд╖ [ЁЭРА-ЁЭРЩ] (рдЬреЛ "рдЕрдорд╛рдиреНрдп рд╡рд░реНрдг рд╢реНрд░реЗрдгреА" рдлреЗрдВрдХрддрд╛ рд╣реИ) рдЬреИрд╕реА рд╢реНрд░реЗрдгрд┐рдпрд╛рдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рддреНрд░реБрдЯрд┐)ред (рдФрд░ рдирдП ES6 рдиреЛрдЯреЗрд╢рди [\u{1D400}-\u{1D419}] рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдирд┐рдореНрди рддреНрд░реБрдЯрд┐ рд╣реЛрддреА рд╣реИ: SyntaxError: Expected "!", "$", "&", "(", ".", character class, comment, end of line, identifier, literal, or whitespace but "[" found. ред)

рдХреНрдпрд╛ рдЗрд╕ рдХрд╛рд░реНрдп рдХреЛ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП PEG.js рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ?

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

  1. рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рд╡реНрдпрд╛рдХрд░рдг рд╕реЗ рдПрдХ рдкрд╛рд░реНрд╕рд░ рдЙрддреНрдкрдиреНрди рдХрд░реЗрдВред
  2. рдХрд┐рд╕реА рдЪреАрдЬрд╝ рдХреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЕрдиреБрд░реВрдк рдмрдирд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░реЗрдВред

рдЙрджрд╛рд╣рд░рдг рдХреЛрдб:

рдпрд╣ рд╡реНрдпрд╛рдХрд░рдг:

//MathUpper = [ЁЭРА-ЁЭРЩ]+
MathUpperEscaped = [\u1D400-\u1D419]+

рдЕрдкреЗрдХреНрд╖рд┐рддреН рд╡реНрдпрд╡рд╣рд╛рд░:

рджрд┐рдП рдЧрдП рд╡реНрдпрд╛рдХрд░рдг рд╕реЗ рдЙрддреНрдкрдиреНрди рдкрд╛рд░реНрд╕рд░ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдкрд╛рд░реНрд╕ рдХрд░рддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, "ЁЭРАЁЭРБЁЭРВ"ред

рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╡реНрдпрд╡рд╣рд╛рд░:

рдПрдХ рдкрд╛рд░реНрд╕ рддреНрд░реБрдЯрд┐: Line 1, column 1: Expected [с╡А0-с╡Б9] but " (рдпрд╛, рдЬрдм рдЕрдиреНрдп рдирд┐рдпрдо, рдПрдХ "рдЕрдорд╛рдиреНрдп рд╡рд░реНрдг рд╢реНрд░реЗрдгреА" рддреНрд░реБрдЯрд┐ рдЕрд╕рдореНрдмрджреНрдз рд╣реИред)

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

  • рдЦреВрдВрдЯреА.рдЬреЗрдПрд╕: 0.10.0
  • Node.js: рд▓рд╛рдЧреВ рдирд╣реАрдВред
  • рдПрдирдкреАрдПрдо рдпрд╛ рдпрд╛рд░реНрди: рд▓рд╛рдЧреВ рдирд╣реАрдВред
  • рдмреНрд░рд╛рдЙрдЬрд╝рд░: рдореЗрд░реЗ рджреНрд╡рд╛рд░рд╛ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдП рдЧрдП рд╕рднреА рдмреНрд░рд╛рдЙрдЬрд╝рд░ред
  • рдУрдПрд╕: рдореИрдХреЛрдЬрд╝ рдореЛрдЬрд╛рд╡реЗред
  • рд╕рдВрдкрд╛рджрдХ: рдореЗрд░реЗ рджреНрд╡рд╛рд░рд╛ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдП рдЧрдП рд╕рднреА рд╕рдВрдкрд╛рджрдХред
feature need-help task

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

рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдИрдорд╛рдирджрд╛рд░ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП, рдкреАрдИрдЬреА.рдЬреЗрдПрд╕ рд╡реНрдпрд╛рдХрд░рдг рдкрд╛рд░реНрд╕рд░ рдФрд░ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдпреВрдирд┐рдХреЛрдб рд╕рдорд░реНрдерди рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдореБрдЭреЗ рдпреВрдирд┐рдХреЛрдб рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╣реБрдд рдХрдо рдпрд╛ рдХреЛрдИ рдЬрд╛рдирдХрд╛рд░реА рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдореЗрдВ рдЕрд╕рдорд░реНрде рд╣реВрдВ (рдпрд╣ рджреЛрдиреЛрдВ рд╡реНрдпрд╛рдХрд░рдгреЛрдВ рдореЗрдВ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдХрд╣рд╛ рдЧрдпрд╛ рд╣реИ: _Non -рдмреАрдПрдордкреА рд╡рд░реНрдгреЛрдВ рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрдирджреЗрдЦрд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ_)ред

рдЕрднреА рдХреЗ рд▓рд┐рдП, рдЕрдзрд┐рдХ рдЬрд░реВрд░реА рд╡реНрдпрдХреНрддрд┐рдЧрдд рдФрд░ рдХрд╛рдо рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ (_PEG.js 0.x_ рд╕рд╣рд┐рдд) рдкрд░ рдХрд╛рдо рдХрд░рддреЗ рд╣реБрдП, рдореИрдВ рдХрд┐рд╕реА рдРрд╕реЗ рд╡реНрдпрдХреНрддрд┐ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦреВрдВрдЧрд╛ рдЬреЛ рдпреВрдирд┐рдХреЛрдб рдХреЛ рдХреБрдЫ рдкреАрдЖрд░ рдХреЗ рдХреА рдкреЗрд╢рдХрд╢ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмреЗрд╣рддрд░ рд╕рдордЭрддрд╛ рд╣реИ, рдпрд╛ рдЕрдВрддрддрдГ _PEG рдХреЗ рдмрд╛рдж рдЗрд╕рдХреЗ рдЖрд╕рдкрд╛рд╕ рдкрд╣реБрдВрдЪ рдЬрд╛рддрд╛ рд╣реИред рдЬреЗрдПрд╕ v1_, рдХреНрд╖рдорд╛ рдХрд░реЗрдВ рджреЛрд╕реНрддред

FYI рдХрд░реЗрдВ, рд╕рд░реЛрдЧреЗрдЯ рдЬреЛрдбрд╝реЗ рдХрд╛рдо рдХрд░рдиреЗ рд▓рдЧрддреЗ рд╣реИрдВред рд╡реНрдпрд╛рдХрд░рдг
start = result:[\uD83D\uDCA9]+ {return result.join('')}
рдкрд╛рд░реНрд╕ рдЬреЛ u+1F4A9 рд╣реИред рдкрд░рд┐рдгрд╛рдо рдкрд░ рдзреНрдпрд╛рди рджреЗрдВред рд╢рд╛рдорд┐рд▓ рд╣реЛрдВ ('') рд╕рд░реЛрдЧреЗрдЯ рдЬреЛрдбрд╝реА рдХреЛ рд╡рд╛рдкрд╕ рдПрдХ рд╕рд╛рде рд░рдЦрддрд╛ рд╣реИ, рдЕрдиреНрдпрдерд╛ рдЖрдкрдХреЛ рд╣реИрдВрдХреА рдХреЗ рдмрдЬрд╛рдп ['\uD83D','\uDCA9'] рдорд┐рд▓рддрд╛ рд╣реИред рд░реЗрдВрдЬ рд╕рдорд╕реНрдпрд╛рдЧреНрд░рд╕реНрдд рд╣реЛрдЧреАред
рд╕рд░реЛрдЧреЗрдЯ рдЬреЛрдбрд╝реЗ рдкрд░ рдЕрдзрд┐рдХ: https://en.wikipedia.org/wiki/UTF-16#U +010000_to_U+10FFFF

рдпрд╣ рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рдУрдкреА рдиреЗ рдЬреЛ рдорд╛рдВрдЧрд╛ рд╣реИ рдЙрд╕реЗ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред

@drewnolan рд╕рд┐рд░ рдКрдкрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж

рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ рд╡рд╣ рд╡реНрдпрд╛рдХрд░рдг \uD83D\uD83D рднреА рдкрд╛рд░реНрд╕ рдХрд░рддрд╛ рд╣реИред

рдЗрд╕ рдореБрджреНрджреЗ рдореЗрдВ рднрд╛рдЧ рд▓реЗрдиреЗ рд╡рд╛рд▓реЗ рдЕрдиреНрдп рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП: рдореИрдВ рднрд╛рдЧреНрдпрд╢рд╛рд▓реА рд╣реВрдВ рдХрд┐ рдореБрдЭреЗ рдХреЗрд╡рд▓ рдмреАрдПрдордкреА рдХреЗ рдмрд╛рд╣рд░ рдХреЛрдбрдкреЙрдЗрдВрдЯреНрд╕ рдХреЗ рдПрдХ рдЫреЛрдЯреЗ рд╕реЗ рд╕рдмрд╕реЗрдЯ рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдЙрдиреНрд╣реЗрдВ рдмреАрдПрдордкреА рдХреЗ рдирд┐рдЬреА рдЙрдкрдпреЛрдЧ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдореИрдк рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЗрд╕ рдореИрдкрд┐рдВрдЧ рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдФрд░ рдмрджрд▓рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рд╕рдорд╛рдкреНрдд рдХрд░ рджрд┐рдпрд╛ред .

рдпрд╣ рд╕рдорд╛рдзрд╛рди рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд╕рд╛рдорд╛рдиреНрдп рдорд╛рдорд▓реЗ рдореЗрдВ рд╕рдорд╕реНрдпрд╛рдУрдВ рд╕реЗ рднрд░рд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдореЗрд░реЗ рд╕рдорд╕реНрдпрд╛ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

@futagoza - рдореИрдВ рд╕рдордЭрд╛рдиреЗ рдХреА рдкреВрд░реА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛ред рдЖрдкрдХреЛ рдпрд╣рд╛рдВ рдХрдИ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝ рд░рд╣рд╛ рд╣реИред

  1. рдпреВрдирд┐рдХреЛрдб рдореЗрдВ рдПрдиреНрдХреЛрдбрд┐рдВрдЧ, рдиреЛрдЯреЗрд╢рди рдФрд░ рд░реЗрдВрдЬ рд╣реИрдВ

    1. рдпрд╣рд╛рдВ, рдЬреЛ рдЪреАрдЬреЗрдВ рдорд╛рдпрдиреЗ рд░рдЦрддреА рд╣реИрдВ рд╡реЗ рд╣реИрдВ "рд░реЗрдВрдЬ" - рдХреМрди рд╕реЗ рдЕрдХреНрд╖рд░ рд╕рдорд░реНрдерд┐рдд рд╣реИрдВ - рдФрд░ "рдиреЛрдЯреЗрд╢рди" - рд╡реЗ рдХреИрд╕реЗ рд▓рд┐рдЦреЗ рдЬрд╛рддреЗ рд╣реИрдВ

    2. рдпреЗ рд╕рдордп рдХреЗ рд╕рд╛рде рдмрджрд▓рддреЗ рд╣реИрдВред рдпреВрдирд┐рдХреЛрдб рд╕рдордп-рд╕рдордп рдкрд░ рдирдП рдЕрдХреНрд╖рд░ рдЬреЛрдбрд╝рддрд╛ рд╣реИ, рдЬреИрд╕реЗ рдХрд┐ рдЬрдм рдЙрдиреНрд╣реЛрдВрдиреЗ рдЗрдореЛрдЬреА рдпрд╛ рд╕рдВрдЧреАрдд рдиреЛрдЯреНрд╕ рдЬреЛрдбрд╝реЗ рдереЗ

  2. рдпреВрдирд┐рдХреЛрдб рдореЗрдВ "рдиреЛрдЯреЗрд╢рди" рд╣реИрдВред рдпреЗ utf-16 , ucs4 , рд╡рдЧреИрд░рд╣ рдЬреИрд╕реА рдЪреАрдЬреЗрдВ рд╣реИрдВред рдЗрд╕ рддрд░рд╣ рд╕реЗ codepoints , рдЬреЛ рдХрд┐ рдЗрдЪреНрдЫрд┐рдд рдбреЗрдЯрд╛ рд╣реИрдВ, рдмрд╛рдЗрдЯреНрд╕ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдиреНрдХреЛрдб рдХрд┐рдП рдЧрдП рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП utf-16-le рд╕реЗ рдЖрдк рдЕрдзрд┐рдХрд╛рдВрд╢ рдЕрдХреНрд╖рд░реЛрдВ рдХреЛ рджреЛ-рдмрд╛рдЗрдЯ рдЬреЛрдбрд╝реЗ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдиреНрдХреЛрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ code units рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди 0x10ffff рддрдХ рдХреЗ рдЙрдЪреНрдЪ рдореВрд▓реНрдп рд╡рд░реНрдгреЛрдВ рдХреЛ рд╡реНрдпрдХреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдб рдЗрдХрд╛рдЗрдпреЛрдВ рдХреЗ рд╕рдореВрд╣реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред

    1. рдореБрдЦреНрдп рд╕рдордЭ: рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрд╛рдлреА рдЕрдзрд┐рдХ рдирд╣реАрдВ рд╣реИред рдмрд╣реБрдд рд╕рд╛рд░реА рджрд┐рд▓рдЪрд╕реНрдк рдЪреАрдЬреЗрдВ, рдЬреИрд╕реЗ рдЗрдореЛрдЬреА, рдРрддрд┐рд╣рд╛рд╕рд┐рдХ рдЪреАрдиреА рдХреЗ рдмрдбрд╝реЗ рд╣рд┐рд╕реНрд╕реЗ, рдФрд░ рдЗрд╕ рдкреЛрд╕реНрдЯ рдХрд╛ рдореВрд▓ рдкреНрд░рд╢реНрди (рдмреНрд▓реИрдХрдмреЛрд░реНрдб рдЧрдгрд┐рдд рд╡рд░реНрдг) рдЙрд╕ рдкрдВрдХреНрддрд┐ рд╕реЗ рдКрдкрд░ рд╣реИрдВ



      1. рдЖрдИрдПрд╕рдУ рдФрд░ рдпреВрдирд┐рдХреЛрдб рдХрдВрд╕реЛрд░реНрдЯрд┐рдпрдо рд╕реНрдкрд╖реНрдЯ рд╣реИрдВ: рд╡реЗ рдЗрд╕реЗ рдХрднреА рдареАрдХ рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВ ред рдпрджрд┐ рдЖрдк рдЙрдЪреНрдЪ рд╡рд░реНрдг рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ utf-16 рд╕реЗ рдмрдбрд╝реЗ рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред



    2. рдореБрдЦреНрдп рд╕рдордЭ #2: рдХрдордмрдЦреНрдд рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдФрдкрдЪрд╛рд░рд┐рдХ рд░реВрдк рд╕реЗ utf16 рд╣реИ



      1. рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдпреВрдирд┐рдХреЛрдб рд╡рд░реНрдг рдореМрдЬреВрдж рд╣реИрдВ (рдЙрдирдореЗрдВ рд╕реЗ рдмрд╣реБрдд рд╕реЗ) рдЬреЛ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ


      2. рдУрдкреА рдЖрдкрд╕реЗ рдЗрд╕реЗ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣ рд░рд╣рд╛ рд╣реИ


      3. рдпрд╣ рд╕рдВрднрд╡ рд╣реИ рд▓реЗрдХрд┐рди рдЖрд╕рд╛рди рдирд╣реАрдВ рд╣реИ - рдЖрдкрдХреЛ рдпреВрдирд┐рдХреЛрдб рдкрд╛рд░реНрд╕рд┐рдВрдЧ рдПрд▓реНрдЧреЛрд░рд┐рдердо рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдЬреЛ рдкреНрд░рд╕рд┐рджреНрдз рд░реВрдк рд╕реЗ рдЪреВрд╣реЗ рдХрд╛ рдШреЛрдВрд╕рд▓рд╛ рд╣реИ



рдореБрдЭреЗ рднреА рдпрд╣реА рдЪрд╛рд╣рд┐рдП, рд▓реЗрдХрд┐рди рд╣рдХреАрдХрдд рдореЗрдВ рдРрд╕рд╛ рд╣реЛрдиреЗ рд╡рд╛рд▓рд╛ рдирд╣реАрдВ рд╣реИ

рдкрд╡рд┐рддреНрд░ рдмрдХрд╡рд╛рд╕, рдХрд┐рд╕реА рдиреЗ рд▓рдЧрднрдЧ рдПрдХ рд╕рд╛рд▓ рдкрд╣рд▓реЗ рдПрдХ рдкреВрд░реНрдг рд╕реНрдЯреНрд░рд┐рдВрдЧ рдкрд╛рд░реНрд╕рд░ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдХрд┐рдпрд╛ рдерд╛ , рдФрд░ рдЙрдиреНрд╣реЛрдВрдиреЗ рдУрд╡рд░рд╣реЗрдб рдХреЛ рдкрд╣рдЪрд╛рди рд▓рд┐рдпрд╛, рдЗрд╕рд▓рд┐рдП рдЙрдиреНрд╣реЛрдВрдиреЗ рд╣рдореЗрдВ рдЖрдорддреМрд░ рдкрд░ рдорд╛рдирдХ рдЬреЗрдПрд╕ рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рджрд┐рдпрд╛

рдпрд╣ рд╡рд┐рд▓рдп рдХреНрдпреЛрдВ рдирд╣реАрдВ рд╣реИ

@StoneCypher рдореБрдЭреЗ рддреБрдореНрд╣рд╛рд░реЗ рджрд┐рд▓ рдХреА рдЖрдЧ рдмрд╣реБрдд рдкрд╕рдВрдж рд╣реИ! рд▓реЗрдХрд┐рди рд╡рд░реНрддрдорд╛рди рдЕрдиреБрд░рдХреНрд╖рдХ рдХреЛ рдХрдард┐рди рд╕рдордп рдХреНрдпреЛрдВ рджреЗрдВ? рдХрд┐рд╕реА рдХрд╛ рдХреБрдЫ рдмрдХрд╛рдпрд╛ рдирд╣реАрдВ рд╣реИред рдЕрдкрдирд╛ рдХрд╛рдВрдЯрд╛ рдХреНрдпреЛрдВ рдирд╣реАрдВ рдмрдирд╛рдП рд░рдЦрддреЗ?

рдХреЛрдИ рд╡рд░реНрддрдорд╛рди рдЕрдиреБрд░рдХреНрд╖рдХ рдирд╣реАрдВ рд╣реИред рдЬрд┐рд╕ рд╡реНрдпрдХреНрддрд┐ рдиреЗ рдкреАрдИрдЬреА рдХрд╛ рдЕрдзрд┐рдЧреНрд░рд╣рдг рдХрд┐рдпрд╛ рд╣реИ, рдЙрд╕рдиреЗ рдХрднреА рдХреБрдЫ рдЬрд╛рд░реА рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИред рдЙрдиреНрд╣реЛрдВрдиреЗ рдЕрдЧрд▓реЗ рдирд╛рдмрд╛рд▓рд┐рдЧ рдкрд░ рддреАрди рд╕рд╛рд▓ рддрдХ рдХрд╛рдо рдХрд┐рдпрд╛, рдлрд┐рд░ рдХрд╣рд╛ рдХрд┐ рдЙрдиреНрд╣реЗрдВ рдпрд╣ рдкрд╕рдВрдж рдирд╣реАрдВ рдЖрдпрд╛ рдХрд┐ рдпрд╣ рдХреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИ, рд╕рднреА peg.js рджреВрд░ рдлреЗрдВрдХ рд░рд╣рд╛ рд╣реИ, рдФрд░ рдПрдХ рдЕрд╕рдВрдЧрдд рдХреЗ рд╕рд╛рде рдПрдХ рдЕрд▓рдЧ рднрд╛рд╖рд╛ рдореЗрдВ рдЦрд░реЛрдВрдЪ рд╕реЗ рд▓рд┐рдЦреА рдЧрдИ рдХрд┐рд╕реА рдЪреАрдЬрд╝ рд╕реЗ рд╢реБрд░реВ рдХрд░ рд░рд╣рд╛ рд╣реИ рдПрдПрд╕рдЯреАред

рдЯреВрд▓ рдиреЗ рдЕрдкрдирд╛ рдЖрдзрд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЖрдзрд╛рд░ рдЦреЛ рджрд┐рдпрд╛ рд╣реИ, рдЗрд╕ рдЖрджрдореА рдкрд░ рдПрдХ-рдкрдВрдХреНрддрд┐ рд╕реБрдзрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддреАрди рд╕рд╛рд▓ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░ рд░рд╣рд╛ рд╣реИ, рдЬреЛ рдЕрдиреНрдп рд▓реЛрдЧреЛрдВ рдиреЗ рд▓рд┐рдЦрд╛ рд╣реИ, рдЬреИрд╕реЗ es6 рдореЙрдбреНрдпреВрд▓ рд╕рдорд░реНрдерди, рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕рдорд░реНрдерди, рддреАрд░ рд╕рдорд░реНрдерди, рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдпреВрдирд┐рдХреЛрдб, рд╡рдЧреИрд░рд╣ред

рдПрдХ рджрд░реНрдЬрди рд▓реЛрдЧ рдЙрд╕реЗ рдорд░реНрдЬ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣ рд░рд╣реЗ рд╣реИрдВ рдФрд░ рд╡рд╣ рдХрд╣рддрд╛ рд░рд╣рддрд╛ рд╣реИ "рдирд╣реАрдВ, рдпрд╣ рдЕрдм рдореЗрд░рд╛ рд╢реМрдХ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╣реИ рдФрд░ рдореБрдЭреЗ рдпрд╣ рдкрд╕рдВрдж рдирд╣реАрдВ рд╣реИ"

рдмрд╣реБрдд рд╕реЗ рд▓реЛрдЧреЛрдВ рдХреЗ рдкрд╛рд╕ рдЗрд╕ рдкрд╛рд░реНрд╕рд░ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рдХрдВрдкрдирд┐рдпрд╛рдВ рд╣реИрдВред рд╡реЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЦрд░рд╛рдм рд╣реЛ рдЪреБрдХреЗ рд╣реИрдВред

рдЗрд╕ рдЖрджрдореА рдиреЗ рдПрдХ рдЕрддреНрдпрдВрдд рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЙрдкрдХрд░рдг рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдиреБрд░рдХреНрд╖рдХ рдмрдирдиреЗ рдХрд╛ рд╡рд╛рджрд╛ рдХрд┐рдпрд╛, рдФрд░ рдХреЛрдИ рд░рдЦрд░рдЦрд╛рд╡ рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИред рдЕрдм рд╕рдордп рдЖ рдЧрдпрд╛ рд╣реИ рдХрд┐ рдХрд┐рд╕реА рдФрд░ рдХреЛ рдЗрд╕ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЛ рдЕрдЪреНрдЫреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд░рдЦрдиреЗ рджрд┐рдпрд╛ рдЬрд╛рдПред

рдЕрдкрдирд╛ рдХрд╛рдВрдЯрд╛ рдХреНрдпреЛрдВ рдирд╣реАрдВ рдмрдирд╛рдП рд░рдЦрддреЗ?

рдореЗрд░реЗ рдкрд╛рд╕ рдЕрдм рддреАрди рд╕рд╛рд▓ рдХреЗ рд▓рд┐рдП рд╣реИред рдореЗрд░реЗ peg рдореЗрдВ рд╕рдорд╕реНрдпрд╛ рдЯреНрд░реИрдХрд░ рдХрд╛ рд▓рдЧрднрдЧ рдПрдХ рддрд┐рд╣рд╛рдИ рд╣рд┐рд╕реНрд╕рд╛ рдареАрдХ рд╣реЛ рдЧрдпрд╛ рд╣реИред

рдореБрдЭреЗ рдЗрд╕реЗ рдХреНрд▓реЛрди рдХрд░рдирд╛ рдерд╛, рдЗрд╕рдХрд╛ рдирд╛рдо рдмрджрд▓рдирд╛ рдерд╛, рдФрд░ рдЖрдХрд╛рд░ рдХреА рд╕рдорд╕реНрдпрд╛ рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдирдпрд╛ рдХрд╛рдВрдЯрд╛ рдмрдирд╛рдирд╛ рдерд╛, рдХреНрдпреЛрдВрдХрд┐ рдореЗрд░рд╛ рдмрд╣реБрдд рдЬреНрдпрд╛рджрд╛ рдмрд╣ рдЧрдпрд╛ рд╣реИ

рдмрд╛рдХреА рд╕рднреА рдХреЗ рд▓рд┐рдП рдЗрди рд╕реБрдзрд╛рд░реЛрдВ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рд╕рдордп рдЖ рдЧрдпрд╛ рд╣реИ, рд╕рд╛рде рд╣реА рд╕рд╛рде рдЬреЛ 2017 рд╕реЗ рдЯреНрд░реИрдХрд░ рдореЗрдВ рдмреИрдареЗ рд╣реИрдВред

рдпрд╣ рдЖрджрдореА рдЦреВрдВрдЯреА рдХрд╛ рд░рдЦрд░рдЦрд╛рд╡ рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИ; рд╡рд╣ рдЗрд╕реЗ рдорд░рдиреЗ рджреЗ рд░рд╣рд╛ рд╣реИред

рдмрджрд▓рд╛рд╡ рдХрд╛ рд╕рдордп рд╣реИред

@drewnolan - рддреЛ, тАЛтАЛрдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рджрд┐рд▓рдЪрд╕реНрдк рд╣реИ рдпрд╛ рдирд╣реАрдВ, рд▓реЗрдХрд┐рди, рд╕рд░реЛрдЧреЗрдЯ рдЬреЛрдбрд╝реЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред рдмрд╕, рд╕рдВрдпреЛрдЧ рд╕реЗ, рд╡реЗ рдЖрдорддреМрд░ рдкрд░ рдРрд╕рд╛ рдХрд░рддреЗ рд╣реИрдВред

рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рд╕реНрддрд░ рдмрд┐рдЯ рдкреИрдЯрд░реНрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрдирд╛ рд╣реЛрдЧрд╛, рди рдХрд┐ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рд╕реНрддрд░ рдПрдХ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВред

рдпрд╛рдиреА, рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ 240 рдХрд╛ рдпреВрдирд┐рдХреЛрдб рдорд╛рди рд╣реИ, рддреЛ рдЕрдзрд┐рдХрд╛рдВрд╢ рд▓реЛрдЧ рд╕реЛрдЪреЗрдВрдЧреЗ "рдУрд╣, рдЙрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ 0b1111 0000 ред" рд▓реЗрдХрд┐рди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдпреВрдирд┐рдХреЛрдб 240 рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ; 127 рд╕реЗ рдЕрдзрд┐рдХ рдХреЛ рджреЛ рдмрд╛рдЗрдЯреНрд╕ рджреНрд╡рд╛рд░рд╛ рджрд░реНрд╢рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╢реАрд░реНрд╖ рдмрд┐рдЯ рдПрдХ рдзреНрд╡рдЬ рд╣реИ, рди рдХрд┐ рдорд╛рди рдмрд┐рдЯред рддреЛ рдпреВрдирд┐рдХреЛрдб рдореЗрдВ 240 рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рднрдВрдбрд╛рд░рдг рдореЗрдВ 0b0000 0001 0111 0000 рд╣реИ (рдпреВрдЯреАрдПрдл -7 рдХреЛ рдЫреЛрдбрд╝рдХрд░, рдЬреЛ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╣реИ рдФрд░ рдЯрд╛рдЗрдкреЛ рдирд╣реАрдВ рд╣реИ, рдЬрд╣рд╛рдВ рдЪреАрдЬреЗрдВ рдмрд╣реБрдд рдЕрдЬреАрдм рд╣реЛрддреА рд╣реИрдВред рдФрд░ рд╣рд╛рдВ, рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рд╡рд┐рдХрд┐рдкреАрдбрд┐рдпрд╛ рдХрд╣рддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЙрдкрдпреЛрдЧ рдореЗрдВ рдирд╣реАрдВ рд╣реИред рд╡рд┐рдХрд┐рдкреАрдбрд┐рдпрд╛ рдЧрд▓рдд рд╣реИ . рдпрд╣ рд╡рд╣реА рд╣реИ рдЬрд┐рд╕ рдкрд░ рдПрд╕рдПрдордПрд╕ рднреЗрдЬрд╛ рдЬрд╛рддрд╛ рд╣реИ; рдпрд╣ рдХреБрд▓ рдЯреНрд░реИрдлрд╝рд┐рдХ рджреНрд╡рд╛рд░рд╛ рд╕рдмрд╕реЗ рд╕рд╛рдорд╛рдиреНрдп рд╡рд░реНрдг рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред)

рддреЛ рдпрд╣рд╛рдБ рд╕рдорд╕реНрдпрд╛ рд╣реИред

рдпрджрд┐ рдЖрдк рдПрдХ рдмрд╛рдЗрдЯ STUV WXYZ рд▓рд┐рдЦрддреЗ рд╣реИрдВ, рддреЛ utf16 рдореЗрдВ, ucs4 рдбреЗрдЯрд╛ рд╕реЗ, рдпрджрд┐ рдЖрдкрдХреА рдЪреАрдЬрд╝ рдЖрдзреА рд╣реЛ рдЬрд╛рддреА рд╣реИ, рддреЛ рдЕрдХреНрд╕рд░ рдЖрдк рдЗрд╕реЗ рд╡рд╛рдкрд╕ рдПрдХ рд╕рд╛рде рд╕реНрдЯреЗрдкрд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

128 рдореЗрдВ рдПрдХ рдмрд╛рд░ рдЖрдк рдореВрд▓ рд░реВрдк рд╕реЗ рджреЛ рдмрд╛рдЗрдЯреНрд╕ рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рд╕реЗ рдЕрдзрд┐рдХ рд╡рд░реНрдгреЛрдВ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗред (рдПрдХ рдмрд╣реБрдд рд╣реА рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕рдВрдЦреНрдпрд╛ рдХреА рддрд░рд╣ рд▓рдЧрддрд╛ рд╣реИ, рд╣реИ рдирд╛?)

рдХреНрдпреЛрдВрдХрд┐ рдЬрдм рджреВрд╕рд░реА рдмрд╛рдЗрдЯ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд╡рд╣ рд╢реАрд░реНрд╖ рдмрд┐рдЯ рдЙрдкрдпреЛрдЧ рдореЗрдВ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдЗрд╕реЗ рдЖрдзреЗ рдореЗрдВ рдХрд╛рдЯрдиреЗ рд╕реЗ рдПрдХ рд╢реВрдиреНрдп рдЬреБрдбрд╝ рдЬрд╛рдПрдЧрд╛ рдЬрд╣рд╛рдВ рдЙрд╕реЗ рдПрдХ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдерд╛ред рдмрд╛рдЗрдирд░реА рдбреЗрдЯрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдиреНрд╣реЗрдВ рдПрдХ рд╕рд╛рде рд╡рд╛рдкрд╕ рдПрдХ рд╕рд╛рде рд╕реНрдЯреЗрдкрд▓ рдХрд░рдирд╛ рдореВрд▓реНрдп рдЕрд╡рдзрд╛рд░рдгрд╛ рдХреЛ рдлрд┐рд░ рд╕реЗ рдирд╣реАрдВ рд╣рдЯрд╛рддрд╛ рд╣реИред рдбреАрдХреЛрдбреЗрдб рдорд╛рди рдПрдиреНрдХреЛрдбреЗрдб рдорд╛рди рдХреЗ рдмрд░рд╛рдмрд░ рдирд╣реАрдВ рд╣реИ, рдФрд░ рдЖрдк рдбрд┐рдХреЛрдбрд┐рдВрдЧ рдЬреЛрдбрд╝ рд░рд╣реЗ рд╣реИрдВ, рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рдирд╣реАрдВред

рдРрд╕рд╛ рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рдЬреНрдпрд╛рджрд╛рддрд░ рдЗрдореЛрдЬреА рдЗрд╕ рд░реЗрдВрдЬ рд╕реЗ рдмрд╛рд╣рд░ рд╣реЛрддреЗ рд╣реИрдВред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдХрдИ рднрд╛рд╖рд╛рдУрдВ рдХреЗ рдмрдбрд╝реЗ рд╣рд┐рд╕реНрд╕реЗ рджреБрд░реНрд▓рдн рдЪреАрдиреА, рдЕрдзрд┐рдХрд╛рдВрд╢ рдЧрдгрд┐рдд рдФрд░ рд╕рдВрдЧреАрдд рдкреНрд░рддреАрдХреЛрдВ рд╕рд╣рд┐рдд рдирд╣реАрдВ рд╣реИрдВред

рджреА, рдЖрдкрдХрд╛ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд▓рдЧрднрдЧ рд╕рднреА рдЗрдореЛрдЬреА рдХреЗ рд▓рд┐рдП рдХрд╛рдлреА рдЕрдЪреНрдЫрд╛ рд╣реИ, рдФрд░ рд╣рд░ рдорд╛рдирд╡ рднрд╛рд╖рд╛ рдХреЗ рд▓рд┐рдП рдЬреЛ рдпреВрдирд┐рдХреЛрдб 6 рджреНрд╡рд╛рд░рд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ, рдЬреЛ рдпрдерд╛рд╕реНрдерд┐рддрд┐ рдкрд░ рдПрдХ рдмрдбрд╝рд╛ рд╕реБрдзрд╛рд░ рд╣реИ

рд▓реЗрдХрд┐рди рдЗрд╕ рдкреАрдЖрд░ рдХреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╡рд┐рд▓рдп рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдПрдХ рдмрд╛рд░ рдЗрд╕рдХреА рд╢реБрджреНрдзрддрд╛ рдФрд░ рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рдкреНрд░рджрд░реНрд╢рди рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЗ рдЦрд┐рд▓рд╛рдл рдкрд░реНрдпрд╛рдкреНрдд рд░реВрдк рд╕реЗ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ (рдпрд╛рдж рд░рдЦреЗрдВ, рдпреВрдирд┐рдХреЛрдб рдкреНрд░рджрд░реНрд╢рди рд╕рдорд╕реНрдпрд╛рдПрдВ рд╣реИрдВ рдХреНрдпреЛрдВ PHP рдХреА рдореГрддреНрдпреБ рд╣реЛ рдЧрдИ)

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ . (dot character) рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреЛ рднреА рдпреВрдирд┐рдХреЛрдб рдореЛрдб рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рддреБрд▓рдирд╛ рдХрд░рдирд╛:

const string = '-ЁЯРО-ЁЯС▒-';

const symbols = (string.match(/./gu));
console.log(JSON.stringify(symbols, null, '  '));

const pegResult = require('pegjs/')
                 .generate('root = .+')
                 .parse(string);
console.log(JSON.stringify(pegResult, null, '  '));

рдЖрдЙрдЯрдкреБрдЯ:

[
  "-",
  "ЁЯРО",
  "-",
  "ЁЯС▒",
  "-"
]
[
  "-",
  "\ud83d",
  "\udc0e",
  "-",
  "\ud83d",
  "\udc71",
  "-"
]

рдореИрдВрдиреЗ рд╣рд╛рд▓ рд╣реА рдореЗрдВ рдЗрд╕ рдкрд░ рдХрд╛рдо рдХрд┐рдпрд╛, рдЖрдзрд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ #616 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдФрд░ рдЗрд╕реЗ ES6 рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдВрд╢реЛрдзрд┐рдд рдХрд┐рдпрд╛ \u{hhhhhhh} , рдореИрдВ рдХреБрдЫ рдШрдВрдЯреЛрдВ рдореЗрдВ рдПрдХ рдкреАрдЖрд░ рдмрдирд╛рдКрдВрдЧрд╛ред

рд╕рд░реЛрдЧреЗрдЯреНрд╕ рджреНрд╡рд╛рд░рд╛ рд╡рд┐рднрд╛рдЬрд┐рдд рдпреВрдЯреАрдПрдл -16 рд░реЗрдЧреЗрдХреНрд╕ рд╢реНрд░реЗрдгрд┐рдпреЛрдВ рдХреА рдЧрдгрдирд╛ рдХрд░рдирд╛ рдереЛрдбрд╝рд╛ рдЬрдЯрд┐рд▓ рд╣реИ рдФрд░ рдореИрдВрдиреЗ рдЗрд╕рдХреЗ рд▓рд┐рдП https://github.com/mathiasbynens/regenerate рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛; рдпрд╣ рдкреИрдХреЗрдЬ pegjs рдХреА рдкрд╣рд▓реА рдирд┐рд░реНрднрд░рддрд╛ рд╣реЛрдЧреА, рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╕рдВрднрд╡ рд╣реИ (рдпреВрдирд┐рдХреЛрдб рдЧреБрдгреЛрдВ рдХреЗ рд▓рд┐рдП рдкреЙрд▓реАрдлрд┐рд▓ рднреА рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, # 648 рджреЗрдЦреЗрдВ)ред рдпрджрд┐ рдЖрдк UTF-16 рд╕рд░реЛрдЧреЗрдЯ рдХреЛ рдирд╣реАрдВ рдЬрд╛рдирддреЗ рд╣реИрдВ рддреЛ рд╡рд┐рдХрд┐рдкреАрдбрд┐рдпрд╛ рджреЗрдЦреЗрдВ ред

PEG.js рдХреЛ рд╕рдВрдкреВрд░реНрдг рдпреВрдирд┐рдХреЛрдб рдХреЗ рд╕рд╛рде рд╕рдВрдЧрдд рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рд╡рд┐рднрд┐рдиреНрди рд╕реНрддрд░ рд╣реИрдВ:

  1. #616 рдпрд╛ рдореЗрд░реЗ ES6-рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рд╕рдВрд╕реНрдХрд░рдг рджреНрд╡рд╛рд░рд╛ рддрдп BMP рдХреЗ рдКрдкрд░ рдпреВрдирд┐рдХреЛрдб рд╡рд░реНрдгреЛрдВ рдХреЛ рдПрдиреНрдХреЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдЬреЛрдбрд╝реЗрдВ,
  2. рдкрд┐рдЫрд▓реЗ рдмрд┐рдВрджреБ рджреНрд╡рд╛рд░рд╛ рд╕реАрдзреЗ рдкреНрд░рджрд╛рди рдХрд┐рдП рдЧрдП рдирд┐рд░рдВрддрд░ рддрд╛рд░реЛрдВ рдХреЛ рдкрд╣рдЪрд╛рдиреЗрдВ,
  3. рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдпреВрдирд┐рдХреЛрдб рд╡рд░реНрдг рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдВрднрд╡рддрдГ 1 рдпрд╛ 2 рдХреЛрдб рдЗрдХрд╛рдЗрдпреЛрдВ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП SyntaxError рд░рд┐рдкреЛрд░реНрдЯрд┐рдВрдЧ рдХреЛ рдареАрдХ рдХрд░реЗрдВ,
  4. рдмреАрдПрдордкреА рдФрд░/рдпрд╛ рд╕реВрдХреНрд╖реНрдо рдХреЛрдб рдмрд┐рдВрджреБрдУрдВ рдХреЗ рд▓рд┐рдП рд░реЗрдЧреЗрдХреНрд╕ рд╡рд░реНрдЧ рдХреА рд╕рдЯреАрдХ рдЧрдгрдирд╛ рдХрд░реЗрдВ - рдпрд╣ рдЕрдХреЗрд▓рд╛ рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИ, рдЕрдЧрд▓рд╛ рдмрд┐рдВрджреБ рджреЗрдЦреЗрдВ,
  5. рдХрд░реНрд╕рд░ рд╡реГрджреНрдзрд┐ рдХреЛ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░реЗрдВ рдХреНрдпреЛрдВрдХрд┐ рдПрдХ рд░реЗрдЧреЗрдХреНрд╕ рд╡рд░реНрдЧ рдЕрдм (1), (2), рдпрд╛ (рд░рдирдЯрд╛рдЗрдо рдХреЗ рдЖрдзрд╛рд░ рдкрд░ 1 рдпрд╛ 2) рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдиреАрдЪреЗ рд╡рд┐рд╡рд░рдг рджреЗрдЦреЗрдВ,
  6. 1 рдпрд╛ 2 рдХреЛрдб рдЗрдХрд╛рдЗрдпреЛрдВ рдХреЛ рдкрдХрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рдпрдо рдбреЙрдЯ . рд▓рд╛рдЧреВ рдХрд░реЗрдВред

рдЕрдзрд┐рдХрд╛рдВрд╢ рдмрд┐рдВрджреБрдУрдВ рдХреЗ рд▓рд┐рдП рд╣рдо рдкрд┐рдЫрдбрд╝реЗ-рд╕рдВрдЧрдд рд╣реЛрдиреЗ рдХрд╛ рдкреНрд░рдмрдВрдзрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдкреБрд░рд╛рдиреЗ рдХреЗ рд╕рдорд╛рди рд╣реА рдкрд╛рд░реНрд╕рд░ рдЙрддреНрдкрдиреНрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдмрд┐рдВрджреБ 5 рдХреЛ рдЫреЛрдбрд╝рдХрд░ рдХреНрдпреЛрдВрдХрд┐ рдПрдХ рдкрд╛рд░реНрд╕рд┐рдВрдЧ рдХрд╛ рдкрд░рд┐рдгрд╛рдо рдирд┐рд░реНрднрд░ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдбреЙрдЯ рдирд┐рдпрдо рдПрдХ рдпрд╛ рджреЛ рдХреЛрдб рдЗрдХрд╛рдЗрдпреЛрдВ рдХреЛ рдХреИрдкреНрдЪрд░ рдХрд░рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рд▓рд┐рдП рдореИрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рджреЛ рдпрд╛ рддреАрди рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЗ рдмреАрдЪ рдЪрдпрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд░рдирдЯрд╛рдЗрдо рд╡рд┐рдХрд▓реНрдк рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рдХрд░рддрд╛ рд╣реВрдВ:

  1. рдбреЙрдЯ рдирд┐рдпрдо рдХреЗрд╡рд▓ рдмреАрдПрдордкреА рдХреЛрдб рдЗрдХрд╛рдИ рдХреЛ рдХреИрдкреНрдЪрд░ рдХрд░рддрд╛ рд╣реИ,
  2. рдбреЙрдЯ рдирд┐рдпрдо рдПрдХ рдпреВрдирд┐рдХреЛрдб рдХреЛрдб рдмрд┐рдВрджреБ (1 рдпрд╛ 2 рдХреЛрдб рдЗрдХрд╛рдЗрдпрд╛рдБ) рдХреЛ рдХреИрдкреНрдЪрд░ рдХрд░рддрд╛ рд╣реИ,
  3. рдбреЙрдЯ рдирд┐рдпрдо рдПрдХ рдпреВрдирд┐рдХреЛрдб рдХреЛрдб рдмрд┐рдВрджреБ рдпрд╛ рдПрдХ рдЕрдХреЗрд▓рд╛ рд╕рд░реЛрдЧреЗрдЯ рдХреИрдкреНрдЪрд░ рдХрд░рддрд╛ рд╣реИред

рд░реЗрдЧреЗрдХреНрд╕ рд╡рд░реНрдЧ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдкрд╛рд░реНрд╕рд░ рдкреАрдврд╝реА рдХреЗ рджреМрд░рд╛рди рд╕реНрдерд┐рд░ рд░реВрдк рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рддрд╛рдХрд┐ рдпрд╣ рдЬрд╛рдВрдЪрд╛ рдЬрд╛ рд╕рдХреЗ рдХрд┐ рдЙрдирдХреА рдирд┐рд╢реНрдЪрд┐рдд рд▓рдВрдмрд╛рдИ (рдХреЛрдб рдЗрдХрд╛рдЗрдпреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ) рд╣реИ рдпрд╛ рдирд╣реАрдВред 3 рдорд╛рдорд▓реЗ рд╣реИрдВ: 1. рдХреЗрд╡рд▓ рдПрдХ рдмреАрдПрдордкреА рдпрд╛ рдПрдХ рдХреЛрдб рдЗрдХрд╛рдИ, рдпрд╛ 2. рдХреЗрд╡рд▓ рджреЛ рдХреЛрдб рдЗрдХрд╛рдЗрдпрд╛рдВ, рдпрд╛ 3. рд░рдирдЯрд╛рдЗрдо рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдПрдХ рдпрд╛ рджреЛ рдХреЛрдб рдЗрдХрд╛рдЗрдпрд╛рдВред рдЕрднреА рдХреЗ рд▓рд┐рдП рдмрд╛рдЗрдЯрдХреЛрдб рдорд╛рдирддрд╛ рд╣реИ рдХрд┐ рдПрдХ рд░реЗрдЧреЗрдХреНрд╕ рдХреНрд▓рд╛рд╕ рд╣рдореЗрд╢рд╛ рдПрдХ рдХреЛрдб рдЗрдХрд╛рдИ рд╣реЛрддреА рд╣реИ ( рдпрд╣рд╛рдВ рджреЗрдЦреЗрдВ )ред рд╕реНрдереИрддрд┐рдХ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЗ рд╕рд╛рде, рд╣рдо рдЗрд╕ рдмрд╛рдЗрдЯрдХреЛрдб рдирд┐рд░реНрджреЗрд╢ рдХреЗ рдЗрд╕ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЛ рдкрд╣рд▓реЗ рджреЛ рдорд╛рдорд▓реЛрдВ рдХреЗ рд▓рд┐рдП 1 рдпрд╛ 2 рдореЗрдВ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рддреАрд╕рд░реЗ рдорд╛рдорд▓реЗ рдХреЗ рд▓рд┐рдП, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд░рдирдЯрд╛рдЗрдо рдкрд░ рдПрдХ рдирдпрд╛ рдмрд╛рдЗрдЯрдХреЛрдб рдирд┐рд░реНрджреЗрд╢ рдЬреЛрдбрд╝рд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдорд┐рд▓рд╛рди рдХреА рдЧрдИ рдХреЛрдб рдЗрдХрд╛рдЗрдпреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ рдФрд░ рддрджрдиреБрд╕рд╛рд░ рдХрд░реНрд╕рд░ рдмрдврд╝рд╛рдПрдВред рдПрдХ рдирдП рдмрд╛рдЗрдЯрдХреЛрдб рдирд┐рд░реНрджреЗрд╢ рдХреЗ рдмрд┐рдирд╛ рдЕрдиреНрдп рд╡рд┐рдХрд▓реНрдк рд╣реЛрдВрдЧреЗ: 1. рд╣рдореЗрд╢рд╛ рдорд┐рд▓рд╛рди рдХреА рдЧрдИ рдХреЛрдб рдЗрдХрд╛рдЗрдпреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреА рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд▓реЗрдХрд┐рди рдмреАрдПрдордкреА-рдХреЗрд╡рд▓ рдкрд╛рд░реНрд╕рд░реНрд╕ рдХреЗ рд▓рд┐рдП рдкрд╛рд░реНрд╕рд┐рдВрдЧ рдХреЗ рджреМрд░рд╛рди рдпрд╣ рдПрдХ рдкреНрд░рджрд░реНрд╢рди рдЬреБрд░реНрдорд╛рдирд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рдпрд╣ рд╡рд┐рдХрд▓реНрдк рдкрд╕рдВрдж рдирд╣реАрдВ рд╣реИ; 2. рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдХреНрдпрд╛ рд╡рд░реНрддрдорд╛рди рдХреЛрдб рдЗрдХрд╛рдИ рдПрдХ рдЙрдЪреНрдЪ рд╕рд░реЛрдЧреЗрдЯ рд╣реИ рдЬрд┐рд╕рдХреЗ рдмрд╛рдж 1 рдпрд╛ 2 рдХреА рд╡реГрджреНрдзрд┐ рдХреЗ рд▓рд┐рдП рдХрдо рд╕рд░реЛрдЧреЗрдЯ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдорд╛рди рд▓реЗрдЧрд╛ рдХрд┐ рд╡реНрдпрд╛рдХрд░рдг рдиреЗ рд╣рдореЗрд╢рд╛ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдЧрдард┐рдд рдпреВрдЯреАрдПрдл -16 рд╕рд░реЛрдЧреЗрдЯ рдХреЛ рдЕрдХреЗрд▓рд╛ рд╕рд░реЛрдЧреЗрдЯ рдХреЗ рд╕рд╛рде рд╡реНрдпрд╛рдХрд░рдг рд▓рд┐рдЦрдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдХреЗ рдмрд┐рдирд╛ рдмрдирд╛рдпрд╛ рд╣реИ ( рдЕрдЧрд▓рд╛ рдмрд┐рдВрджреБ рджреЗрдЦреЗрдВ) рдФрд░ рдпрд╣ рдХреЗрд╡рд▓ рдмреАрдПрдордкреА рдкрд╛рд░реНрд╕рд░реНрд╕ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд░рджрд░реНрд╢рди рджрдВрдб рднреА рд╣реИред

рдПрдХрд╛рдХреА рд╕рд░реЛрдЧреЗрдЯ рдХрд╛ рд╕рд╡рд╛рд▓ рд╣реИ (рдЗрд╕рдХреЗ рдмрд╛рдж рдХрдо рд╕рд░реЛрдЧреЗрдЯ рдХреЗ рдмрд┐рдирд╛ рдЙрдЪреНрдЪ рд╕рд░реЛрдЧреЗрдЯ, рдпрд╛ рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдЙрдЪреНрдЪ рд╕рд░реЛрдЧреЗрдЯ рдХреЗ рдмрд┐рдирд╛ рдХрдо рд╕рд░реЛрдЧреЗрдЯ)ред рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдореЗрд░реА рд░рд╛рдп рдпрд╣ рд╣реИ рдХрд┐ рдПрдХ рд░реЗрдЧреЗрдХреНрд╕ рд╡рд░реНрдЧ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП: рдпрд╛ рддреЛ рдЕрдХреЗрд▓реЗ рд╕рд░реЛрдЧреЗрдЯ рдХреЗ рд╕рд╛рде рдпрд╛ рддреЛ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдЧрдард┐рдд рдпреВрдЯреАрдПрдл -16 рдпреВрдирд┐рдХреЛрдб рд╡рд░реНрдг (рдмреАрдПрдордкреА рдпрд╛ рдПрдХ рдЙрдЪреНрдЪ рд╕рд░реЛрдЧреЗрдЯ рдХреЗ рдмрд╛рдж рдХрдо рд╕рд░реЛрдЧреЗрдЯ) рдХреЗ рд╕рд╛рде, рдЕрдиреНрдпрдерд╛ рдЦрддрд░рд╛ рд╣реИ рдХрд┐ рд╡реНрдпрд╛рдХрд░рдг рд▓реЗрдЦрдХ рдЕрдирдЬрд╛рди рд╣реИрдВ UTF-16 рд╕реВрдХреНрд╖реНрдорддрд╛рдПрдВ рджреЛрдиреЛрдВ рдХреЛ рдорд┐рд▓рд╛рддреА рд╣реИрдВ рдФрд░ рдкрд░рд┐рдгрд╛рдо рдХреЛ рдирд╣реАрдВ рд╕рдордЭрддреА рд╣реИрдВ, рдФрд░ рд╡реНрдпрд╛рдХрд░рдг рд▓реЗрдЦрдХ рдЬреЛ рдЦреБрдж рдХреЛ UTF-16 рд╕рд░реЛрдЧреЗрдЯ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рд╡реЗ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЙрдЪреНрдЪ рдФрд░ рдирд┐рдореНрди рд╕рд░реЛрдЧреЗрдЯ рдХреЗ рдмреАрдЪ рд╕рдВрдмрдВрдзреЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП PEG рдирд┐рдпрдореЛрдВ рдХреЗ рд╕рд╛рде рдРрд╕рд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдореИрдВ рдкрд╛рд░реНрд╕рд░ рдкреАрдврд╝реА рдХреЗ рджреМрд░рд╛рди рдЗрд╕ рдирд┐рдпрдо рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдПрдХ рдЖрдЧрдВрддреБрдХ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рдХрд░рддрд╛ рд╣реВрдВред

рдирд┐рд╖реНрдХрд░реНрд╖ рдирд┐рдХрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП, рд░реЗрдЧреЗрдХреНрд╕ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдкреАрдИрдЬреА рдореЗрдВ рдЕрдХреЗрд▓реЗ рд╕рд░реЛрдЧреЗрдЯ рдХреЗ рдкреНрд░рд╢реНрди рдХреЛ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░рдирд╛ рд╢рд╛рдпрдж рдЖрд╕рд╛рди рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдкреАрдИрдЬреА рдкрд╛рд░реНрд╕рд░ рд╣рдореЗрд╢рд╛ рдЖрдЧреЗ рдмрдврд╝рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЕрдЧрд▓реА рдХреЛрдб рдЗрдХрд╛рдИ рдХреЛ рдкрд╣рдЪрд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ рдпрд╛ рддреЛ рдпрд╣ рд░реЗрдЧреЗрдХреНрд╕ рдХреЗ рд╡рд┐рдкрд░реАрдд рдирд╣реАрдВ рд╣реИ, рдЬрд╣рд╛рдВ рд╕рдВрднрд╡рддрдГ рдХреБрдЫ рдмреИрдХрдЯреНрд░реИрдХрд┐рдВрдЧ рд╕рд╣рдпреЛрдЧреА рд╣реЛ рд╕рдХрддреА рд╣реИ рдпрд╛ рдПрдХ рдЙрдЪреНрдЪ рд╕рд░реЛрдЧреЗрдЯ рдХреЛ рдХрдо рд╕рд░реЛрдЧреЗрдЯ рдХреЗ рд╕рд╛рде рдЕрд▓рдЧ рдХрд░реЗрдВ рдФрд░ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдпреВрдирд┐рдХреЛрдб рд╡рд░реНрдгреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХрд╛ рдорд┐рд▓рд╛рди рдХрд░реЗрдВ, рдЖрджрд┐ред

рд╕реВрдХреНрд╖реНрдо рдпреВрдирд┐рдХреЛрдб рд╡рд░реНрдг рдХреЗ рд▓рд┐рдП ES6 рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреЗ рд▓рд┐рдП PR #616 рдкрд░ рдЖрдзрд╛рд░рд┐рдд #651 рд╣реИ рдФрд░ рдХрдХреНрд╖рд╛рдУрдВ рдХреЗ рд▓рд┐рдП рд╡рд┐рдХрд╛рд╕ https://github.com/Seb35/pegjs/commit/0d33a7a4e13b0ac7c55a9cfaadc16fc0a5dd5f0c рдКрдкрд░ рдореЗрд░реА рдЯрд┐рдкреНрдкрдгреА рдореЗрдВ рдЕрдВрдХ 2 рдФрд░ 3 рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рд╣реИ, рдФрд░ рдХреЗрд╡рд▓ рдХрд░реНрд╕рд░ рд╡реГрджреНрдзрд┐ рдХреЗ рд▓рд┐рдП рдПрдХ рддреНрд╡рд░рд┐рдд рд╣реИрдХ (рдмрд┐рдВрджреБ 4) рдФрд░ рдирд┐рдпрдо рдбреЙрдЯ . (рдмрд┐рдВрджреБ 5) рдХреЗ рд▓рд┐рдП рдЕрднреА рдХреЗ рд▓рд┐рдП рдХреБрдЫ рднреА рдирд╣реАрдВред

рдЗрд╕ рдореБрджреНрджреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдореЗрд░рд╛ рд╡рд░реНрддрдорд╛рди рд╡рд┐рдХрд╛рд╕ рдЬреНрдпрд╛рджрд╛рддрд░ рд╕рдорд╛рдкреНрдд рд╣реЛ рдЧрдпрд╛ рд╣реИ, рдЕрдзрд┐рдХ рдЙрдиреНрдирдд рдХрд╛рд░реНрдп https://github.com/Seb35/pegjs/tree/dev-astral-classes-final рдореЗрдВ рд╣реИред рдКрдкрд░ рд╡рд░реНрдгрд┐рдд рд╕рднреА рдкрд╛рдВрдЪ рдмрд┐рдВрджреБрдУрдВ рдХрд╛ рдЗрд▓рд╛рдЬ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рд╡реИрд╢реНрд╡рд┐рдХ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд┐рдирд╛рд░реЗ рдХреЗ рдорд╛рдорд▓реЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬреЗрдПрд╕ рд░реЗрдЧреЗрдХреНрд╕ рдХреА рдирдХрд▓ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддрд╛ рд╣реИ (рдФрд░ рдЙрдирдореЗрдВ рд╕реЗ рдмрд╣реБрдд рд╕рд╛рд░реЗ рд╣реИрдВ)ред

рд╡реИрд╢реНрд╡рд┐рдХ рд╡реНрдпрд╡рд╣рд╛рд░ рдЬреЗрдПрд╕ рд░реЗрдЧреЗрдХреНрд╕ рдореЗрдВ рдзреНрд╡рдЬ unicode unicode рд╕рдорд╛рди рд╡рд┐рдХрд▓реНрдк [^a] рдкрд╛рда "ЁЯТп" рд╕реЗ рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИ рдФрд░ рдХрд░реНрд╕рд░ 2 рдХреЛрдб рдЗрдХрд╛рдЗрдпреЛрдВ рд╕реЗ рдмрдврд╝рд╛ рд╣реБрдЖ рд╣реИ)ред рдЬрдм рд╡рд┐рдХрд▓реНрдк unicode рдЧрд▓рдд рд╣реЛрддрд╛ рд╣реИ рддреЛ рдХрд░реНрд╕рд░ рдХреЛ рд╣рдореЗрд╢рд╛ 1 рдХреЛрдб рдЗрдХрд╛рдИ рд╕реЗ рдмрдврд╝рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдЗрдирдкреБрдЯ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рд╣рдо рдкреАрдИрдЬреА.рдЬреЗрдПрд╕ рдХреЛ рдЙрд╕реА рддрд░рд╣ рдбрд┐рдЬрд╛рдЗрди рдХрд░рддреЗ рд╣реИрдВ рдЬреИрд╕реЗ рдЬреЗрдПрд╕ рд░реЗрдЧреЗрдХреНрд╕: рдХреНрдпрд╛ рд╣рдореЗрдВ рдЧреИрд░-рдпреВрдирд┐рдХреЛрдб рдореЛрдб рдореЗрдВ рд╡реНрдпрд╛рдХрд░рдг рдореЗрдВ [\u{1F4AD}-\u{1F4AF}] ( [\uD83D\uDCAD-\uD83D\uDCAF] рдмрд░рд╛рдмрд░) рдХреЛ рдЕрдзрд┐рдХреГрдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП ? рд╣рдо "рдЗрдирдкреБрдЯ рдпреВрдирд┐рдХреЛрдб" рдФрд░ "рдЖрдЙрдЯрдкреБрдЯ рдпреВрдирд┐рдХреЛрдб" рдХреЗ рдмреАрдЪ рдЕрдВрддрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

  • рдЗрдирдкреБрдЯ рдпреВрдирд┐рдХреЛрдб рд╡рд░реНрдг рд╡рд░реНрдЧреЛрдВ рдореЗрдВ рд╕рднреА рдпреВрдирд┐рдХреЛрдб рд╡рд░реНрдгреЛрдВ рдХреЛ рдЕрдзрд┐рдХреГрдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИ (рдЬрд┐рд╕реЗ рдЖрдВрддрд░рд┐рдХ рд░реВрдк рд╕реЗ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд 2-рдХреЛрдб-рдЗрдХрд╛рдЗрдпреЛрдВ рдпрд╛ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд 1-рдХреЛрдб-рдЗрдХрд╛рдИ рдХреЗ рд░реВрдк рдореЗрдВ рдЧрдгрдирд╛ рдХреА рдЬрд╛рддреА рд╣реИ)
  • рдЖрдЙрдЯрдкреБрдЯ рдпреВрдирд┐рдХреЛрдб рдкрд░рд┐рдгрд╛рдореА рдкрд╛рд░реНрд╕рд░ рдХреА рдХрд░реНрд╕рд░ рд╡реГрджреНрдзрд┐ рд╣реИ: 1 рдХреЛрдб рдЗрдХрд╛рдИ рдпрд╛ 1 рдпреВрдирд┐рдХреЛрдб рд╡рд░реНрдг 'рдбреЙрдЯ' рдФрд░ 'рдЙрд▓рдЯрд╛ рд╡рд░реНрдг рд╡рд░реНрдЧ' рдХреЗ рд▓рд┐рдП - рдПрдХрдорд╛рддреНрд░ рдирд┐рдпрдо рдЬрд╣рд╛рдВ рд╡рд░реНрдг рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд╕реВрдЪреАрдмрджреНрдз рдирд╣реАрдВ рд╣реИрдВ рдФрд░ рдЬрд╣рд╛рдВ рд╣рдореЗрдВ рд╡реНрдпрд╛рдХрд░рдг рд╕реЗ рдирд┐рд░реНрдгрдп рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рд▓реЗрдЦрдХ

рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореИрдВ рдкрд╕рдВрдж рдХрд░реВрдВрдЧрд╛ рдХрд┐ рд╣рдо рдЗрдирдкреБрдЯ рдпреВрдирд┐рдХреЛрдб рдХреЛ рд╕реНрдерд╛рдпреА рд░реВрдк рд╕реЗ рдпрд╛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ true рд╕рд╛рде рдПрдХ рд╡рд┐рдХрд▓реНрдк рдХреЗ рд╕рд╛рде рдЕрдзрд┐рдХреГрдд рдХрд░реЗрдВ рдХреНрдпреЛрдВрдХрд┐ рдХреЛрдИ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдУрд╡рд░рд╣реЗрдб рдирд╣реАрдВ рд╣реИ рдФрд░ рдпрд╣ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рд╕рднреА рдХреЗ рд▓рд┐рдП рдЗрд╕ рд╕рдВрднрд╛рд╡рдирд╛ рдХреЛ рд╕рдХреНрд╖рдо рдХрд░реЗрдЧрд╛, рд▓реЗрдХрд┐рди рдЖрдЙрдЯрдкреБрдЯ рдпреВрдирд┐рдХреЛрдб false рд░рд╣рдирд╛ рдЪрд╛рд╣рд┐рдП

рдЗрд╕ рдореБрджреНрджреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ (рдФрд░ рдЖрдЙрдЯрдкреБрдЯ рдпреВрдирд┐рдХреЛрдб рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ false рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ), рд╣рдореЗрдВ рдпрд╣ рдзреНрдпрд╛рди рд░рдЦрдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдпреВрдЯреАрдПрдл -16 рдХреЗ рдХрд╛рдордХрд╛рдЬ рдХреЛ рд╕рдордЭрдиреЗ рдХреА рдХреАрдордд рдкрд░ рд╣рдорд╛рд░реЗ рд╡реНрдпрд╛рдХрд░рдг рдпреВрдирд┐рдХреЛрдб рд╡рд░реНрдгреЛрдВ рдореЗрдВ рдПрдиреНрдХреЛрдб рдХрд░рдирд╛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕рдВрднрд╡ рд╣реИред :

// rule matching [\u{1F4AD}-\u{1F4AF}]
my_class = "\uD83D" [\uDCAD-\uDCAF]

// rule matching any Unicode character
my_strict_unicode_dot_rule = $( [\u0000-\uD7FF\uE000-\uFFFF] / [\uD800-\uDBFF] [\uDC00-\uDFFF] )

// rule matching any Unicode character or a lone surrogate
my_loose_unicode_dot_rule = $( [\uD800-\uDBFF] [\uDC00-\uDFFF]? / [\u0000-\uFFFF] )

рддреЛ рдПрдХ рд╡реНрдпрд╛рдХрд░рдг рд▓реЗрдЦрдХ рдЬреЛ рдПрдХ рддреНрд╡рд░рд┐рдд рдкрд╛рд░реНрд╕рд░ рдЪрд╛рд╣рддрд╛ рд╣реИ рдФрд░ рдЕрдкрдиреЗ рд╡реНрдпрд╛рдХрд░рдг рдХреЗ рд╡рд┐рд╢рд┐рд╖реНрдЯ рднрд╛рдЧреЛрдВ рдореЗрдВ рдпреВрдирд┐рдХреЛрдб рд╡рд░реНрдгреЛрдВ рдХреЛ рдкрд╣рдЪрд╛рдирдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реИ, рдРрд╕реЗ рдирд┐рдпрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдирддреАрдЬрддрди рдпрд╣ рдореБрджреНрджрд╛ рдпреВрдЯреАрдПрдл -16 рдЗрдВрдЯрд░реНрдирд▓ рдореЗрдВ рдЧреЛрддрд╛ рд▓рдЧрд╛рдП рдмрд┐рдирд╛ рдпреВрдирд┐рдХреЛрдб рдкреНрд░рдмрдВрдзрди рдХреЛ рд╕рд░рд▓ рдмрдирд╛рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИред


рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ, рдореИрдВрдиреЗ рдЕрдкрдиреЗ рдкрд╣рд▓реЗ рдкреНрд░рдпрд╛рд╕ рдореЗрдВ рдорд╛рдирд╛ рдХрд┐ рд╡реНрдпрд╛рдХрд░рдг рдкрд╛рда рдпреВрдирд┐рдХреЛрдб рд╡рд░реНрдгреЛрдВ рдореЗрдВ рдПрдиреНрдХреЛрдб рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдФрд░ рдкреАрдИрдЬреА.рдЬреЗрдПрд╕ рдкрд╛рд░реНрд╕рд░ рдХреЗ 'рдбреЙрдЯ' рдирд┐рдпрдо рдиреЗ рдпреВрдирд┐рдХреЛрдб рд╡рд░реНрдгреЛрдВ рдХреЛ рдорд╛рдиреНрдпрддрд╛ рджреА рдереАред рджреВрд╕рд░реЗ рдФрд░ рдЕрдВрддрд┐рдо рдкреНрд░рдпрд╛рд╕ рдиреЗ рдЗрд╕реЗ рд╡рд╛рдкрд╕ рдХрд░ рджрд┐рдпрд╛ (рддреНрд╡рд░рд┐рдд рдкрд╛рд░реНрд╕рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдбреЙрдЯ рдирд┐рдпрдо рд╣рдореЗрд╢рд╛ 1 рдХреЛрдб рдЗрдХрд╛рдИ рд╣реИ) рдФрд░ рд╡рд░реНрдг рд╡рд░реНрдЧреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдпреВрдирд┐рдХреЛрдб рд╡рд░реНрдгреЛрдВ рдХреЛ рдлрд┐рд░ рд╕реЗ рд╕рдВрдЧрдард┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рдЬрд╝рд┐рдЯрд░ рддреИрдпрд╛рд░-рдпреВрдирд┐рдХреЛрдб-рдХреНрд▓рд╛рд╕реЗрдЬ рдореЗрдВ рдПрдХ рдЫреЛрдЯрд╛ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рд╣реИ (рдЙрджрд╛рд╣рд░рдг [\uD83D\uDCAD-\uD83D\uDCAF] рдХреЛ рд╡рд╛рдХреНрдпрд╛рддреНрдордХ рд░реВрдк рд╕реЗ [ "\uD83D", [ "\uDCAD", "\uD83D" ], "\uDCAF" ] рд░реВрдк рдореЗрдВ рдкрд╣рдЪрд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдпрд╣ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдЗрд╕реЗ [ [ "\uD83D\uDCAD", "\uD83D\uDCAF" ] ] )ред рдореИрдВрдиреЗ рдЗрд╕реЗ рд╡реНрдпрд╛рдХрд░рдг рдореЗрдВ рд╣реА рд▓рд┐рдЦрдиреЗ рдХреА рдкрд░рд┐рдХрд▓реНрдкрдирд╛ рдХреА рдереА, рд▓реЗрдХрд┐рди рдпрд╣ рд▓рдВрдмрд╛ рд╣реЛрддрд╛ рдФрд░ рдЕрдзрд┐рдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рд╡рд░реНрдгреЛрдВ ("ЁЯТп", "uD83DuDCAF", "u{1F4AF}") рдХреЛ рдПрдиреНрдХреЛрдб рдХрд░рдиреЗ рдХреЗ рдХрдИ рддрд░реАрдХреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдЗрд╕реЗ рд▓рд┐рдЦрдирд╛ рдЖрд╕рд╛рди рд╣реИред рдПрдХ рдЖрдЧрдВрддреБрдХ рдореЗрдВред

рдореИрдВрдиреЗ рджреВрд╕рд░реЗ рдкреНрд░рдпрд╛рд╕ рдореЗрдВ рджреЛ рдСрдкрдХреЛрдб рдЬреЛрдбрд╝реЗ:

  • MATCH_ASTRAL MATCH_ANY рдХреЗ рд╕рдорд╛рди рд▓реЗрдХрд┐рди рдпреВрдирд┐рдХреЛрдб рд╡рд░реНрдг рд╕реЗ рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИ (input.charCodeAt(currPos) & 0xFC00) === 0xD800 && input.length > currPos + 1 && (input.charCodeAt(currPos+1) & 0xFC00) === 0xDC00
  • MATCH_CLASS2 рдмрд╣реБрдд MATCH_CLASS рдХреЗ рд╕рдорд╛рди рд╣реИ рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ рдПрдХ classes[c].test(input.substring(currPos, currPos+2) рдмрдЬрд╛рдп рдЕрдЧрд▓реА рджреЛ рдХреЛрдб рдЗрдХрд╛рдЗрдпреЛрдВ рд╕реЗ рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИ
    рдлрд┐рд░, рдпрджрд┐ рд╣рдо 2-рдХреЛрдб-рдЗрдХрд╛рдИ рд╡рд░реНрдг рдпрд╛ 1-рдХреЛрдб-рдЗрдХрд╛рдИ рд╡рд░реНрдг рд╕реЗ рдореЗрд▓ рдЦрд╛рддреЗ рд╣реИрдВ, рддреЛ рдХрд░реНрд╕рд░ рдХреЛ opcode ACCEPT_N рд╕рд╛рде 1 рдпрд╛ 2 рдХреЛрдб рдЗрдХрд╛рдЗрдпреЛрдВ рд╕реЗ рдмрдврд╝рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рд╡рд░реНрдг рд╡рд░реНрдЧ рджреЛ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рд╣реЛрддреЗ рд╣реИрдВ рдирд┐рд╢реНрдЪрд┐рдд рд▓рдВрдмрд╛рдИ (1 рдпрд╛ 2 рдХреЛрдб рдЗрдХрд╛рдЗрдпреЛрдВ) рдХреЗ рд░реЗрдЧреЗрдХреНрд╕ред

рдореИрдВрдиреЗ "рдореИрдЪ" рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд╕рд╛рде рдХреБрдЫ рдЕрдиреБрдХреВрд▓рди рдХрд┐рдП, рдкреАрдврд╝реА рдХреЗ рджреМрд░рд╛рди рдореЛрдб (рдпреВрдирд┐рдХреЛрдб рдпрд╛ рдирд╣реАрдВ) рдФрд░ рд╡рд░реНрдг рд╡рд░реНрдЧ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ "рдореГрдд рдХреЛрдб" рдкрде рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░ рджрд┐рдпрд╛ред

рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдЗрд╕ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ рд░реЗрдЧреЗрдХреНрд╕ рд╣рдореЗрд╢рд╛ рд╕рдХрд╛рд░рд╛рддреНрдордХ рд╣реЛрддреЗ рд╣реИрдВ: рдЙрд▓рдЯрд╛ рд░реЗрдЧреЗрдХреНрд╕ рд╡рд┐рдкрд░реАрдд рдкрд░рд┐рдгрд╛рдо рджреЗрддрд╛ рд╣реИ рдЬрд┐рд╕рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдмрд╛рдЗрдЯрдХреЛрдб рд╣реЛрддрд╛ рд╣реИред рд╕рд░реЛрдЧреЗрдЯ рдХреЗ рдЖрд╕рдкрд╛рд╕ рдХреЗ рдорд╛рдорд▓реЛрдВ рд╕реЗ рдмрдЪрдирд╛ рдЖрд╕рд╛рди рдерд╛ред

рдореИрдВрдиреЗ рдХреБрдЫ рджрд╕реНрддрд╛рд╡реЗрдЬ рд▓рд┐рдЦреЗ рд╣реИрдВ рд▓реЗрдХрд┐рди рдореИрдВ рд╢рд╛рдпрдж рдХреБрдЫ рдФрд░ рдЬреЛрдбрд╝реВрдВрдЧрд╛ (рд╢рд╛рдпрдж рд╡рд┐рдХрд▓реНрдк (рд╡рд┐рдХрд▓реНрдкреЛрдВ) рдпреВрдирд┐рдХреЛрдб рдХреЗ рд╡рд┐рд╡рд░рдг рдФрд░ рдШрд░-рдирд┐рд░реНрдорд┐рдд рдпреВрдирд┐рдХреЛрдб рдбреЙрдЯ рдирд┐рдпрдо рдХреЗ рд╕рд╛рде рд╕реНрдирд┐рдкреЗрдЯреНрд╕ рдХреЛ рдЬрд▓реНрджреА рд╕реЗ рд╕рдордЭрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЧрд╛рдЗрдб)ред рдореИрдВ рдЗрд╕реЗ рдкреАрдЖрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдЬрдорд╛ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдкрд░реАрдХреНрд╖рдг рдЬреЛрдбрд╝реВрдВрдЧрд╛ред

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕