home.social

#qapdsl — Public Fediverse posts

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

  1. Как создать свой парсер и AST-генератор на C++ с минимальными усилиями: знакомьтесь с QapDSLv2

    QapDSLv2: Новый стандарт AST-heavy парсинга QapDSLv2 обеспечивает: Молниеносное построение AST Полное сохранение структуры исходного кода Простоту интерпретации и модификации грамматик Забудьте о любы других парсерах! С помощью QapDSLv2 можно создавать компиляторы/анализаторы/форматировщики кода за минуты/часы. // почти наглая лож Парсеры и генерация абстрактных синтаксических деревьев ( AST ) — это обычно долго, сложно и требует тонны шаблонного кода. Но что если я скажу, что теперь можно описывать грамматики и структуры данных одновременно и получать готовый, оптимизированный C++ код автоматически? QapDSLv2 — новый стандарт эффективности и удобства в парсинге . Это язык описания парсеров, который избавляет от синтаксического шума, упрощает интеграцию с C++ и позволяет создавать сложные анализаторы без боли и ошибок . Забудьте о бесконечных циклах отладки и непонятных генераторах — теперь всё просто, понятно и эффективно. В этой статье вы узнаете, как QapDSL v2 меняет правила игры в мире парсинга и компиляторов, увидите реальные примеры и поймёте, почему это важно для каждого, кто работает с языками программирования и обработкой текста . Готовы ускорить разработку и вывести свои проекты на новый уровень? QapGen — мощный генератор парсеров, построенный на основе QapDSLv2, который из грамматик QapDSLv2 сразу создаёт высокопроизводительный C++ парсер с типизированным AST , описанным прямо в грамматике. t_sep { string body = any (" \t\r\n"); } using " " as t_sep; t_value{ TAutoPtr<i_value> body; " "? } t_comma_value{ "," t_value body; " "? } t_array=>i_value{ "[" " "? t_value first?; vector<t_comma_value> arr?; "]" " "? }

    habr.com/ru/articles/922128/

    #QapDSL #Lexers #AST #Compilers #Parser #parsergenerator #Parsers #C++ #dsl

  2. QapDSL — декларативное описание AST и парсеров для C++

    QapDSL — декларативное описание AST и парсеров для C++ QapDSL — это специализированный язык (DSL), который позволяет описывать абстрактные синтаксические деревья (AST) и правила их разбора для языков программирования, прежде всего C++. Такая формализация помогает автоматизировать построение парсеров, генерацию кода, анализ исходников и даже рефакторинг. Зачем нужен QapDSL? Компактно и наглядно описывать структуру и грамматику языка. Автоматически генерировать C++-структуры, парсеры, сериализаторы и визиторы. Ускорять эксперименты с языками, создавая прототипы компиляторов и анализаторов. Упрощать анализ и рефакторинг сложных языков, в т.ч. C++. Пример QapDSL-описания Рассмотрим, как описывается объявление класса C++ на QapDSL: t_class{
    string keyword;
    t_sep sep0;
    string name;
    t_sep sep1;
    TAutoPtr<t_parents> parents;
    t_sep sep2;
    TAutoPtr<t_class_body> body;
    t_sep sep3;
    {
    M+=go_any_str_from_vec(keyword,split("struct,class,union",","));
    O+=go_auto(sep0);
    O+=go_str<t_name>(name);
    O+=go_auto(sep1);
    O+=go_auto(parents);
    O+=go_auto(sep2);
    O+=go_auto(body);
    O+=go_auto(sep3);
    M+=go_const(";");
    }
    }

    habr.com/ru/articles/916006/

    #QapDSL #Adler3D #Lexers #AST #Compilers