re2c ಲೆಕ್ಸರ್ ಜನರೇಟರ್ 2.0 ಬಿಡುಗಡೆ

ನಡೆಯಿತು ಬಿಡುಗಡೆ re2c 2.0, C ಮತ್ತು C++ ಭಾಷೆಗಳಿಗೆ ಉಚಿತ ಲೆಕ್ಸಿಕಲ್ ವಿಶ್ಲೇಷಕ ಜನರೇಟರ್. Re2c ಯೋಜನೆಯನ್ನು ಮೂಲತಃ 1993 ರಲ್ಲಿ ಪೀಟರ್ ಬಾಂಬೌಲಿಸ್ ಅವರು ಅತ್ಯಂತ ವೇಗದ ಲೆಕ್ಸಿಕಲ್ ವಿಶ್ಲೇಷಕಗಳ ಪ್ರಾಯೋಗಿಕ ಜನರೇಟರ್ ಆಗಿ ರಚಿಸಿದರು, ಇತರ ಜನರೇಟರ್‌ಗಳಿಂದ ರಚಿಸಲಾದ ಕೋಡ್‌ನ ವೇಗ ಮತ್ತು ಅಸಾಮಾನ್ಯವಾಗಿ ಹೊಂದಿಕೊಳ್ಳುವ ಬಳಕೆದಾರ ಇಂಟರ್ಫೇಸ್‌ನಿಂದ ವಿಶ್ಲೇಷಕಗಳನ್ನು ಸುಲಭವಾಗಿ ಮತ್ತು ಪರಿಣಾಮಕಾರಿಯಾಗಿ ಅಸ್ತಿತ್ವದಲ್ಲಿರುವಂತೆ ಅಳವಡಿಸಲು ಅನುವು ಮಾಡಿಕೊಡುತ್ತದೆ. ಕೋಡ್ ಬೇಸ್. ಅಂದಿನಿಂದ, ಯೋಜನೆಯನ್ನು ಸಮುದಾಯವು ಅಭಿವೃದ್ಧಿಪಡಿಸಿದೆ ಮತ್ತು ಔಪಚಾರಿಕ ವ್ಯಾಕರಣಗಳು ಮತ್ತು ಸೀಮಿತ ಸ್ಥಿತಿಯ ಯಂತ್ರಗಳ ಕ್ಷೇತ್ರದಲ್ಲಿ ಪ್ರಯೋಗಗಳು ಮತ್ತು ಸಂಶೋಧನೆಗಳಿಗೆ ವೇದಿಕೆಯಾಗಿ ಮುಂದುವರಿಯುತ್ತದೆ.

ಪ್ರಮುಖ ಬದಲಾವಣೆಗಳು:

  • Go ಭಾಷೆಗೆ ಬೆಂಬಲವನ್ನು ಸೇರಿಸಲಾಗಿದೆ (re2c ಗಾಗಿ "--lang go" ಆಯ್ಕೆಯಿಂದ ಅಥವಾ ಪ್ರತ್ಯೇಕ re2go ಪ್ರೋಗ್ರಾಂ ಆಗಿ ಸಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ). C ಮತ್ತು Go ಗಾಗಿ ದಸ್ತಾವೇಜನ್ನು ಒಂದೇ ಪಠ್ಯದಿಂದ ರಚಿಸಲಾಗಿದೆ, ಆದರೆ ವಿಭಿನ್ನ ಕೋಡ್ ಉದಾಹರಣೆಗಳೊಂದಿಗೆ. re2c ಯಲ್ಲಿ ಕೋಡ್ ಉತ್ಪಾದನೆಯ ಉಪವ್ಯವಸ್ಥೆಯನ್ನು ಸಂಪೂರ್ಣವಾಗಿ ಮರುವಿನ್ಯಾಸಗೊಳಿಸಲಾಗಿದೆ, ಇದು ಭವಿಷ್ಯದಲ್ಲಿ ಹೊಸ ಭಾಷೆಗಳನ್ನು ಬೆಂಬಲಿಸಲು ಸುಲಭವಾಗುತ್ತದೆ.
  • CMake ಗಾಗಿ ಪರ್ಯಾಯ ನಿರ್ಮಾಣ ವ್ಯವಸ್ಥೆಯನ್ನು ಸೇರಿಸಲಾಗಿದೆ (ಧನ್ಯವಾದಗಳು ligfx!). Re2c ಅನ್ನು CMake ಗೆ ಭಾಷಾಂತರಿಸುವ ಪ್ರಯತ್ನಗಳು ದೀರ್ಘಕಾಲದವರೆಗೆ ಮಾಡಲ್ಪಟ್ಟಿವೆ, ಆದರೆ ligfx ವರೆಗೆ ಯಾರೂ ಪೂರ್ಣ ಪ್ರಮಾಣದ ಪರಿಹಾರವನ್ನು ಪ್ರಸ್ತಾಪಿಸಲಿಲ್ಲ. ಹಳೆಯ Autotools ಬಿಲ್ಡ್ ಸಿಸ್ಟಮ್ ಅನ್ನು ಬೆಂಬಲಿಸಲಾಗುತ್ತದೆ ಮತ್ತು ಬಳಸಲಾಗುತ್ತಿದೆ ಮತ್ತು ನಿರೀಕ್ಷಿತ ಭವಿಷ್ಯದಲ್ಲಿ ಅದನ್ನು ತ್ಯಜಿಸುವ ಯಾವುದೇ ಯೋಜನೆಗಳಿಲ್ಲ (ಭಾಗಶಃ ವಿತರಣಾ ಡೆವಲಪರ್‌ಗಳಿಗೆ ಸಮಸ್ಯೆಗಳನ್ನು ಸೃಷ್ಟಿಸುವುದನ್ನು ತಪ್ಪಿಸಲು, ಭಾಗಶಃ ಹಳೆಯ ನಿರ್ಮಾಣ ವ್ಯವಸ್ಥೆಯು ಹೊಸದಕ್ಕಿಂತ ಹೆಚ್ಚು ಸ್ಥಿರವಾಗಿದೆ ಮತ್ತು ಹೆಚ್ಚು ಸಂಕ್ಷಿಪ್ತವಾಗಿದೆ ) ಟ್ರಾವಿಸ್ CI ಅನ್ನು ಬಳಸಿಕೊಂಡು ಎರಡೂ ವ್ಯವಸ್ಥೆಗಳನ್ನು ನಿರಂತರವಾಗಿ ಪರೀಕ್ಷಿಸಲಾಗುತ್ತದೆ.
  • ಜೆನೆರಿಕ್ API ಅನ್ನು ಬಳಸುವಾಗ ಕಾನ್ಫಿಗರೇಶನ್‌ಗಳಲ್ಲಿ ಇಂಟರ್ಫೇಸ್ ಕೋಡ್ ಅನ್ನು ನಿರ್ದಿಷ್ಟಪಡಿಸುವ ಸಾಮರ್ಥ್ಯವನ್ನು ಸೇರಿಸಲಾಗಿದೆ. ಹಿಂದೆ, ಹೆಚ್ಚಿನ API ಗಳನ್ನು ಕಾರ್ಯಗಳು ಅಥವಾ ಫಂಕ್ಷನ್ ಮ್ಯಾಕ್ರೋಗಳ ರೂಪದಲ್ಲಿ ನಿರ್ದಿಷ್ಟಪಡಿಸಬೇಕಾಗಿತ್ತು. ಈಗ ಅವುಗಳನ್ನು "@@{name}" ಅಥವಾ ಸರಳವಾಗಿ "@@" ರೂಪದ ಹೆಸರಿನ ಟೆಂಪ್ಲೇಟ್ ಪ್ಯಾರಾಮೀಟರ್‌ಗಳೊಂದಿಗೆ ಅನಿಯಂತ್ರಿತ ತಂತಿಗಳ ರೂಪದಲ್ಲಿ ನಿರ್ದಿಷ್ಟಪಡಿಸಬಹುದು (ಕೇವಲ ಒಂದು ಪ್ಯಾರಾಮೀಟರ್ ಇದ್ದರೆ ಮತ್ತು ಯಾವುದೇ ಅಸ್ಪಷ್ಟತೆ ಇಲ್ಲದಿದ್ದರೆ). API ಶೈಲಿಯನ್ನು re2c:api: ಶೈಲಿಯ ಸಂರಚನೆಯಿಂದ ಹೊಂದಿಸಲಾಗಿದೆ (ಕಾರ್ಯಗಳ ಮೌಲ್ಯವು ಕ್ರಿಯಾತ್ಮಕ ಶೈಲಿಯನ್ನು ನಿರ್ದಿಷ್ಟಪಡಿಸುತ್ತದೆ ಮತ್ತು ಮುಕ್ತ-ರೂಪವು ಅನಿಯಂತ್ರಿತ ಶೈಲಿಯನ್ನು ಸೂಚಿಸುತ್ತದೆ).
  • "-c", "-start-conditions" ಆಯ್ಕೆಯ ಕಾರ್ಯಾಚರಣೆಯನ್ನು ಸುಧಾರಿಸಲಾಗಿದೆ, ಒಂದು re2c ಬ್ಲಾಕ್‌ನಲ್ಲಿ ಹಲವಾರು ಅಂತರ್ಸಂಪರ್ಕಿತ ಲೆಕ್ಸರ್‌ಗಳನ್ನು ಸಂಯೋಜಿಸಲು ನಿಮಗೆ ಅನುವು ಮಾಡಿಕೊಡುತ್ತದೆ. ಈಗ ನೀವು ನಿಯಮಿತ ಬ್ಲಾಕ್‌ಗಳ ಜೊತೆಗೆ ನಿಯಮಿತ ಬ್ಲಾಕ್‌ಗಳನ್ನು ಬಳಸಬಹುದು ಮತ್ತು ಒಂದು ಫೈಲ್‌ನಲ್ಲಿ ಹಲವಾರು ಸಂಬಂಧವಿಲ್ಲದ ಷರತ್ತುಬದ್ಧ ಬ್ಲಾಕ್‌ಗಳನ್ನು ವ್ಯಾಖ್ಯಾನಿಸಬಹುದು. "-c", "--start-conditions" ಮತ್ತು "-f", "-- ಸಂಯೋಜನೆಯೊಂದಿಗೆ "-r", "--reuse" ಆಯ್ಕೆಯ (ಇತರ ಬ್ಲಾಕ್‌ಗಳಲ್ಲಿ ಒಂದು ಬ್ಲಾಕ್‌ನಿಂದ ಕೋಡ್ ಅನ್ನು ಮರುಬಳಕೆ ಮಾಡುವುದು) ಸುಧಾರಿತ ಕಾರ್ಯಾಚರಣೆ storable-state" ಆಯ್ಕೆಗಳು (ಯಾವುದೇ ಹಂತದಲ್ಲಿ ಅಡ್ಡಿಪಡಿಸಬಹುದಾದ ಮತ್ತು ನಂತರ ಕಾರ್ಯಗತಗೊಳಿಸುವಿಕೆಯನ್ನು ಮುಂದುವರಿಸಬಹುದಾದ ಸ್ಥಿತಿಯ ಲೆಕ್ಸರ್).
  • ಇತ್ತೀಚೆಗೆ ಸೇರಿಸಲಾದ ಎಂಡ್-ಆಫ್-ಇನ್‌ಪುಟ್ (EOF ನಿಯಮ) ಅಲ್ಗಾರಿದಮ್‌ನಲ್ಲಿ ದೋಷವನ್ನು ಪರಿಹರಿಸಲಾಗಿದೆ, ಇದು ಅಪರೂಪದ ಸಂದರ್ಭಗಳಲ್ಲಿ ಅತಿಕ್ರಮಿಸುವ ನಿಯಮಗಳ ತಪ್ಪಾದ ಪ್ರಕ್ರಿಯೆಗೆ ಕಾರಣವಾಗುತ್ತದೆ.
  • ಬೂಟ್ ಸ್ಟ್ರಾಪ್ ಪ್ರಕ್ರಿಯೆಯನ್ನು ಸರಳಗೊಳಿಸಲಾಗಿದೆ. ಹಿಂದೆ, ಬಿಲ್ಡ್ ಸಿಸ್ಟಮ್ ಈಗಾಗಲೇ ನಿರ್ಮಿಸಲಾದ re2c ಅನ್ನು ಕ್ರಿಯಾತ್ಮಕವಾಗಿ ಕಂಡುಹಿಡಿಯಲು ಪ್ರಯತ್ನಿಸಿತು, ಅದನ್ನು ಸ್ವತಃ ಮರುನಿರ್ಮಾಣ ಮಾಡಲು ಬಳಸಬಹುದಾಗಿದೆ. ಇದು ತಪ್ಪಾದ ಅವಲಂಬನೆಗಳಿಗೆ ಕಾರಣವಾಯಿತು (ಏಕೆಂದರೆ ಅವಲಂಬನೆ ಗ್ರಾಫ್ ಡೈನಾಮಿಕ್ ಆಗಿತ್ತು, ಇದು ಹೆಚ್ಚಿನ ನಿರ್ಮಾಣ ವ್ಯವಸ್ಥೆಗಳು ಇಷ್ಟಪಡುವುದಿಲ್ಲ). ಈಗ, ಲೆಕ್ಸರ್‌ಗಳನ್ನು ಮರುನಿರ್ಮಾಣ ಮಾಡಲು, ನೀವು ಬಿಲ್ಡ್ ಸಿಸ್ಟಮ್ ಅನ್ನು ಸ್ಪಷ್ಟವಾಗಿ ಕಾನ್ಫಿಗರ್ ಮಾಡಬೇಕಾಗುತ್ತದೆ ಮತ್ತು RE2C_FOR_BUILD ವೇರಿಯೇಬಲ್ ಅನ್ನು ಹೊಂದಿಸಬೇಕು.

ಮೂಲ: opennet.ru

ಕಾಮೆಂಟ್ ಅನ್ನು ಸೇರಿಸಿ