Working on an alternative modifier syntax for nested function calls 🏢
Working on an alternative modifier syntax for nested function calls 🏢
Как я мигрировал COBOL-код мейнфрейма на Java: разные подходы и почему ANTLR — лучший выбор
Когда я работал в одной зарубежной компании, мне поставили задачу мигрировать COBOL‑систему расчета инвойсов с мейнфрейма на Java. Она звучала довольно просто: «Нужно переписать старый COBOL‑код на Java, чтобы система жила дальше». Я тогда подумал, что это будет очередная рутина — взять дремучее легаси, аккуратно переложить его на современную версию Java, возможно, чуть подчистить архитектуру, внести небольшие косметические правки и закрыть задачу. В голове уже созрел рабочий план: пара итераций по автогенерации кода с помощью нейронки и готово. В общем, казалось, что ничего особенного.
Ok, it was because it was parsing "practice" as a SYMBOL token ([a-z][a-zA-Z0-9]+) instead of a PRACTICE_KEYWORD token ('practice').
Even if PRACTICE_KEYWORD was way before SYMBOL, as precedence rules suggest.
And you know why?
Because even by triggering a compilation of the generated #Antlr4 files, some were STALE AS F*CK.
Had to delete them all and regenerate from scratch. At that point, it worked. Jeez.
"I wanted 'practice', instead I found 'practice'!"
#antlr4 go home you're drunk
(no but, seriously, why xD)
mhhhh, I am having to write less error messages than expected for my editor
🤔💭
My previous editor did the ANTLR based parsing and interpretation at once,
which required a lot more error checking.
So, splitting up the parsing and interpretation reduced the need for error handling... but still .. 🤔💭 ... by that much ...
Fun fact: everything except for strings and integers is now a function call, as it simplifies the language and its interpreter. This also applies for references. 😂
Как я сделал PR на 14К строк в проект YDB будучи студентом
В этой статье я хотел бы рассказать о задаче, решение которой легло в основу моей дипломной работы. На момент ноября 2023 года я был студентом Физтеха ‑– учился на базовой кафедре Яндекса, программа обучения которой реализуется совместно с ШАДом. Задача заключалась в переводе парсера языка запросов YQL (диалект SQL для YDB и YTsaurus) с ANTLR3 на ANTLR4. Мой наставник в ШАД и руководитель команды разработки клиентских библиотек YDB в Яндексе к. т. н. Алексей Мясников @asmyasnikov отметил еёе как особо сложную. Но меня это не отпугнуло:, тема работы из всех тем, предложенных в ШАД, эта показалась самой интересной и близкой мне.
Как сделать анализатор кода за два дня
Статический анализ — это очень мощный инструмент, позволяющий следить за качеством кода. Предлагаю вместе попробовать написать простой Lua анализатор на Java, чтобы понять, как устроены статические анализаторы кода внутри.
https://habr.com/ru/companies/pvs-studio/articles/835936/
#PVSStudio #Lua #Java #antlr #antlr4 #статический_анализ #компиляторы #ast #утиная_типизация