Засіб синтаксичного розбору на основі генератора синтаксичних аналізаторів ANTLR та мови Clojure

Ключові слова: ANTLR, Clojure, синтаксичний аналіз, синтаксичне дерево, лексичний аналіз, токен, рефлексія

Анотація

Ця стаття присвячена процесу синтаксичного розбору програмного коду. В результаті виконаного аналізу низки публікацій, які містять порівняння існуючих генераторів синтаксичних аналізаторів, було визначено, що генератор синтаксичних аналізаторів ANTLR користується популярністю у розробників завдяки своїй простоті, широкому спектру функцій, а також якості і ефективності згенерованого коду. В статті представлено засіб синтаксичного розбору програмного коду, що базується на використанні генератора синтаксичних аналізаторів ANTLR, а також сучасної функційної мови програмування Clojure, характеристики якої дозволяють значно легше створювати деревоподібні структури даних, а також аналізувати та змінювати їх, якщо порівнювати з нефункційними мовами програмування. Крім того, широкий спектр конструкцій, які має мова Clojure, дозволяють робити код лаконічнішим та зрозумілішим, ніж код записаний нефункційними мовами програмування. Це є великою перевагою при обробці складних структур даних, таких як синтаксичні дерева. На відміну від існуючих бібліотек мови Clojure, що надають деякі засоби синтаксичного розбору, які використовують генератор ANTLR у неефективному режимі інтерпретатора, розроблений засіб містить функції, які надають розробнику повноцінні можливості виконання синтаксичного розбору програмного коду за допомогою ANTLR. Множина цих функцій включає: функцію генерації класів лексичного та синтаксичного аналізаторів, яка має використовуватися в якості окремого етапу збірки проєкту; функцію реєстрації, мета якої полягає у аналізі класів згенерованих аналізаторів і створенні структур даних мови Clojure для реалізації інтерфейсу взаємодії між програмами, написаними мовою Clojure і згенерованими класами аналізаторів, написаними мовою Java; функцію синтаксичного розбору програмного коду, що використовує зареєстровані структури даних. Завдяки тому, що програмний код, написаний мовою Сlojure, працює на основі Java Virtual Machine (JVM), в цих функціях вдалося використати класи бібліотек генератора ANTLR, що написані мовою Java.

Посилання

1. Генератор синтаксичних аналізаторів ANTLR.
2. Lex & Yacc.
3. M. Mernik, M. Lenic, E. Avdicausevic, V. Zumer, «Compiler/interpreter generator system LISA», the 33rd Annual Hawaii International Conference on System Sciences, Maui, HI, USA, 2000.
4. D. da Cruz, M.J.V. Pereira, M. Béron, R. Fonseca, P.R. Henriques, «Comparing Generators for Language-based Tools», the 1st Conf. on Compiler Related Technologies and Applications, CoRTA'07, Portugal, 2007.
5. F. Ortin, J. Quiroga, O. Rodriguez-Prieto, M. Garcia, «An empirical evaluation of Lex/Yacc and
ANTLR parser generation tools», Plos one, 17(3), e0264326, 2022.
Опубліковано
2024-09-28
Як цитувати
Касянчук, Д., & Марченко, О. (2024). Засіб синтаксичного розбору на основі генератора синтаксичних аналізаторів ANTLR та мови Clojure. КОМП’ЮТЕРНО-ІНТЕГРОВАНІ ТЕХНОЛОГІЇ: ОСВІТА, НАУКА, ВИРОБНИЦТВО, (56), 174-184. https://doi.org/10.36910/6775-2524-0560-2024-56-22
Розділ
Інформатика та обчислювальна техніка