Pegjs: рдкреНрд░реАрдкреНрд░реЛрд╕реЗрд╕рд░? рд╕реНрд░реЛрдд рдХреЛрдб рдкреБрди: рдЙрддреНрдкрдиреНрди рдХрд░реЗрдВ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 12 рдирд╡ре░ 2017  ┬╖  5рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: pegjs/pegjs

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

discussion question

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

@YemSalat рд╕рд╣реА рд╣реИ, PEG.js рд╕рд┐рд░реНрдл рдПрдХ рдкрд╛рд░реНрд╕рд░ рдЬрдирд░реЗрдЯрд░ рд╣реИред

  1. PEG.js рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рдкрд╛рд░реНрд╕рд░ рдмрдирд╛рдПрдВ (рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдХрд╛рд░реНрд░рд╡рд╛рдЗрдпрд╛рдВ рдПрдПрд╕рдЯреА рд▓реМрдЯрд╛рдПрдВ)
  2. AST . рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрдирд░реЗрдЯ рдХрд┐рдП рдЧрдП рдкрд╛рд░реНрд╕рд░ рдХреЗ рд╕рд╛рде рдЕрдкрдиреА рднрд╛рд╖рд╛ рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░реЗрдВ
  3. рдЯреНрд░рд╛рдВрд╕рдлреЙрд░реНрдо рдкрд╛рд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдПрд╕рдЯреА рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░реЗрдВ
  4. рд╕реНрд░реЛрдд рдХреЛрдб рдкреБрди: рдЙрддреНрдкрдиреНрди рдХрд░реЗрдВ

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

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

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

@mattkanwisher рдХреНрд╖рдорд╛ рдХрд░реЗрдВ, рдореИрдВ рд╕рдордЭ рдирд╣реАрдВ рдкрд╛ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рд╕реНрд░реЛрдд рдХреЛ "рдкреБрди: рдЙрддреНрдкрдиреНрди" рдХрд░рдХреЗ рдЖрдкрдХрд╛ рдХреНрдпрд╛ рдорддрд▓рдм рд╣реИред
рдХреНрдпрд╛ рдЖрдк рдХреГрдкрдпрд╛ рдереЛрдбрд╝рд╛ рд╕реНрдкрд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ? рдпрджрд┐ рдЖрдкрдХрд╛ рдорддрд▓рдм рдПрдПрд╕рдЯреА рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдХреЛрдб рддреИрдпрд╛рд░ рдХрд░рдирд╛ рд╣реИ - рдЖрдкрдХреЛ рдЙрд╕ рддрд░реНрдХ рдХреЛ рд╕реНрд╡рдпрдВ рд▓рд┐рдЦрдирд╛ рд╣реЛрдЧрд╛, рдпрд╛ рддреЛ рд╕реАрдзреЗ рд╡реНрдпрд╛рдХрд░рдг рдореЗрдВ рдпрд╛ рдПрдХ рдЕрд▓рдЧ рдЯреБрдХрдбрд╝реЗ рдХреЗ рд░реВрдк рдореЗрдВред

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

рд╣рдореНрдо, рдпрджрд┐ рдЖрдк _рдореВрд▓_ рд╕реНрд░реЛрдд рдЪрд╛рд╣рддреЗ рд╣реИрдВ - рддреЛ рдЖрдкрдХреЗ рдкрд╛рд╕ рдЗрд╕реЗ рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрднреА рднреА w/oa рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА, рд╣реИ рдирд╛?
рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдЖрдк рдЗрд╕рдХрд╛ рдПрдХ рд╕рдВрд╢реЛрдзрд┐рдд рд╕рдВрд╕реНрдХрд░рдг рдЪрд╛рд╣рддреЗ рд╣реИрдВ - рдЖрдкрдХреЛ рдХреЛрдб рдЬрдирд░реЗрд╢рди рд▓реЙрдЬрд┐рдХ рдЦреБрдж рд▓рд┐рдЦрдирд╛ рд╣реЛрдЧрд╛ред
( @Mingun @futagoza рдЕрдЧрд░ рдореИрдВ рдЧрд▓рдд рд╣реВрдВ рддреЛ рдХреГрдкрдпрд╛ рдореБрдЭреЗ рд╕реБрдзрд╛рд░реЗрдВ)

@YemSalat рд╕рд╣реА рд╣реИ, PEG.js рд╕рд┐рд░реНрдл рдПрдХ рдкрд╛рд░реНрд╕рд░ рдЬрдирд░реЗрдЯрд░ рд╣реИред

  1. PEG.js рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рдкрд╛рд░реНрд╕рд░ рдмрдирд╛рдПрдВ (рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдХрд╛рд░реНрд░рд╡рд╛рдЗрдпрд╛рдВ рдПрдПрд╕рдЯреА рд▓реМрдЯрд╛рдПрдВ)
  2. AST . рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрдирд░реЗрдЯ рдХрд┐рдП рдЧрдП рдкрд╛рд░реНрд╕рд░ рдХреЗ рд╕рд╛рде рдЕрдкрдиреА рднрд╛рд╖рд╛ рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░реЗрдВ
  3. рдЯреНрд░рд╛рдВрд╕рдлреЙрд░реНрдо рдкрд╛рд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдПрд╕рдЯреА рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░реЗрдВ
  4. рд╕реНрд░реЛрдд рдХреЛрдб рдкреБрди: рдЙрддреНрдкрдиреНрди рдХрд░реЗрдВ

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

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

рддреЛ рдореИрдВрдиреЗ рдЗрд╕реЗ рд╕рдордЭ рд▓рд┐рдпрд╛ред рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдЗрд╕ рдмрдЧ рдкреЛрд╕реНрдЯ рдкрд░ рдЖрдиреЗ рд╡рд╛рд▓реЗ рдХрд┐рд╕реА рднреА рд╡реНрдпрдХреНрддрд┐ рдХреЗ рд▓рд┐рдПред рдмрд╕ "рдж рд╕реБрдкрд░ рдЯрд┐рдиреА рдХрдВрдкрд╛рдЗрд▓рд░" рдХреЗ рд▓рд┐рдП рд╕реЛрд░реНрд╕ рдХреЛрдб рдкрдврд╝реЗрдВред рдЙрд╕рдХреЗ рдмрд╛рдж рдореИрдВ рдХреБрдЫ рд╣реА рдШрдВрдЯреЛрдВ рдореЗрдВ рдЕрдкрдирд╛ рдкреНрд░реАрдкреНрд░реЛрд╕реЗрд╕рд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП pegjs рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдерд╛

https://github.com/thejameskyle/the-super-tiny-compiler

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

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

doersino picture doersino  ┬╖  15рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

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

marek-baranowski picture marek-baranowski  ┬╖  6рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

ronjouch picture ronjouch  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

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