true-grue / raddsl Goto Github PK
View Code? Open in Web Editor NEWTools for rapid prototyping of DSL compilers
License: MIT License
Tools for rapid prototyping of DSL compilers
License: MIT License
Был на вашей презентации данной программы, с нетерпением жду появления к ней документации. Особенно в плане перевода не простых математических операций, а также произвольных тэгов. Думаю, что появление документации приведёт к более качественному написанию dsl-компиляторов и синтаксических анализаторов
Подвожу небольшие итоги к использованию библиотеки в качестве парсера для регулярных выражений. Комментарии на русском - так будет быстрей.
Для начала хочу отметить, что библиотека по существу очень полезна, я думаю ее использовать в следующем моем небольшом проекте. Более того, по результатам тех моих статей библиотекой заинтересовались некоторые мои хорошие знакомые из крупных международных компаний, и их оттолкнули те же проблемы, с которыми столкнулся я сам.
Опять же, по логике работы библиотеки у меня пока вопросов нет, их я задал еще когда писался код для регулярных выражений.
Однако несмотря на наличие времени и желания разобраться мне пришлось обратиться к вам за помощью в оформлении фазы кодогенерации и обработки ошибок. Отсюда следует проблема первая и основная: несмотря на наличие примеров документации, покрывающей основы использования, не хватает.
Чтение примеров и тестов здесь, конечно, помогает, но ограниченно.
Во-первых, вы не соблюдаете обычные для Питона соглашения по оформлению кода, то есть все примеры и код мне надо как переформатировать для включения в проект. В Питоне не принято нарушать pep8 и следующие за ним стилевые руководства, а любые нарушения сразу вызывают подозрения в непрофессионализме. Это, собственно, пришло замечание из австралийского офиса Гугла.
Во-вторых, в силу отсутствия документации не было возможности понять терминологию, которая используется в коде. Комментарии вида "вдохновлено тем-то и тем-то" ссылаются на относительно сложные и разнородные проекты/языки, то есть библиотека как бы не является самодостаточной: надо иметь представление о том, как такие вещи работают в Прологе, или Стратего, или еще где-то в третьем месте. Ничего сложного там нет, но как, к примеру, понять, что именно из этих проектов вы решили использовать? Какие термины переняли?
В-третьих, вы стараетесь держать код предельно компактным. Но библиотека занимает меньше 500 строк в сумме. Добавление docstrings к основным модулям/классам/методам/функциям бы сильно упростило чтение кода, нисколько ему не навредив. И совершенно бесплатно позволило бы генерировать документацию из кода при помощи, например, Sphinx.
В-четвертых, я уже не помню, когда последний раз видел либу на Питоне, которую нельзя было скачать из PyPi.
В-пятых, тесты могли бы здорово помощь в понимании работы кода. Обычно в проектах без документации (а это суровая реальность коммерческой разработки) тесты - первое место, где можно хоть как-то ознакомиться с внутренними API кода, но, к сожалению, я нашел только очень примитивные тесты для примеров, чего явно недостаточно как для тестирования, так и для ознакомления.
Ну, и наконец, неплохо бы оформить какой-нибудь туториал, который бы по шагам объяснял разработку какого-нибудь компилятора.
Буду рад помочь с решением перечисленных вопросов!
И еще раз спасибо за ваши комментарии и самое приятное открытие конца года - чатик в Телеграмме. :-)
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.