Skip to content

iron sword

Pre-release
Pre-release
Compare
Choose a tag to compare
@tsukanov-as tsukanov-as released this 12 Sep 20:16
· 455 commits to master since this release

Особенности релиза:

  • разбирает все синтаксические конструкции языка включая директивы
  • разбирает все инструкции препроцессора в ограниченном варианте, покрывающем 99% случаев
  • сохраняет в AST комментарии с указанием номеров строк
  • сохраняет в AST информацию о строках и их частях (вид части строки, положение в коде, etc)
  • сохраняет в AST программный интерфейс модуля
  • сохраняет в AST позицию элемента, длину элемента и номер исходной строки синтаксического элемента (узла)
  • реализован обобщенный визитер AST с подписками для плагинов

Чего еще нет (планируется к версии 1.0-beta):

  • документации по структуре AST
  • документации по написанию плагинов
  • парсер ничего не знает о встроенных функциях и глобальных перечислениях
  • парсер ничего не знает о расширениях

Прочее

Парсит ERP 2.4.1.189 (12000 модулей) за 40 минут (включая чтение модулей с диска, вычисление хэшей, собственно парсинг и сохранение AST в базе)

ноут y500 (без SSD): https://i.imgur.com/5Xg1SLr.png
платформа: 8.3.11.2528 32x
субд: MS SQL 2016 DE

пиковая нагрузка: https://i.imgur.com/iuauYRe.png
скрин из Radar по окончании парсинга: https://i.imgur.com/JT1v9DT.png

AST большого модуля (CommonModules.МенеджерОбменаЧерезУниверсальныйФормат)
в формате JSON UTF-8 занимает 68.9МБ

ошибки разбора:
erp_errors.txt

"Method already declared" - это реальная ошибка в ERP и в платформе