Планирую дополнить это дело:
* Гипотетическими примерами кода.
* Подробнее рассказать о принципах реализации тех или иных вещей.
* Рассуждениями о том какие продукты можно делать на базе Н2 и с кем/чем они могут конкурировать.
* О том как из Н2 можно извлечь выгоду (монетизировать).
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
.
VD>Вопросы и критика очень приветствуются.
VD>Планирую дополнить это дело: VD>* Гипотетическими примерами кода. VD>* Подробнее рассказать о принципах реализации тех или иных вещей. VD>* Рассуждениями о том какие продукты можно делать на базе Н2 и с кем/чем они могут конкурировать. VD>* О том как из Н2 можно извлечь выгоду (монетизировать).
Прочитав драфт задумался о бреде сивокобыльном. Если бы это написал не Влад2 то точно разочаровался в языке. ПРИМЕРЫ
.
VD>Вопросы и критика очень приветствуются.
Да особо не покритикуешь.
Пока всё супер кратко, человеку не в теме понять о чём идёт речь будет практически нереально.
Народная мудрось
всем все никому ничего(с).
Re[3]: [draft] N2 – языковый фрeймворк
От:
Аноним
Дата:
22.03.12 10:57
Оценка:
Здравствуйте, VladD2, Вы писали:
VD>написаны сложно и непонятны. Буду признателен за конструктивную критику предлагающую пути увеличения доходчивости моих слов.
Сейчас есть рыба, пока не будет наполнения конструктивная критика софична
.
VD>>Вопросы и критика очень приветствуются. Tom>Да особо не покритикуешь. Tom>Пока всё супер кратко, человеку не в теме понять о чём идёт речь будет практически нереально.
А вообще оно конечно выглядит оч. многообещающим.
Интересно можно ли будет на основе фреймворка построить парсер скажем С++-а? Или тогоже RAZOR-а?
Приветствуются вопросы по существу и критика конкретных слов. То что это пока никуда не годится я знаю и так.
Мне нужна критика. Не бойтесь показаться глупым. Тема довольно сложна для описания. Мне очень важно, чтобы в итоге текст стал понятным. По этому чем больше вопросов и критики будет, тем лучше.
Подчеркну, что здесь пока что описывается не язык (он будет реализован поверх Н2-фрэймворка), а решение позволяющее создать любой язык (компилятор и средства поддержки), в том числе и следующую версию Н.
По возможности, будьте конструктивны. Критикуя указывайте конкретику, а еще лучше предлагайте свои решения.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, Tom, Вы писали:
Tom>Пока всё супер кратко, человеку не в теме понять о чём идёт речь будет практически нереально.
ОК. Хочешь сказать, что получилось слишком сложно и туманно?
Буду думать как сделать тему более доходчивой. Над примерами буду работать сегодня.
И все же хотелось бы получить критику/вопросы по конкретным частям. Возможно, если осмысливать все не в целом, а частями, то будет проще.
ЗЫ
Приношу свои извинения всем тем, кто не понял написанного. Тема довольно сложная Много метауровней получается. Как изложить ее просто я пока не понимаю. Но так как это все равно нужно, то давайте работать над понятностью вместе.
Можно попробовать в режиме вопрос-ответ, а я отражу эти вопросы в следующей версии "бумаги".
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Вопросы.
Базовая виртуальная машина, базовые типы?
Парсер? ll, lr?
Как будут разрешаться конфликты расширяемых грамматик? Точки расширения с ограничениями грамматики? Как правильно их описать?
Как будет "джунгли из многоствольных деревьев" проецироваться в однозначное "дерево"?
Более практичный вопрос на закуску: как будут передаваться значения из модуля с своей грамматикой и структурой данных в другой модуль с другой структурой данных? Например: как передать "красное-черное дерево" из питон-модуля в лисп-модуль?
Re[2]: [draft] N2 – языковый фрeймворк
От:
Аноним
Дата:
22.03.12 12:00
Оценка:
Здравствуйте, VladD2, Вы писали:
Каким будут подсистемы, как они взаимосвязаны(рисунок).
Примеры куском для каждой подсистемы. Если с парсером более менее понятно, то с остальными.
Какими ограничениями будет обладать, что будет невозможно сделать и почему.
Оптимизации кода, где они будут сосредоточены/распределены?
Будет ли возможность реализовать С++, Перл, Руби (или их подмножество)и почему нет. Насколько упроститься/усложниться при этом работа.
Здравствуйте, fin_81, Вы писали:
_>Более практичный вопрос на закуску: как будут передаваться значения из модуля с своей грамматикой и структурой данных в другой модуль с другой структурой данных? Например: как передать "красное-черное дерево" из питон-модуля в лисп-модуль?
Эта задача не может иметь общего решения, все грамматики так или иначе будут использовать те структуры данных, которые будут доступны для выбранного backend.
Здравствуйте, Tom, Вы писали:
Tom>Интересно можно ли будет на основе фреймворка построить парсер скажем С++-а?
Можно, но сложно. Я сейчас думаю, как это сделать.
Дело в том что в С++ есть откровенно контекстно-зависимые конструкции.
Например:
a < b > c;
Может быть объявлением переменной или выражением с двумя сравнениями.
Таким образом, чтобы это разобрать нужно, знать, что такое a и b.
А для этого на уровне парсера нужно иметь таблицу символов.
К чему я в конце концов приду пока не ясно.
Tom>Или тогоже RAZOR-а?
Это не проблема.
... << RSDN@Home 1.2.0 alpha 4 rev. 1472>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Здравствуйте, fin_81, Вы писали:
_>Вопросы. _>Базовая виртуальная машина, базовые типы?
Это будет универсальный всемогутор который может компилировать что угодно в что попало.
Так что фиксированной ВМ или базовых типов не будет.
Какой бекенд выберешь в такой, и будет транслироваться твой код.
Ессно нужно понимать, что не для любого языка можно будет использовать любой бекенд.
_>Парсер? ll, lr?
Ни то ни другое. https://github.com/rampelstinskin/ParserGenerator
_>Как будут разрешаться конфликты расширяемых грамматик?
Вот так: Re[2]: Обновление ParserGenerator'а
Возможно, будут добавлены приоритеты для правил на случай если это правило не сработает.
Но я пока не могу представить случай, когда это правило даст сбой.
_>Точки расширения с ограничениями грамматики? Как правильно их описать?
Чего?
_>Как будет "джунгли из многоствольных деревьев" проецироваться в однозначное "дерево"?
А зачем джунгли? Джунгли это комбинаторный взрыв и куча неоднозначностей на ровном месте. Смотри мое сообщение про правило разрешения конфликтов.
И что характерно любой разобранный вариант можно типизировать.
_>Более практичный вопрос на закуску: как будут передаваться значения из модуля с своей грамматикой и структурой данных в другой модуль с другой структурой данных? Например: как передать "красное-черное дерево" из питон-модуля в лисп-модуль?
Языки должны быть совместимы на уровне бекенда.
... << RSDN@Home 1.2.0 alpha 4 rev. 1472>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
VD>ОК. Хочешь сказать, что получилось слишком сложно и туманно?
кому надо, тот поймет. Непонятно, почему за бортом остались динамические и полудинамические языки. игнорите?
типы и их расчет — планируется ли возможность глобальной калькуляция типов, а то боюсь F# надо вычеркнуть, как и многие другие.
перехват и восстановление после ошибок из макроса, когда есть возможность что-то подправить/уточнить — языковой фреймворк должен уметь.
о тех, кому не надо.
вообще непонятна цель этой работы. есть готовые компиляторы с отличной поддержкой и фаршем, на кой кому то делать это снова.
позиционирование работы ,- для кого, никак не ясно. DSL можно писать в десятке других сред. чем лучше? а можно не морочится с DSL-ями
а чуть подправить настройку для N или для K? что мне даст создание своего DSL кроме головной боли?
VD>"Работая над Nemerle нами (группой RSDN) было выявлено несколько архитектурных и множество проектных недостатков Nemerle."
Это несерьезно. Почему за столько лет не устранили? Компилятор написан для заявленного функционала и со своей ролью справляется.
Tom>>Или тогоже RAZOR-а? WH>Это не проблема.
Так у него же тоже как я понимаю очень не тривиальный парсер? Надо как то отделять куски разметки от кода?
Tom>>Интересно можно ли будет на основе фреймворка построить парсер скажем С++-а? WH>Можно, но сложно. Я сейчас думаю, как это сделать. WH>Дело в том что в С++ есть откровенно контекстно-зависимые конструкции. WH>Например: WH>a < b > c; WH>Может быть объявлением переменной или выражением с двумя сравнениями. WH>Таким образом, чтобы это разобрать нужно, знать, что такое a и b. WH>А для этого на уровне парсера нужно иметь таблицу символов.
WH>К чему я в конце концов приду пока не ясно.
парсер с++ это скорее неподъемная задачка для одного человека
т.к. если хочется парсить с++, то надо брать clang и делать из него выхлоп
Здравствуйте, Tom, Вы писали:
Tom>Интересно можно ли будет на основе фреймворка построить парсер скажем С++-а? Или тогоже RAZOR-а?
Конечно, можно. И не только парсер.
Разор вообще задача довольно простая (при наличии парсера встроенного языка (например, шарпа)). С С++ придется повозиться. Все же не самый простой язык.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.