рд╕рдВрдХрд▓рди рдХреЛрдЯрд▓рд┐рди: рдЬреЗрдЯрдмреНрд░реЗрдиреНрд╕ рд╡реАрдПрд╕ рдПрдПрдирдЯреАрдПрд▓рдЖрд░ рд╡реАрдПрд╕ рдЬрд╛рд╡рд╛рд╕реАрд╕реА


рдХреЛрдЯрд▓рд┐рди рдкрд╛рд░реНрд╕рд┐рдВрдЧ рдХрд┐рддрдиреА рддреЗрдЬреА рд╕реЗ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЗрд╕рд╕реЗ рдХреНрдпрд╛ рдлрд░реНрдХ рдкрдбрд╝рддрд╛ рд╣реИ? JavaCC рдпрд╛ ANTLR? рдХреНрдпрд╛ JetBrains рд╕реНрд░реЛрдд рдХреЛрдб рдЙрдкрдпреБрдХреНрдд рд╣реИрдВ?

рддреБрд▓рдирд╛ рдХреАрдЬрд┐рдП, рдХрд▓реНрдкрдирд╛ рдХреАрдЬрд┐рдП рдФрд░ рдЖрд╢реНрдЪрд░реНрдп рдХреАрдЬрд┐рдПред

рдЯреАрдПрд▓, рдбреЙ


JetBrains рдХреЛ рдЦреАрдВрдЪрдирд╛ рдмрд╣реБрдд рдореБрд╢реНрдХрд┐рд▓ рд╣реИ, ANTLR рдкреНрд░рдЪрд╛рд░ рд╣реИ рд▓реЗрдХрд┐рди рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рд░реВрдк рд╕реЗ рдзреАрдорд╛ рд╣реИ, рдФрд░ JavaCC рд▓рд┐рдЦрдирд╛ рдмрдВрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЬрд▓реНрджреА рд╣реИред

рддреАрди рдЕрд▓рдЧ-рдЕрд▓рдЧ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрдиреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рд╕рд░рд▓ рдХреЛрдЯрд▓рд┐рди рдлрд╝рд╛рдЗрд▓ рдкрд╛рд░реНрд╕ рдХрд░рдирд╛:
1000 () JetBrains 3254 16,6 35.3 JetBrains (w/o analyzer) 1423 0,9 35.3 ANTLR 3705 137,2 1.4 JavaCC 19 0,1 0.81000 () JetBrains 3254 16,6 35.3 JetBrains (w/o analyzer) 1423 0,9 35.3 ANTLR 3705 137,2 1.4 JavaCC 19 0,1 0.81000 () JetBrains 3254 16,6 35.3 JetBrains (w/o analyzer) 1423 0,9 35.3 ANTLR 3705 137,2 1.4 JavaCC 19 0,1 0.81000 () JetBrains 3254 16,6 35.3 JetBrains (w/o analyzer) 1423 0,9 35.3 ANTLR 3705 137,2 1.4 JavaCC 19 0,1 0.8
1000 () JetBrains 3254 16,6 35.3 JetBrains (w/o analyzer) 1423 0,9 35.3 ANTLR 3705 137,2 1.4 JavaCC 19 0,1 0.81000 () JetBrains 3254 16,6 35.3 JetBrains (w/o analyzer) 1423 0,9 35.3 ANTLR 3705 137,2 1.4 JavaCC 19 0,1 0.81000 () JetBrains 3254 16,6 35.3 JetBrains (w/o analyzer) 1423 0,9 35.3 ANTLR 3705 137,2 1.4 JavaCC 19 0,1 0.81000 () JetBrains 3254 16,6 35.3 JetBrains (w/o analyzer) 1423 0,9 35.3 ANTLR 3705 137,2 1.4 JavaCC 19 0,1 0.8
1000 () JetBrains 3254 16,6 35.3 JetBrains (w/o analyzer) 1423 0,9 35.3 ANTLR 3705 137,2 1.4 JavaCC 19 0,1 0.81000 () JetBrains 3254 16,6 35.3 JetBrains (w/o analyzer) 1423 0,9 35.3 ANTLR 3705 137,2 1.4 JavaCC 19 0,1 0.81000 () JetBrains 3254 16,6 35.3 JetBrains (w/o analyzer) 1423 0,9 35.3 ANTLR 3705 137,2 1.4 JavaCC 19 0,1 0.81000 () JetBrains 3254 16,6 35.3 JetBrains (w/o analyzer) 1423 0,9 35.3 ANTLR 3705 137,2 1.4 JavaCC 19 0,1 0.8
1000 () JetBrains 3254 16,6 35.3 JetBrains (w/o analyzer) 1423 0,9 35.3 ANTLR 3705 137,2 1.4 JavaCC 19 0,1 0.81000 () JetBrains 3254 16,6 35.3 JetBrains (w/o analyzer) 1423 0,9 35.3 ANTLR 3705 137,2 1.4 JavaCC 19 0,1 0.81000 () JetBrains 3254 16,6 35.3 JetBrains (w/o analyzer) 1423 0,9 35.3 ANTLR 3705 137,2 1.4 JavaCC 19 0,1 0.81000 () JetBrains 3254 16,6 35.3 JetBrains (w/o analyzer) 1423 0,9 35.3 ANTLR 3705 137,2 1.4 JavaCC 19 0,1 0.8
1000 () JetBrains 3254 16,6 35.3 JetBrains (w/o analyzer) 1423 0,9 35.3 ANTLR 3705 137,2 1.4 JavaCC 19 0,1 0.81000 () JetBrains 3254 16,6 35.3 JetBrains (w/o analyzer) 1423 0,9 35.3 ANTLR 3705 137,2 1.4 JavaCC 19 0,1 0.81000 () JetBrains 3254 16,6 35.3 JetBrains (w/o analyzer) 1423 0,9 35.3 ANTLR 3705 137,2 1.4 JavaCC 19 0,1 0.81000 () JetBrains 3254 16,6 35.3 JetBrains (w/o analyzer) 1423 0,9 35.3 ANTLR 3705 137,2 1.4 JavaCC 19 0,1 0.8

рдПрдХ рджрд┐рди рдареАрдХ рдзреВрдк ...


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

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

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

рдЬреЗрдЯрдмреНрд░реЗрдиреНрд╕


JetBrains рдХреЗ рд▓реЛрдЧреЛрдВ рдиреЗ рдЕрдкрдиреЗ рд╕рдВрдХрд▓рдХ рдХреЛрдб рдХреЛ рдЧрд┐рддреБрдм рдореЗрдВ рдЕрдкрд▓реЛрдб рдХрд┐рдпрд╛ред рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░реЗрдВ, рдЖрдк рдпрд╣рд╛рдВ рдФрд░ рдпрд╣рд╛рдВ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ ред

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рдореИрдВрдиреЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХреЗ рд╕рд╛рде рдЙрдирдХреЗ рдкрд╛рд░реНрд╕рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛, рдХреНрдпреЛрдВрдХрд┐ рдХрд┐рд╕реА рдЕрдиреНрдп рднрд╛рд╖рд╛ рдореЗрдВ рдЕрдиреБрд╡рд╛рдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдпрд╣ рдЬрд╛рдирдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ рдХрд┐ рд╡реЗрд░рд┐рдПрдмрд▓ val x = vec3() рдХреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдП рдмрд┐рдирд╛ рдХрд┐рд╕ рдкреНрд░рдХрд╛рд░ рдХрд╛ рд╣реИред рдпрд╣рд╛рдВ рдкрд╛рдардХ рдХреЗ рд▓рд┐рдП рдкреНрд░рдХрд╛рд░ рд╕реНрдкрд╖реНрдЯ рд╣реИ, рд▓реЗрдХрд┐рди рдПрдПрд╕рдЯреА рдореЗрдВ рдпрд╣ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЗрддрдирд╛ рдЖрд╕рд╛рди рдирд╣реАрдВ рд╣реИ, рдЦрд╛рд╕рдХрд░ рдЬрдм рдПрдХ рдЕрдиреНрдп рдЪрд░ рджрд╛рдИрдВ рдУрд░, рдпрд╛ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЙрд▓ рд╣реИред

рдпрд╣рд╛рдБ рдореИрдВ рдирд┐рд░рд╛рд╢ рдерд╛ред рдПрдХ рдЖрджрд┐рдо рдлрд╝рд╛рдЗрд▓ рдкрд░ рдкрд╛рд░реНрд╕рд░ рдХрд╛ рдкрд╣рд▓рд╛ рд▓реЙрдиреНрдЪ 3s (THREE SECONDS) рд▓реЗрддрд╛ рд╣реИред

Kotlin JetBrains parser
first call elapsed : 3254.482ms
min time in next 10 calls: 70.071ms
min time in next 100 calls: 29.973ms
min time in next 1000 calls: 16.655ms
Whole time for 1111 calls: 40.888756 seconds

рдРрд╕реЗ рд╕рдордп рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕реНрдкрд╖реНрдЯ рдЕрд╕реБрд╡рд┐рдзрд╛рдПрдБ рд╣реЛрддреА рд╣реИрдВ:

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

рдкреНрд▓рд╕ рдХреЛ рдкрд╛рд░реНрд╕рд░ рдХреЛ рдЧрд░реНрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддреАрди рд╕реЗрдХрдВрдб - рдпрд╣ рдЕрд╕реНрд╡реАрдХрд╛рд░реНрдп рд╣реИред рдмреЗрд╢рдХ, рдпрд╣ рддреБрд░рдВрдд рд╕реНрдкрд╖реНрдЯ рд╣реЛ рдЧрдпрд╛ рдХрд┐ рдмрд╛рдж рдХреА рдХреЙрд▓ рдХреЗ рджреМрд░рд╛рди, рдкрд╛рд░реНрд╕рд┐рдВрдЧ рдХрд╛ рд╕рдордп 50ms рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ 20ms рддрдХ рдЪрд▓рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рд╕реЗ рдЕрд╕реБрд╡рд┐рдзрд╛ 2 рдирдВрдмрд░ рдХреЛ рд╣рдЯрд╛ рджреЗрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдмрд╛рдХреА рджреЛ рдХрд╣реАрдВ рдирд╣реАрдВ рдЬрд╛рддреЗред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, 50ms рдкреНрд░рддрд┐ рдлрд╝рд╛рдЗрд▓ рдкреНрд▓рд╕ 2500ms рдкреНрд░рддрд┐ 50 рдлрд╛рдЗрд▓реЗрдВ (рдПрдХ shader 1-2 рдлрд╛рдЗрд▓реЗрдВ рд╣реИ)ред рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдЕрдЧрд░ рдпрд╣ Android рд╣реИ? (рдпрд╣рд╛рдВ рд╣рдо рдХреЗрд╡рд▓ рд╕рдордп рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВред)

рдЙрд▓реНрд▓реЗрдЦрдиреАрдп рдЬреЗрдЖрдИрдЯреА рдХрд╛ рдкрд╛рдЧрд▓ рдХрд╛рдо рд╣реИред рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдлрд╝рд╛рдЗрд▓ рдХреЗ рд▓рд┐рдП рдкрд╛рд░реНрд╕рд┐рдВрдЧ рдХрд╛ рд╕рдордп 70ms рд╕реЗ 16ms рддрдХ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ, рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, JIT рд╕реНрд╡рдпрдВ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХрд╛ рдЙрдкрднреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рджреВрд╕рд░реА рдмрд╛рдд, рдПрдХ рдЕрд▓рдЧ JVM рдкрд░ рдкрд░рд┐рдгрд╛рдо рдмрд╣реБрдд рднрд┐рдиреНрди рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред

рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдореЗрдВ рдХрд┐ рдпреЗ рдирдВрдмрд░ рдХрд╣рд╛рдБ рд╕реЗ рдЖрдП рдереЗ, рдПрдХ рд╡рд┐рдХрд▓реНрдк рдерд╛ - рдмрд┐рдирд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХреЗ рдЙрдирдХреЗ рдкрд╛рд░реНрд╕рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред рдЖрдЦрд┐рд░рдХрд╛рд░, рдореБрдЭреЗ рдХреЗрд╡рд▓ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдФрд░ рдпрд╣ рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рдЖрд╕рд╛рдиреА рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬрдмрдХрд┐ рдЬреЗрдЯрдмреНрд░реЗрди рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХреБрдЫ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдПрдХрддреНрд░ рдХрд░рддрд╛ рд╣реИред рдФрд░ рдлрд┐рд░ рд╕реНрдЯрд╛рд░реНрдЯ-рдЕрдк рдХрд╛ рд╕рдордп рдЖрдзреЗ рд╕реЗ рдХрдо рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ (рд▓реЗрдХрд┐рди рд▓рдЧрднрдЧ рдПрдХ рд╕реЗрдХрдВрдб рдФрд░ рдЖрдзрд╛ рд╡реИрд╕реЗ рднреА рд╕рднреНрдп рд╣реЛрддрд╛ рд╣реИ), рдФрд░ рдмрд╛рдж рдХреА рдХреЙрд▓ рдХрд╛ рд╕рдордп рдкрд╣рд▓реЗ рд╕реЗ рдХрд╣реАрдВ рдЕрдзрд┐рдХ рджрд┐рд▓рдЪрд╕реНрдк рд╣реИ - рдкрд╣рд▓реЗ рджрд╕ рдореЗрдВ 8ms рд╕реЗ рд▓реЗрдХрд░ 0.9 рддрдХ рд╣рдЬрд╛рд░ рдореЗрдВ рдХрд╣реАрдВред

Kotlin JetBrains parser (without analyzer) ()
first call elapsed : 1423.731ms
min time in next 10 calls: 8.275ms
min time in next 100 calls: 2.323ms
min time in next 1000 calls: 0.974ms
Whole time for 1111 calls: 3.6884801 seconds
()
first call elapsed : 1423.731ms
min time in next 10 calls: 8.275ms
min time in next 100 calls: 2.323ms
min time in next 1000 calls: 0.974ms
Whole time for 1111 calls: 3.6884801 seconds

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

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

ANTLR


JavaCC рдореЗрдВ рдХреЛрдИ рдкрд╛рд░реНрд╕рд░ рдирд╣реАрдВ рдерд╛, рд▓реЗрдХрд┐рди рдЙрдореНрдореАрдж рдХреЗ рдореБрддрд╛рдмрд┐рдХ ANTLR рдкрд░, рд╡рд╣рд╛рдБ ( рдПрдХ , рджреЛ ) рд╣реИрдВред

рд▓реЗрдХрд┐рди рдЬреЛ рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рдерд╛ рд╡рд╣ рдерд╛ рдЧрддрд┐ред рд▓реЛрдбрд┐рдВрдЧ (рдкрд╣рд▓реА рдХреЙрд▓) рдХреЗ рд▓рд┐рдП 3s рдФрд░ рдмрд╛рдж рдХреА рдХреЙрд▓ рдХреЗ рд▓рд┐рдП рд╢рд╛рдирджрд╛рд░ 140msред рдпрд╣рд╛рдВ, рди рдХреЗрд╡рд▓ рдкрд╣рд▓рд╛ рд▓реЙрдиреНрдЪ рдЕрдкреНрд░рд┐рдп рд░реВрдк рд╕реЗ рд▓рдВрдмреЗ рд╕рдордп рддрдХ рд░рд╣рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдлрд┐рд░ рд╕реНрдерд┐рддрд┐ рдХреЛ рдареАрдХ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЬрд╛рд╣рд┐рд░рд╛ рддреМрд░ рдкрд░, JetBrains рдХреЗ рд▓реЛрдЧреЛрдВ рдиреЗ JIT рдХреЛ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдЕрдкрдиреЗ рдХреЛрдб рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдХрд░ рдХреБрдЫ рдЬрд╛рджреВ рдХрд┐рдпрд╛ред рдХреНрдпреЛрдВрдХрд┐ ANTLR рд╕рдордп рдХреЗ рд╕рд╛рде рдЕрдиреБрдХреВрд▓рд┐рдд рдирд╣реАрдВ рд╣реИред

Kotlin ANTLR parser ()
first call elapsed : 3705.101ms
min time in next 10 calls: 139.596ms
min time in next 100 calls: 138.279ms
min time in next 1000 calls: 137.20099ms
Whole time for 1111 calls: 161.90619 seconds
()
first call elapsed : 3705.101ms
min time in next 10 calls: 139.596ms
min time in next 100 calls: 138.279ms
min time in next 1000 calls: 137.20099ms
Whole time for 1111 calls: 161.90619 seconds

JavaCC


рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рд╣рдо ANTLR рдХреА рд╕реЗрд╡рд╛рдУрдВ рд╕реЗ рдЗрдирдХрд╛рд░ рдХрд░рддреЗ рд╣реБрдП рдЖрд╢реНрдЪрд░реНрдпрдЪрдХрд┐рдд рд╣реИрдВред рдкрд╛рд░реНрд╕рд┐рдВрдЧ рдХреЛ рдЗрддрдирд╛ рд▓рдВрдмрд╛ рд╣реЛрдирд╛ рдЬрд░реВрд░реА рдирд╣реАрдВ рд╣реИ! рдХреЛрдЯрд▓рд┐рди рдХреЗ рд╡реНрдпрд╛рдХрд░рдг рдореЗрдВ рдХреЛрдИ рдмреНрд░рд╣реНрдорд╛рдВрдбреАрдп рдЕрд╕реНрдкрд╖реНрдЯрддрд╛ рдирд╣реАрдВ рд╣реИ, рдФрд░ рдореИрдВрдиреЗ рдЗрд╕реЗ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рд░реВрдк рд╕реЗ рдЦрд╛рд▓реА рдлрд╛рдЗрд▓реЛрдВ рдкрд░ рдЬрд╛рдВрдЪрд╛ред рддреЛ, рдкреБрд░рд╛рдиреЗ рдЬрд╛рд╡рд╛рд╕реАрд╕реА рдХреЛ рдЙрдЬрд╛рдЧрд░ рдХрд░рдиреЗ рдХрд╛ рд╕рдордп рд╣реИ, рдЕрдкрдиреА рдЖрд╕реНрддреАрди рдКрдкрд░ рд░реЛрд▓ рдХрд░реЗрдВ, рдФрд░ рдлрд┐рд░ рднреА "рдЗрд╕реЗ рд╕реНрд╡рдпрдВ рдХрд░реЗрдВ рдФрд░ рдХреИрд╕реЗ рдХрд░реЗрдВред"

рдЗрд╕ рдмрд╛рд░ рд╕рдВрдЦреНрдпрд╛ рдЙрдореНрдореАрдж рдХреЗ рдореБрддрд╛рдмрд┐рдХ рдирд┐рдХрд▓реА, рд╣рд╛рд▓рд╛рдВрдХрд┐ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЗ рд╕рд╛рде рддреБрд▓рдирд╛ рдореЗрдВ - рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рд░реВрдк рд╕реЗ рд╕реБрдЦрджред

Kotlin JavaCC parser ()
first call elapsed : 19.024ms
min time in next 10 calls: 1.952ms
min time in next 100 calls: 0.379ms
min time in next 1000 calls: 0.114ms
Whole time for 1111 calls: 0.38707677 seconds
()
first call elapsed : 19.024ms
min time in next 10 calls: 1.952ms
min time in next 100 calls: 0.379ms
min time in next 1000 calls: 0.114ms
Whole time for 1111 calls: 0.38707677 seconds

рдЕрдкрдиреЗ JavaCC рдкрд╛рд░реНрд╕рд░ рдХреЗ рдЕрдЪрд╛рдирдХ рдкреЗрд╢реЗрд╡рд░реЛрдВ
рдмреЗрд╢рдХ, рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдкрд╛рд░реНрд╕рд░ рд▓рд┐рдЦрдиреЗ рдХреЗ рдмрдЬрд╛рдп, рдореИрдВ рддреИрдпрд╛рд░ рд╕рдорд╛рдзрд╛рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ред рд▓реЗрдХрд┐рди рдореМрдЬреВрджрд╛ рд▓реЛрдЧреЛрдВ рдХреЗ рднрд╛рд░реА рдиреБрдХрд╕рд╛рди рд╣реИрдВ:

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

рдЬрдмрдХрд┐ рдкрд░рд┐рдгрд╛рдореА JavaCC рдкрд╛рд░реНрд╕рд░ рд╣реИ

+ рдЙрддреНрдХреГрд╖реНрдЯ рдЧрддрд┐ рд╢реБрд░реВ рдФрд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рджреЛрдиреЛрдВ рдореЗрдВ
+ рдХреЗрд╡рд▓ рдкрд╛рд░реНрд╕рд░ рдХреЗ рдХреБрдЫ рд╡рд░реНрдЧ

рдирд┐рд╖реНрдХрд░реНрд╖


JetBrains рдХреЛ рдЦреАрдВрдЪрдирд╛ рдмрд╣реБрдд рдореБрд╢реНрдХрд┐рд▓ рд╣реИ, ANTLR рдкреНрд░рдЪрд╛рд░ рд╣реИ рд▓реЗрдХрд┐рди рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рд░реВрдк рд╕реЗ рдзреАрдорд╛ рд╣реИ, рдФрд░ JavaCC рд▓рд┐рдЦрдирд╛ рдмрдВрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЬрд▓реНрджреА рд╣реИред

рддреАрди рдЕрд▓рдЧ-рдЕрд▓рдЧ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрдиреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рд╕рд░рд▓ рдХреЛрдЯрд▓рд┐рди рдлрд╝рд╛рдЗрд▓ рдкрд╛рд░реНрд╕ рдХрд░рдирд╛:

1000 () JetBrains 3254 16,6 35.3 JetBrains (w/o analyzer) 1423 0,9 35.3 ANTLR 3705 137,2 1.4 JavaCC 19 0,1 0.81000 () JetBrains 3254 16,6 35.3 JetBrains (w/o analyzer) 1423 0,9 35.3 ANTLR 3705 137,2 1.4 JavaCC 19 0,1 0.81000 () JetBrains 3254 16,6 35.3 JetBrains (w/o analyzer) 1423 0,9 35.3 ANTLR 3705 137,2 1.4 JavaCC 19 0,1 0.81000 () JetBrains 3254 16,6 35.3 JetBrains (w/o analyzer) 1423 0,9 35.3 ANTLR 3705 137,2 1.4 JavaCC 19 0,1 0.8
1000 () JetBrains 3254 16,6 35.3 JetBrains (w/o analyzer) 1423 0,9 35.3 ANTLR 3705 137,2 1.4 JavaCC 19 0,1 0.81000 () JetBrains 3254 16,6 35.3 JetBrains (w/o analyzer) 1423 0,9 35.3 ANTLR 3705 137,2 1.4 JavaCC 19 0,1 0.81000 () JetBrains 3254 16,6 35.3 JetBrains (w/o analyzer) 1423 0,9 35.3 ANTLR 3705 137,2 1.4 JavaCC 19 0,1 0.81000 () JetBrains 3254 16,6 35.3 JetBrains (w/o analyzer) 1423 0,9 35.3 ANTLR 3705 137,2 1.4 JavaCC 19 0,1 0.8
1000 () JetBrains 3254 16,6 35.3 JetBrains (w/o analyzer) 1423 0,9 35.3 ANTLR 3705 137,2 1.4 JavaCC 19 0,1 0.81000 () JetBrains 3254 16,6 35.3 JetBrains (w/o analyzer) 1423 0,9 35.3 ANTLR 3705 137,2 1.4 JavaCC 19 0,1 0.81000 () JetBrains 3254 16,6 35.3 JetBrains (w/o analyzer) 1423 0,9 35.3 ANTLR 3705 137,2 1.4 JavaCC 19 0,1 0.81000 () JetBrains 3254 16,6 35.3 JetBrains (w/o analyzer) 1423 0,9 35.3 ANTLR 3705 137,2 1.4 JavaCC 19 0,1 0.8
1000 () JetBrains 3254 16,6 35.3 JetBrains (w/o analyzer) 1423 0,9 35.3 ANTLR 3705 137,2 1.4 JavaCC 19 0,1 0.81000 () JetBrains 3254 16,6 35.3 JetBrains (w/o analyzer) 1423 0,9 35.3 ANTLR 3705 137,2 1.4 JavaCC 19 0,1 0.81000 () JetBrains 3254 16,6 35.3 JetBrains (w/o analyzer) 1423 0,9 35.3 ANTLR 3705 137,2 1.4 JavaCC 19 0,1 0.81000 () JetBrains 3254 16,6 35.3 JetBrains (w/o analyzer) 1423 0,9 35.3 ANTLR 3705 137,2 1.4 JavaCC 19 0,1 0.8
1000 () JetBrains 3254 16,6 35.3 JetBrains (w/o analyzer) 1423 0,9 35.3 ANTLR 3705 137,2 1.4 JavaCC 19 0,1 0.81000 () JetBrains 3254 16,6 35.3 JetBrains (w/o analyzer) 1423 0,9 35.3 ANTLR 3705 137,2 1.4 JavaCC 19 0,1 0.81000 () JetBrains 3254 16,6 35.3 JetBrains (w/o analyzer) 1423 0,9 35.3 ANTLR 3705 137,2 1.4 JavaCC 19 0,1 0.81000 () JetBrains 3254 16,6 35.3 JetBrains (w/o analyzer) 1423 0,9 35.3 ANTLR 3705 137,2 1.4 JavaCC 19 0,1 0.8

рдХреБрдЫ рдмрд┐рдВрджреБ рдкрд░, рдореИрдВрдиреЗ рд╕рднреА рдирд┐рд░реНрднрд░рддрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдЬрд╛рд░ рдХреЗ рдЖрдХрд╛рд░ рдХреЛ рджреЗрдЦрдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред JetBrains рдЕрдкреЗрдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рдорд╣рд╛рди рд╣реИрдВ, рд▓реЗрдХрд┐рди ANTLR рд░рдирдЯрд╛рдЗрдо рдЕрдкрдиреЗ рдЖрдХрд╛рд░ рдХреЗ рд╕рд╛рде ред
рдЕрджреНрдпрддрди: рдкреНрд░рд╛рд░рдВрдн рдореЗрдВ, рдореИрдВрдиреЗ 15MB рд▓рд┐рдЦрд╛, рд▓реЗрдХрд┐рди, рдЬреИрд╕рд╛ рдХрд┐ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рд╕реБрдЭрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдпрджрд┐ рдЖрдк antlr4 рдХреЗ рдмрдЬрд╛рдп antlr4-runtime рдХреЛ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ, рддреЛ рдЖрдХрд╛рд░ рдЕрдкреЗрдХреНрд╖рд┐рдд рдорд╛рди рдкрд░ рдЧрд┐рд░ рдЬрд╛рддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐ JavaCC parser рд╕реНрд╡рдпрдВ ANTLR рд╕реЗ 10 рдЧреБрдирд╛ рдЫреЛрдЯрд╛ рд╣реИ (рдпрджрд┐ рдЖрдк рд╕реНрд╡рдпрдВ рдкрд╛рд░реНрд╕рд░реНрд╕ рдХреЛ рдЫреЛрдбрд╝рдХрд░ рд╕рднреА рдХреЛрдб рд╣рдЯрд╛ рджреЗрддреЗ рд╣реИрдВ)ред
рдЗрд╕ рддрд░рд╣ рдХреЗ рд░реВрдк рдореЗрдВ рдЬрд╛рд░ рдХрд╛ рдЖрдХрд╛рд░ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рд╕реЗрд▓ рдлреЛрди рдХреЗ рд▓рд┐рдПред рд▓реЗрдХрд┐рди рдпрд╣ рдбреЗрд╕реНрдХрдЯреЙрдк рдХреЗ рд▓рд┐рдП рднреА рдорд╛рдпрдиреЗ рд░рдЦрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдЗрд╕рдХрд╛ рдорддрд▓рдм рдЕрддрд┐рд░рд┐рдХреНрдд рдХреЛрдб рдХреА рдорд╛рддреНрд░рд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдмрдЧ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд┐рд╕реЗ рдЖрдИрдбреАрдИ рдХреЛ рдЗрдВрдбреЗрдХреНрд╕ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЬреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдкрд╣рд▓реЗ рд▓реЛрдб рдХреА рдЧрддрд┐ рдФрд░ рд╡рд╛рд░реНрдорд┐рдВрдЧ рдХреА рдЧрддрд┐ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЬрдЯрд┐рд▓ рдХреЛрдб рдХреЗ рд▓рд┐рдП, рджреВрд╕рд░реА рднрд╛рд╖рд╛ рдореЗрдВ рдЕрдиреБрд╡рд╛рдж рдХрд░рдиреЗ рдХреА рдмрд╣реБрдд рдХрдо рдЙрдореНрдореАрдж рд╣реИред
рдореИрдВ рдЖрдкрд╕реЗ рдХрд┐рд▓реЛрдмрд╛рдЗрдЯ рдЧрд┐рдирдиреЗ рдХрд╛ рдЖрдЧреНрд░рд╣ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реВрдВ рдФрд░ рдореИрдВ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЗ рд╕рдордп рдФрд░ рд╕реБрд╡рд┐рдзрд╛ рдХреА рд╕рд░рд╛рд╣рдирд╛ рдХрд░рддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреА рдпрд╣ рдмрдЪрдд рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрдиреЗ рд▓рд╛рдпрдХ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдкрд░рд┐рдпреЛрдЬрдирд╛рдПрдВ рдЕрдирд╛рдбрд╝реА рдФрд░ рдмрдирд╛рдП рд░рдЦрдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред

ANTLR рдФрд░ JavaCC рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рд╢рдмреНрдж

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

ANTLR рдХреА рдПрдХ рдФрд░ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХрдИ рд▓рдХреНрд╖реНрдп рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рд╣реИрдВред рд▓реЗрдХрд┐рди рдпрд╣рд╛рдВ рдЖрдк рджреВрд╕рд░реА рддрд░рдл рд╕реЗ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ - рдЬрд╛рд╡рд╛рд╕реАрд╕реА рдХреЗ рддрд╣рдд рдХреЛрдб рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИред рдФрд░ рдЗрд╕рдХрд╛ рдмрд╣реБрдд рд╣реА рд╕рд░рд▓ ... рдкреНрд░рд╕рд╛рд░рдг! рдЕрдкрдиреЗ рдХрд╕реНрдЯрдо рдХреЛрдб рдХреЗ рд╕рд╛рде - рдХрдо рд╕реЗ рдХрдо C # рдореЗрдВ, рдХрдо рд╕реЗ рдХрдо JS рдореЗрдВред

рдкреБрдирд╢реНрдЪ


рд╕рднреА рдХреЛрдб рдпрд╣рд╛рдБ github.com/kravchik/yast рд╣реИ

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

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

Source: https://habr.com/ru/post/hi433000/


All Articles