Рубрика «parser»
Компилятор языка моделирования в одиночку: от C++ к Rust — находки и откровения
2025-12-26 в 13:16, admin, рубрики: AnyDynamics, compiler development, dsl, lalrpop, lexer, lexgen, MVL, parser, инди-разработка, язык моделирования
Erlang-совместимые битовые строки в Go: создаём funbit
2025-10-08 в 10:14, admin, рубрики: bit-level, bitstring, erlang, Go, parser, protocolsTL;DR: Мы перенесли битовый синтаксис Erlang в Go, чтобы парсить бинарные протоколы без боли. Получилась библиотека funbit — декларативный парсер с поддержкой не выровненных по байтам данных.
Предыстория
В процессе разработки funterm — мультиязыкового REPL, объединяющего Python, Lua, JavaScript и Go — мы столкнулись с необходимостью эффективной работы с бинарными данными. Нужно было парсить сетевые протоколы, обрабатывать структурированные данные и работать с битовыми полями на уровне отдельных битов.
Что не так с ручным парсингом
Что если представить habr в виде obsidian-графа?
2025-09-16 в 3:25, admin, рубрики: obsidian, obsidian сортировка, obsidian.md, parser, python, python3, дизайн, парсингНочью (а точнее уже утром), я не мог уснуть, из-за навязчивой мысли в голове..
А что если спарсить часть статей с хабра и представить их в виде obsidian графа, будет ли это выглядеть, как красивая база знаний?
Откуда датасет?
Первым делом, я решил найти API хабра, для получения статей. Как я понял, они закрытые..
Мобильное приложение, насколько я знаю, тоже берёт статьи с сайта, без API.
Тогда, я вспомнил свой старый проект, который я начал делать, когда только учился парсингу (там был ужас по коду), скрапер на beautifulsoup4 и requests.
QapGen: Создаём мощные парсеры на C++
2025-07-09 в 9:01, admin, рубрики: AST, c++, compiler, dsl, Gamedev, Lexers, parser, parser-generator, treeQapDSLv2 — это язык который транслируется в обычный C++ код. Он позволяет удобно и компактно задавать грамматики/правила разбора, значительно упрощая разработку компиляторов и анализаторов.
QapGen — это генератор дерева_лексеров/парсеров описанных на QapDSLv2. Сама грамматика QapDSLv2 описана на QapDSLv2 на 100%. Поэтому QapGen как основной читатель этой грамматики сам генерирует часть своего кода(весь парсер QapDSLv2).
Основные фишки QapDSLv2 + QapGen — это:
-
Отсутствие этапа токенизации — Читать полностью »
Как создать свой парсер и AST-генератор на C++ с минимальными усилиями: знакомьтесь с QapDSLv2
2025-07-09 в 9:00, admin, рубрики: AST, c++, compilers, dsl, Lexers, parser, parser-generator, parsers, QapDSLQapDSLv2 — это язык который транслируется в обычный C++ код. Он позволяет удобно и компактно задавать грамматики и правила разбора, значительно упрощая разработку компиляторов и анализаторов.
Про соседнюю статью
Я решил выложить сразу две стать в одно время. В этой статье всё про QapDSLv2, а в той про QapGen — крутой генератор парсеров из QapDSLv2.
Система аналитики и презентации данных с учётом ограничений системы F
2025-06-09 в 10:30, admin, рубрики: parser, python, streamlit, аналитика, разработкаВсем привет, меня зовут Владислав, и в этом году я заканчиваю бакалавриат по направлению "Бизнес-информатика". Данная статья является изложением моего личного опыта по разработке системы аналитики и презентации данных.
Я постарался сделать свою курсовую работу не просто формальной отпиской, а действительно полезным делом. Мне было важно разобраться в теме, научиться писать и понимать грамотный Python-код, анализировать результаты работы (я же всё-таки, Бизнес-информатик :) ) и предложить практические выводы — так, чтобы работа принесла реальную пользу и мне, и тем, кто с ней столкнётся.
Описание процесса работы
Парсинг с помощью LLM: зачем, как и сколько стоит?
2025-03-21 в 7:15, admin, рубрики: llm, OpenAI, openai api, parser, python, scrapingВо всю идет 2025 год, и нейросети перестают быть чем-то фантастическим. Они уже повсюду в нашей жизни: от умных колонок в квартирах до сложнейших систем, управляющих логистикой и финансами. Вместе с ними стремительно меняется подход к работе с данными. В этой статье мы поговорим о том, как современные LLM помогают автоматизировать сбор данных с веб-сайтов и сводят к минимуму рутинную настройку и "подкручивание" парсеров.
Компилятор за выходные: синтаксические деревья
2024-01-14 в 16:43, admin, рубрики: lexer, parser, азы программирования, компилятор, программирование для пятого класса, синтаксическое деревоВам когда-нибудь приходилось задаваться вопросом, как работает компилятор, но так руки и не дошли разобраться? Тогда этот текст для вас. Мне тоже не доводилось заглядывать под капот, но тут так случилось, что мне нужно прочитать курс лекций о компиляторах местным третьекурсникам. Кто встречался с некомпетентными преподавателями? Здравствуйте, это я :)
Итак, чтобы самому разобраться в теме, я собираюсь написать транслятор с эзотерического языка программирования wend (сокращение от week-end), который я только что сам придумал, в обычный ассемблер. Задача уложиться в несколько сотен строк питоновского кода. Основной репозиторий Читать полностью »
Как создать свою СУБД с нуля и не сойти с ума. Практическое пособие начинающему некроманту. Часть первая
2023-01-06 в 3:47, admin, рубрики: database development, diy или сделай сам, parser, relational database, sql, sqlite, sqlite3, transpilation, wal, базы данных, ненормальное программирование, СУБД, хранилища данныхПарсеры Пратта для чайников
2020-03-27 в 12:16, admin, рубрики: AST, compilers, Go, golang, parser, Компиляторы, ПрограммированиеРекурсивный спуск работает идеально, когда вы можете принимать решение относительно разбираемого куска кода с помощью текущего контекста и токена.
Картину портят выражения: постфиксные, инфиксные и прочие. Проблема: вы не можете понять, какого типа выражение вы обрабатываете до тех пор, пока не разберёте его первую половину. Зачастую для вас также важны приоритет операции и её ассоциативность, чтобы построенное AST имело правильную структуру.
После хаков для того, чтобы успешно парсить инфиксные выражения в рекурсивном спуске, через код становится трудно разглядеть разбираемую парсером грамматику.
В этой статье мы напишем парсер для диалекта Go, особенности которого мы рассмотрим чуть ниже. Как вы сможете убедиться, алгоритм Пратта решает большинство наших проблем.


