home.social

#antlr4 — Public Fediverse posts

Live and recent posts from across the Fediverse tagged #antlr4, aggregated by home.social.

  1. От регулярок к ANTLR4: три архитектурных решения на парсере бизнес-формул

    Три года назад я писал свой первый коммерческий парсер на ANTLR4 — для бизнес-формул аналитической системы. Несколько лет спустя я бы сделал его иначе в трёх центральных местах. Разбираю каждое: левая рекурсия для приоритета операторов, Listener vs Visitor, и почему getText() для повторного парсинга — антипаттерн.

    habr.com/ru/articles/1027742/

    #antlr #antlr4 #парсер #parser #грамматика #dsl #java #spring_boot #compiler #code_generation

  2. От регулярок к ANTLR4: три архитектурных решения на парсере бизнес-формул

    Три года назад я писал свой первый коммерческий парсер на ANTLR4 — для бизнес-формул аналитической системы. Несколько лет спустя я бы сделал его иначе в трёх центральных местах. Разбираю каждое: левая рекурсия для приоритета операторов, Listener vs Visitor, и почему getText() для повторного парсинга — антипаттерн.

    habr.com/ru/articles/1027742/

    #antlr #antlr4 #парсер #parser #грамматика #dsl #java #spring_boot #compiler #code_generation

  3. От регулярок к ANTLR4: три архитектурных решения на парсере бизнес-формул

    Три года назад я писал свой первый коммерческий парсер на ANTLR4 — для бизнес-формул аналитической системы. Несколько лет спустя я бы сделал его иначе в трёх центральных местах. Разбираю каждое: левая рекурсия для приоритета операторов, Listener vs Visitor, и почему getText() для повторного парсинга — антипаттерн.

    habr.com/ru/articles/1027742/

    #antlr #antlr4 #парсер #parser #грамматика #dsl #java #spring_boot #compiler #code_generation

  4. От регулярок к ANTLR4: три архитектурных решения на парсере бизнес-формул

    Три года назад я писал свой первый коммерческий парсер на ANTLR4 — для бизнес-формул аналитической системы. Несколько лет спустя я бы сделал его иначе в трёх центральных местах. Разбираю каждое: левая рекурсия для приоритета операторов, Listener vs Visitor, и почему getText() для повторного парсинга — антипаттерн.

    habr.com/ru/articles/1027742/

    #antlr #antlr4 #парсер #parser #грамматика #dsl #java #spring_boot #compiler #code_generation

  5. Working on an alternative modifier syntax for nested function calls 🏢

  6. Как я мигрировал COBOL-код мейнфрейма на Java: разные подходы и почему ANTLR — лучший выбор

    Когда я работал в одной зарубежной компании, мне поставили задачу мигрировать COBOL‑систему расчета инвойсов с мейнфрейма на Java. Она звучала довольно просто: «Нужно переписать старый COBOL‑код на Java, чтобы система жила дальше». Я тогда подумал, что это будет очередная рутина — взять дремучее легаси, аккуратно переложить его на современную версию Java, возможно, чуть подчистить архитектуру, внести небольшие косметические правки и закрыть задачу. В голове уже созрел рабочий план: пара итераций по автогенерации кода с помощью нейронки и готово. В общем, казалось, что ничего особенного.

    habr.com/ru/articles/980846/

    #туториал #java #cobol #миграция #antlr4

  7. Как я мигрировал COBOL-код мейнфрейма на Java: разные подходы и почему ANTLR — лучший выбор

    Когда я работал в одной зарубежной компании, мне поставили задачу мигрировать COBOL‑систему расчета инвойсов с мейнфрейма на Java. Она звучала довольно просто: «Нужно переписать старый COBOL‑код на Java, чтобы система жила дальше». Я тогда подумал, что это будет очередная рутина — взять дремучее легаси, аккуратно переложить его на современную версию Java, возможно, чуть подчистить архитектуру, внести небольшие косметические правки и закрыть задачу. В голове уже созрел рабочий план: пара итераций по автогенерации кода с помощью нейронки и готово. В общем, казалось, что ничего особенного.

    habr.com/ru/articles/980846/

    #туториал #java #cobol #миграция #antlr4

  8. Как я мигрировал COBOL-код мейнфрейма на Java: разные подходы и почему ANTLR — лучший выбор

    Когда я работал в одной зарубежной компании, мне поставили задачу мигрировать COBOL‑систему расчета инвойсов с мейнфрейма на Java. Она звучала довольно просто: «Нужно переписать старый COBOL‑код на Java, чтобы система жила дальше». Я тогда подумал, что это будет очередная рутина — взять дремучее легаси, аккуратно переложить его на современную версию Java, возможно, чуть подчистить архитектуру, внести небольшие косметические правки и закрыть задачу. В голове уже созрел рабочий план: пара итераций по автогенерации кода с помощью нейронки и готово. В общем, казалось, что ничего особенного.

    habr.com/ru/articles/980846/

    #туториал #java #cobol #миграция #antlr4

  9. Как я мигрировал COBOL-код мейнфрейма на Java: разные подходы и почему ANTLR — лучший выбор

    Когда я работал в одной зарубежной компании, мне поставили задачу мигрировать COBOL‑систему расчета инвойсов с мейнфрейма на Java. Она звучала довольно просто: «Нужно переписать старый COBOL‑код на Java, чтобы система жила дальше». Я тогда подумал, что это будет очередная рутина — взять дремучее легаси, аккуратно переложить его на современную версию Java, возможно, чуть подчистить архитектуру, внести небольшие косметические правки и закрыть задачу. В голове уже созрел рабочий план: пара итераций по автогенерации кода с помощью нейронки и готово. В общем, казалось, что ничего особенного.

    habr.com/ru/articles/980846/

    #туториал #java #cobol #миграция #antlr4

  10. 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.

  11. 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.

  12. 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.

  13. "I wanted 'practice', instead I found 'practice'!"

    #antlr4 go home you're drunk

    (no but, seriously, why xD)

  14. "I wanted 'practice', instead I found 'practice'!"

    #antlr4 go home you're drunk

    (no but, seriously, why xD)

  15. "I wanted 'practice', instead I found 'practice'!"

    #antlr4 go home you're drunk

    (no but, seriously, why xD)

  16. 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 ...

    codeberg.org/splitcells-net/ne

  17. 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 ...

    codeberg.org/splitcells-net/ne

    #Java #ANTLR4

  18. Now I have restored my grammar error report ☠️

  19. Now I have restored my grammar error report ☠️

    #ANTLR4 #Java

  20. 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. 😂

  21. 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. 😂

    #ANTLR4 #OpenSource #constraint_programming

  22. Как я сделал PR на 14К строк в проект YDB будучи студентом

    В этой статье я хотел бы рассказать о задаче, решение которой легло в основу моей дипломной работы. На момент ноября 2023 года я был студентом Физтеха ‑– учился на базовой кафедре Яндекса, программа обучения которой реализуется совместно с ШАДом. Задача заключалась в переводе парсера языка запросов YQL (диалект SQL для YDB и YTsaurus) с ANTLR3 на ANTLR4. Мой наставник в ШАД и руководитель команды разработки клиентских библиотек YDB в Яндексе к. т. н. Алексей Мясников @asmyasnikov отметил еёе как особо сложную. Но меня это не отпугнуло:, тема работы из всех тем, предложенных в ШАД, эта показалась самой интересной и близкой мне.

    habr.com/ru/companies/yandex/a

    #яндекс #базы_данных #antlr4 #парсинг #ydb

  23. Как я сделал PR на 14К строк в проект YDB будучи студентом

    В этой статье я хотел бы рассказать о задаче, решение которой легло в основу моей дипломной работы. На момент ноября 2023 года я был студентом Физтеха ‑– учился на базовой кафедре Яндекса, программа обучения которой реализуется совместно с ШАДом. Задача заключалась в переводе парсера языка запросов YQL (диалект SQL для YDB и YTsaurus) с ANTLR3 на ANTLR4. Мой наставник в ШАД и руководитель команды разработки клиентских библиотек YDB в Яндексе к. т. н. Алексей Мясников @asmyasnikov отметил еёе как особо сложную. Но меня это не отпугнуло:, тема работы из всех тем, предложенных в ШАД, эта показалась самой интересной и близкой мне.

    habr.com/ru/companies/yandex/a

    #яндекс #базы_данных #antlr4 #парсинг #ydb

  24. Как я сделал PR на 14К строк в проект YDB будучи студентом

    В этой статье я хотел бы рассказать о задаче, решение которой легло в основу моей дипломной работы. На момент ноября 2023 года я был студентом Физтеха ‑– учился на базовой кафедре Яндекса, программа обучения которой реализуется совместно с ШАДом. Задача заключалась в переводе парсера языка запросов YQL (диалект SQL для YDB и YTsaurus) с ANTLR3 на ANTLR4. Мой наставник в ШАД и руководитель команды разработки клиентских библиотек YDB в Яндексе к. т. н. Алексей Мясников @asmyasnikov отметил еёе как особо сложную. Но меня это не отпугнуло:, тема работы из всех тем, предложенных в ШАД, эта показалась самой интересной и близкой мне.

    habr.com/ru/companies/yandex/a

    #яндекс #базы_данных #antlr4 #парсинг #ydb

  25. Как я сделал PR на 14К строк в проект YDB будучи студентом

    В этой статье я хотел бы рассказать о задаче, решение которой легло в основу моей дипломной работы. На момент ноября 2023 года я был студентом Физтеха ‑– учился на базовой кафедре Яндекса, программа обучения которой реализуется совместно с ШАДом. Задача заключалась в переводе парсера языка запросов YQL (диалект SQL для YDB и YTsaurus) с ANTLR3 на ANTLR4. Мой наставник в ШАД и руководитель команды разработки клиентских библиотек YDB в Яндексе к. т. н. Алексей Мясников @asmyasnikov отметил еёе как особо сложную. Но меня это не отпугнуло:, тема работы из всех тем, предложенных в ШАД, эта показалась самой интересной и близкой мне.

    habr.com/ru/companies/yandex/a

    #яндекс #базы_данных #antlr4 #парсинг #ydb

  26. Как сделать анализатор кода за два дня

    Статический анализ — это очень мощный инструмент, позволяющий следить за качеством кода. Предлагаю вместе попробовать написать простой Lua анализатор на Java, чтобы понять, как устроены статические анализаторы кода внутри.

    habr.com/ru/companies/pvs-stud

    #PVSStudio #Lua #Java #antlr #antlr4 #статический_анализ #компиляторы #ast #утиная_типизация

  27. Как сделать анализатор кода за два дня

    Статический анализ — это очень мощный инструмент, позволяющий следить за качеством кода. Предлагаю вместе попробовать написать простой Lua анализатор на Java, чтобы понять, как устроены статические анализаторы кода внутри.

    habr.com/ru/companies/pvs-stud

    #PVSStudio #Lua #Java #antlr #antlr4 #статический_анализ #компиляторы #ast #утиная_типизация

  28. Как сделать анализатор кода за два дня

    Статический анализ — это очень мощный инструмент, позволяющий следить за качеством кода. Предлагаю вместе попробовать написать простой Lua анализатор на Java, чтобы понять, как устроены статические анализаторы кода внутри.

    habr.com/ru/companies/pvs-stud

    #PVSStudio #Lua #Java #antlr #antlr4 #статический_анализ #компиляторы #ast #утиная_типизация

  29. Creating #ANTLR4 grammars and (C#) code based on them it's both fun and challenging.

  30. Creating #ANTLR4 grammars and (C#) code based on them it's both fun and challenging.

  31. Creating #ANTLR4 grammars and (C#) code based on them it's both fun and challenging.

  32. Creating #ANTLR4 grammars and (C#) code based on them it's both fun and challenging.

  33. Creating #ANTLR4 grammars and (C#) code based on them it's both fun and challenging.