Pegjs: Π’ΠΎΡΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π³Ρ€Π°ΠΌΠΌΠ°Ρ‚ΠΈΠΊΡƒ ΠΈΠ· парсСра привязки

Π‘ΠΎΠ·Π΄Π°Π½Π½Ρ‹ΠΉ Π½Π° 5 июл. 2019  Β·  1ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ  Β·  Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: pegjs/pegjs

Вопрос

ΠšΡ‚ΠΎ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ Ρ€Π°Π±ΠΎΡ‚Π°Π» Π½Π°Π΄ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π²Ρ‹Π²ΠΎΠ΄Π° привязки ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ Π²ΠΎ Π²Ρ…ΠΎΠ΄Π½ΡƒΡŽ Π³Ρ€Π°ΠΌΠΌΠ°Ρ‚ΠΈΠΊΡƒ?

ОписаниС

НСдавно я унаслСдовал ΠΏΡ€ΠΎΠ΅ΠΊΡ‚, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ PEG. Π£ нас Π΅ΡΡ‚ΡŒ синтаксичСский Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ PEG, Π½ΠΎ исходная Π³Ρ€Π°ΠΌΠΌΠ°Ρ‚ΠΈΠΊΠ°, ΠΏΠΎΡ…ΠΎΠΆΠ΅, утСряна ΠΈΠ»ΠΈ отсутствуСт. МоТно Π»ΠΈ Π²ΠΎΡΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π³Ρ€Π°ΠΌΠΌΠ°Ρ‚ΠΈΠΊΡƒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΈΠ· ΠΊΠΎΠ΄Π° парсСра PEG?

ДСйствия ΠΏΠΎ Π²ΠΎΡΠΏΡ€ΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΡŽ

  1. Учитывая синтаксичСский Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ привязки
  2. Π’ΠΎΡΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΈΡΡ…ΠΎΠ΄Π½ΡƒΡŽ Π³Ρ€Π°ΠΌΠΌΠ°Ρ‚ΠΈΠΊΡƒ

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ΅ обСспСчСниС

  • ΠŸΠ­Π“.js: 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 Ρ€Π΅ΠΉΡ‚ΠΈΠ½Π³ΠΈ