re2c āϞ⧇āĻ•ā§āϏāĻžāϰ āĻœā§‡āύāĻžāϰ⧇āϟāϰ 2.0 āϰāĻŋāϞāĻŋāϜ

āĻ¸ā§āĻĨāĻžāύ āĻĻāĻ–āϞ āĻ•āϰ⧇āϛ⧇ āĻŽā§āĻ•ā§āϤāĻŋ re2c 2.0, C āĻāĻŦāĻ‚ C++ āĻāϰ āϜāĻ¨ā§āϝ āĻāĻ•āϟāĻŋ āĻŦāĻŋāύāĻžāĻŽā§‚āĻ˛ā§āϝ⧇āϰ āφāĻ­āĻŋāϧāĻžāύāĻŋāĻ• āĻŦāĻŋāĻļā§āϞ⧇āώāĻ• āĻœā§‡āύāĻžāϰ⧇āϟāϰāĨ¤ re2c āĻĒā§āϰāĻ•āĻ˛ā§āĻĒāϟāĻŋ āĻŽā§‚āϞāϤ 1993 āϏāĻžāϞ⧇ āĻĒāĻŋāϟāĻžāϰ āĻŦā§āϝāĻžāĻŽā§āĻŦ⧁āϞāĻŋāϏ āĻĻā§āĻŦāĻžāϰāĻž āϖ⧁āĻŦ āĻĻā§āϰ⧁āϤ āϞ⧇āĻ•ā§āϏāĻŋāĻ•ā§āϝāĻžāϞ āĻŦāĻŋāĻļā§āϞ⧇āώāϕ⧇āϰ āĻāĻ•āϟāĻŋ āĻĒāϰ⧀āĻ•ā§āώāĻžāĻŽā§‚āϞāĻ• āĻœā§‡āύāĻžāϰ⧇āϟāϰ āĻšāĻŋāϏāĻžāĻŦ⧇ āϤ⧈āϰāĻŋ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āĻ›āĻŋāϞ, āϝāĻž āĻœā§‡āύāĻžāϰ⧇āĻŸā§‡āĻĄ āϕ⧋āĻĄā§‡āϰ āĻ—āϤāĻŋ āĻāĻŦāĻ‚ āĻāĻ•āϟāĻŋ āĻ…āĻ¸ā§āĻŦāĻžāĻ­āĻžāĻŦāĻŋāĻ•āĻ­āĻžāĻŦ⧇ āύāĻŽāύ⧀āϝāĻŧ āχāωāϜāĻžāϰ āχāĻ¨ā§āϟāĻžāϰāĻĢ⧇āϏ⧇āϰ āĻĻā§āĻŦāĻžāϰāĻž āĻ…āĻ¨ā§āϝāĻžāĻ¨ā§āϝ āĻœā§‡āύāĻžāϰ⧇āϟāϰ āĻĨ⧇āϕ⧇ āφāϞāĻžāĻĻāĻž āϝāĻž āĻĒāĻžāĻ°ā§āϏāĻžāϰāĻĻ⧇āϰ āϏāĻšāĻœā§‡ āĻāĻŦāĻ‚ āĻĻāĻ•ā§āώāϤāĻžāϰ āϏāĻžāĻĨ⧇ āĻāĻ•āϟāĻŋ āĻŦāĻŋāĻĻā§āϝāĻŽāĻžāύ āϕ⧋āĻĄāĻŦ⧇āϏ⧇ āĻāĻ•āĻ¤ā§āϰāĻŋāϤ āĻšāϤ⧇ āĻĻ⧇āϝāĻŧāĨ¤ . āϤāĻžāϰāĻĒāϰ āĻĨ⧇āϕ⧇, āĻĒā§āϰāĻ•āĻ˛ā§āĻĒāϟāĻŋ āϏāĻŽā§āĻĒā§āϰāĻĻāĻžāϝāĻŧ āĻĻā§āĻŦāĻžāϰāĻž āĻŦāĻŋāĻ•āĻļāĻŋāϤ āĻšāϝāĻŧ⧇āϛ⧇ āĻāĻŦāĻ‚ āφāύ⧁āĻˇā§āĻ āĻžāύāĻŋāĻ• āĻŦā§āϝāĻžāĻ•āϰāĻŖ āĻāĻŦāĻ‚ āϰāĻžāĻˇā§āĻŸā§āϰ⧀āϝāĻŧ āĻŽā§‡āĻļāĻŋāύ⧇āϰ āĻ•ā§āώ⧇āĻ¤ā§āϰ⧇ āĻĒāϰ⧀āĻ•ā§āώāĻž-āύāĻŋāϰ⧀āĻ•ā§āώāĻž āĻāĻŦāĻ‚ āĻ—āĻŦ⧇āώāĻŖāĻžāϰ āϜāĻ¨ā§āϝ āĻāĻ•āϟāĻŋ āĻĒā§āĻ˛ā§āϝāĻžāϟāĻĢāĻ°ā§āĻŽ āĻšāĻŋāϏāĻžāĻŦ⧇ āĻ…āĻŦā§āϝāĻžāĻšāϤ āϰāϝāĻŧ⧇āϛ⧇āĨ¤

āĻ…āĻŦā§āϝāĻŦāĻ¸ā§āĻĨāĻžāĻĒāύāĻž:

  • Go āĻ­āĻžāώāĻžāϰ āϜāĻ¨ā§āϝ āϏāĻŽāĻ°ā§āĻĨāύ āϝ⧋āĻ— āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇ (re2c-āĻāϰ āϜāĻ¨ā§āϝ "-lang go" āĻŦāĻŋāĻ•āĻ˛ā§āĻĒ āĻĻā§āĻŦāĻžāϰāĻž āϏāĻ•ā§āϰāĻŋāϝāĻŧ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇, āĻ…āĻĨāĻŦāĻž āĻāĻ•āϟāĻŋ āĻĒ⧃āĻĨāĻ• re2go āĻĒā§āϰ⧋āĻ—ā§āϰāĻžāĻŽ āĻšāĻŋāϏāĻžāĻŦ⧇)āĨ¤ C āĻāĻŦāĻ‚ Go āĻāϰ āϜāĻ¨ā§āϝ āĻĄāϕ⧁āĻŽā§‡āĻ¨ā§āĻŸā§‡āĻļāύ āĻāĻ•āχ āĻŸā§‡āĻ•ā§āϏāϟ āĻĨ⧇āϕ⧇ āϤ⧈āϰāĻŋ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇, āĻ•āĻŋāĻ¨ā§āϤ⧁ āĻŦāĻŋāĻ­āĻŋāĻ¨ā§āύ āϕ⧋āĻĄ āωāĻĻāĻžāĻšāϰāĻŖ āϏāĻšāĨ¤ re2c-āĻ āϕ⧋āĻĄ āĻœā§‡āύāĻžāϰ⧇āĻļāύ āϏāĻžāĻŦāϏāĻŋāĻ¸ā§āĻŸā§‡āĻŽ āϏāĻŽā§āĻĒā§‚āĻ°ā§āĻŖāϰ⧂āĻĒ⧇ āύāϤ⧁āύāĻ­āĻžāĻŦ⧇ āĻĄāĻŋāϜāĻžāχāύ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇, āϝāĻž āĻ­āĻŦāĻŋāĻˇā§āϝāϤ⧇ āύāϤ⧁āύ āĻ­āĻžāώāĻž āϏāĻŽāĻ°ā§āĻĨāύ āĻ•āϰāĻž āϏāĻšāϜ āĻ•āϰ⧇ āϤ⧁āϞāĻŦ⧇āĨ¤
  • CMake āĻ āĻŦāĻŋāĻ•āĻ˛ā§āĻĒ āĻŦāĻŋāĻ˛ā§āĻĄ āϏāĻŋāĻ¸ā§āĻŸā§‡āĻŽ āϝ⧋āĻ— āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇ (āϧāĻ¨ā§āϝāĻŦāĻžāĻĻ ligfx!) re2c āϕ⧇ CMake-āĻ āĻ…āύ⧁āĻŦāĻžāĻĻ āĻ•āϰāĻžāϰ āĻĒā§āϰāϝāĻŧāĻžāϏ āĻĻā§€āĻ°ā§āϘāĻĻāĻŋāύ āϧāϰ⧇ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇, āĻ•āĻŋāĻ¨ā§āϤ⧁ ligfx āĻāϰ āφāϗ⧇ āϕ⧇āω āϏāĻŽā§āĻĒā§‚āĻ°ā§āĻŖ āϏāĻŽāĻžāϧāĻžāύ āĻĻ⧇āϝāĻŧāύāĻŋāĨ¤ āĻ…āĻŸā§‹āϟ⧁āϞāϗ⧁āϞāĻŋāϤ⧇ āĻĒ⧁āϰāĻžāύ⧋ āĻŦāĻŋāĻ˛ā§āĻĄ āϏāĻŋāĻ¸ā§āĻŸā§‡āĻŽāϟāĻŋ āϏāĻŽāĻ°ā§āĻĨāĻŋāϤ āĻāĻŦāĻ‚ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻž āĻ…āĻŦā§āϝāĻžāĻšāϤ āϰāϝāĻŧ⧇āϛ⧇ āĻāĻŦāĻ‚ āĻ…āĻĻā§‚āϰ āĻ­āĻŦāĻŋāĻˇā§āϝāϤ⧇āϰ āϜāĻ¨ā§āϝ āĻāϟāĻŋ āĻĒāϰāĻŋāĻ¤ā§āϝāĻžāĻ— āĻ•āϰāĻžāϰ āϕ⧋āύ āĻĒāϰāĻŋāĻ•āĻ˛ā§āĻĒāύāĻž āύ⧇āχ (āφāĻ‚āĻļāĻŋāĻ•āĻ­āĻžāĻŦ⧇ āĻŦāĻŋāϤāϰāĻŖ āĻŦāĻŋāĻ•āĻžāĻļāĻ•āĻžāϰ⧀āĻĻ⧇āϰ āϏāĻŽāĻ¸ā§āϝāĻž āĻāĻĄāĻŧāĻžāύ⧋āϰ āϜāĻ¨ā§āϝ, āφāĻ‚āĻļāĻŋāĻ•āĻ­āĻžāĻŦ⧇ āĻ•āĻžāϰāĻŖ āĻĒ⧁āϰāĻžāύ⧋ āĻŦāĻŋāĻ˛ā§āĻĄ āϏāĻŋāĻ¸ā§āĻŸā§‡āĻŽāϟāĻŋ āύāϤ⧁āύ⧇āϰ āĻšā§‡āϝāĻŧ⧇ āφāϰāĻ“ āĻ¸ā§āĻĨāĻŋāϤāĻŋāĻļā§€āϞ āĻāĻŦāĻ‚ āφāϰāĻ“ āϏāĻ‚āĻ•ā§āώāĻŋāĻĒā§āϤāĨ¤ ) āĻŸā§āĻ°ā§āϝāĻžāĻ­āĻŋāϏ āϏāĻŋāφāχ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ āωāĻ­āϝāĻŧ āϏāĻŋāĻ¸ā§āĻŸā§‡āĻŽāχ āϏāĻŽāĻžāύāĻ­āĻžāĻŦ⧇ āĻ•ā§āϰāĻŽāĻžāĻ—āϤ āĻĒāϰ⧀āĻ•ā§āώāĻž āĻ•āϰāĻž āĻšāϝāĻŧāĨ¤
  • āĻœā§‡āύ⧇āϰāĻŋāĻ• API (āĻœā§‡āύ⧇āϰāĻŋāĻ• API) āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻžāϰ āϏāĻŽāϝāĻŧ āĻ•āύāĻĢāĻŋāĻ—āĻžāϰ⧇āĻļāύ⧇ āχāĻ¨ā§āϟāĻžāϰāĻĢ⧇āϏ āϕ⧋āĻĄ āύāĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āϟ āĻ•āϰāĻžāϰ āĻ•ā§āώāĻŽāϤāĻž āϝ⧋āĻ— āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ āĻ…āϤ⧀āϤ⧇, āĻŦ⧇āĻļāĻŋāϰāĻ­āĻžāĻ— API-āϕ⧇ āĻĢāĻžāĻ‚āĻļāύ āĻŦāĻž āĻĢāĻžāĻ‚āĻļāύ āĻŽā§āϝāĻžāĻ•ā§āϰ⧋ āφāĻ•āĻžāϰ⧇ āϏāĻ‚āĻœā§āĻžāĻžāϝāĻŧāĻŋāϤ āĻ•āϰāϤ⧇ āĻšāϤāĨ¤ āĻāĻ–āύ āϏ⧇āϗ⧁āϞāĻŋāϕ⧇ "@@{name}" āĻĢāĻ°ā§āĻŽā§‡āϰ āύāĻžāĻŽāϝ⧁āĻ•ā§āϤ āĻŸā§‡āĻŽāĻĒā§āϞ⧇āϟ āĻĒā§āϝāĻžāϰāĻžāĻŽāĻŋāϟāĻžāϰ āĻŦāĻž āϏāĻšāϜāĻ­āĻžāĻŦ⧇ "@@" (āϝāĻĻāĻŋ āĻļ⧁āϧ⧁āĻŽāĻžāĻ¤ā§āϰ āĻāĻ•āϟāĻŋ āĻĒā§āϝāĻžāϰāĻžāĻŽāĻŋāϟāĻžāϰ āĻĨāĻžāϕ⧇ āĻāĻŦāĻ‚ āϕ⧋āύ āĻ…āĻ¸ā§āĻĒāĻˇā§āϟāϤāĻž āύāĻž āĻĨāĻžāϕ⧇) āϏāĻš āύāĻŋāĻ°ā§āĻŦāĻŋāϚāĻžāϰ⧇ āĻ¸ā§āĻŸā§āϰāĻŋāĻ‚ āφāĻ•āĻžāϰ⧇ āύāĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āϟ āĻ•āϰāĻž āϝ⧇āϤ⧇ āĻĒāĻžāϰ⧇āĨ¤ API āĻļ⧈āϞ⧀ re2c:api:style āĻ•āύāĻĢāĻŋāĻ—āĻžāϰ⧇āĻļāύ āĻĻā§āĻŦāĻžāϰāĻž āϏ⧇āϟ āĻ•āϰāĻž āĻšāϝāĻŧ (āĻĢāĻžāĻ‚āĻļāύ āĻŽāĻžāύ āĻ•āĻžāĻ°ā§āϝāĻ•āϰ⧀ āĻļ⧈āϞ⧀ āύāĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āϟ āĻ•āϰ⧇, āϝāĻ–āύ āĻŽā§āĻ•ā§āϤ-āĻĢāĻ°ā§āĻŽ āĻŽāĻžāύ āύāĻŋāĻ°ā§āĻŦāĻŋāϚāĻžāϰ⧇)āĨ¤
  • "-c", "--start-conditions" āĻŦāĻŋāĻ•āĻ˛ā§āĻĒ⧇āϰ āωāĻ¨ā§āύāϤ āĻ…āĻĒāĻžāϰ⧇āĻļāύ, āϝāĻž āĻāĻ•āϟāĻŋ re2c āĻŦā§āϞāϕ⧇ āĻāĻ•āĻžāϧāĻŋāĻ• āφāĻ¨ā§āϤāσāϏāĻ‚āϝ⧁āĻ•ā§āϤ āϞ⧇āĻ•ā§āϏāĻžāϰāϕ⧇ āĻāĻ•āĻ¤ā§āϰāĻŋāϤ āĻ•āϰāĻžāϰ āĻ…āύ⧁āĻŽāϤāĻŋ āĻĻ⧇āϝāĻŧāĨ¤ āĻāĻ–āύ āφāĻĒāύāĻŋ āϏāĻžāϧāĻžāϰāĻŖ āĻŦā§āϞāϕ⧇āϰ āĻĒāĻžāĻļāĻžāĻĒāĻžāĻļāĻŋ āĻļāĻ°ā§āϤāϏāĻžāĻĒ⧇āĻ•ā§āώ āĻŦā§āϞāĻ• āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āύ āĻāĻŦāĻ‚ āĻāĻ•āϟāĻŋ āĻĢāĻžāχāϞ⧇ āĻŦ⧇āĻļ āĻ•āϝāĻŧ⧇āĻ•āϟāĻŋ āϏāĻŽā§āĻĒāĻ°ā§āĻ•āĻšā§€āύ āĻļāĻ°ā§āϤāĻžāϧ⧀āύ āĻŦā§āϞāĻ• āϏāĻ‚āĻœā§āĻžāĻžāϝāĻŧāĻŋāϤ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āύāĨ¤ "-c", "--start-conditions" āĻāĻŦāĻ‚ "-f", "--storable- āĻāϰ āϏāĻžāĻĨ⧇ āϏāĻŽāĻ¨ā§āĻŦāϝāĻŧ⧇ "-r", "--āĻĒ⧁āύāσāĻŦā§āϝāĻŦāĻšāĻžāϰ" (āĻ…āĻ¨ā§āϝāĻžāĻ¨ā§āϝ āĻŦā§āϞāϕ⧇ āĻāĻ•āϟāĻŋ āĻŦā§āϞāĻ• āĻĨ⧇āϕ⧇ āϕ⧋āĻĄ āĻĒ⧁āύāσāĻŦā§āϝāĻŦāĻšāĻžāϰ) āĻŦāĻŋāĻ•āĻ˛ā§āĻĒ⧇āϰ āωāĻ¨ā§āύāϤ āĻ…āĻĒāĻžāϰ⧇āĻļāύ state" āĻŦāĻŋāĻ•āĻ˛ā§āĻĒāϗ⧁āϞāĻŋ (āĻāĻ•āϟāĻŋ āϰāĻžāĻˇā§āĻŸā§āϰ⧀āϝāĻŧ āϞ⧇āĻ•ā§āϏāĻžāϰ āϝāĻž āĻāĻ•āϟāĻŋ āύāĻŋāĻ°ā§āĻŦāĻŋāϚāĻžāϰ⧇ āĻŦāĻŋāĻ˜ā§āύāĻŋāϤ āĻšāϤ⧇ āĻĒāĻžāϰ⧇ āĻāĻŦāĻ‚ āĻĒāϰ⧇ āφāĻŦāĻžāϰ āĻļ⧁āϰ⧁ āĻ•āϰāĻž āϝ⧇āϤ⧇ āĻĒāĻžāϰ⧇)āĨ¤
  • āϏāĻŽā§āĻĒā§āϰāϤāĻŋ āϝ⧋āĻ— āĻ•āϰāĻž āĻāĻ¨ā§āĻĄ-āĻ…āĻĢ-āχāύāĻĒ⧁āϟ āĻĒā§āϰāϏ⧇āϏāĻŋāĻ‚ āĻ…ā§āϝāĻžāϞāĻ—āϰāĻŋāĻĻāĻŽ (EOF āύāĻŋāϝāĻŧāĻŽ) āĻ āĻāĻ•āϟāĻŋ āĻŦāĻžāĻ— āϏāĻ‚āĻļā§‹āϧāύ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇, āϝāĻž āĻŦāĻŋāϰāϞ āĻ•ā§āώ⧇āĻ¤ā§āϰ⧇ āĻ“āĻ­āĻžāϰāĻ˛ā§āϝāĻžāĻĒāĻŋāĻ‚ āύāĻŋāϝāĻŧāĻŽā§‡āϰ āϭ⧁āϞ āĻĒā§āϰāĻ•ā§āϰāĻŋāϝāĻŧāĻžāĻ•āϰāϪ⧇āϰ āĻĻāĻŋāϕ⧇ āĻĒāϰāĻŋāϚāĻžāϞāĻŋāϤ āĻ•āϰ⧇āĨ¤
  • āϏāϰāϞ⧀āĻ•ā§ƒāϤ āĻŦ⧁āϟāĻ¸ā§āĻŸā§āĻ°ā§āϝāĻžāĻĒ āĻĒā§āϰāĻ•ā§āϰāĻŋāϝāĻŧāĻžāĨ¤ āĻĒā§‚āĻ°ā§āĻŦ⧇, āĻŦāĻŋāĻ˛ā§āĻĄ āϏāĻŋāĻ¸ā§āĻŸā§‡āĻŽ āĻ—āϤāĻŋāĻļā§€āϞāĻ­āĻžāĻŦ⧇ āĻāĻ•āϟāĻŋ āχāϤāĻŋāĻŽāĻ§ā§āϝ⧇ āύāĻŋāĻ°ā§āĻŽāĻŋāϤ re2c āϖ⧁āρāĻœā§‡ āĻŦ⧇āϰ āĻ•āϰāĻžāϰ āĻšā§‡āĻˇā§āϟāĻž āĻ•āϰ⧇āĻ›āĻŋāϞ āϝāĻž āύāĻŋāĻœā§‡āϕ⧇ āĻĒ⧁āύāĻ°ā§āύāĻŋāĻ°ā§āĻŽāĻžāĻŖ āĻ•āϰāϤ⧇ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻž āϝ⧇āϤ⧇ āĻĒāĻžāϰ⧇āĨ¤ āĻāϰ āĻĢāϞ⧇ āϭ⧁āϞ āύāĻŋāĻ°ā§āĻ­āϰāϤāĻž āĻšāϝāĻŧ⧇āϛ⧇ (āϝ⧇āĻšā§‡āϤ⧁ āύāĻŋāĻ°ā§āĻ­āϰāϤāĻž āĻ—ā§āϰāĻžāĻĢāϟāĻŋ āĻ—āϤāĻŋāĻļā§€āϞ āĻšāϤ⧇ āĻĻ⧇āĻ–āĻž āϗ⧇āϛ⧇, āϝāĻž āĻŦ⧇āĻļāĻŋāϰāĻ­āĻžāĻ— āĻŦāĻŋāĻ˛ā§āĻĄ āϏāĻŋāĻ¸ā§āĻŸā§‡āĻŽ āĻĒāĻ›āĻ¨ā§āĻĻ āĻ•āϰ⧇ āύāĻž)āĨ¤ āĻāĻ–āύ, āϞ⧇āĻ•ā§āϏāĻžāϰ āĻĒ⧁āύāĻ°ā§āύāĻŋāĻ°ā§āĻŽāĻžāĻŖ āĻ•āϰāϤ⧇, āφāĻĒāύāĻžāϕ⧇ āĻ¸ā§āĻĒāĻˇā§āϟāĻ­āĻžāĻŦ⧇ āĻŦāĻŋāĻ˛ā§āĻĄ āϏāĻŋāĻ¸ā§āĻŸā§‡āĻŽ āĻ•āύāĻĢāĻŋāĻ—āĻžāϰ āĻ•āϰāϤ⧇ āĻšāĻŦ⧇ āĻāĻŦāĻ‚ RE2C_FOR_BUILD āϭ⧇āϰāĻŋāϝāĻŧ⧇āĻŦāϞ āϏ⧇āϟ āĻ•āϰāϤ⧇ āĻšāĻŦ⧇āĨ¤

āωāĻ¤ā§āϏ: opennet.ru

āĻāĻ•āϟāĻŋ āĻŽāĻ¨ā§āϤāĻŦā§āϝ āϜ⧁āĻĄāĻŧ⧁āύ