Здравствуйте, V.Petrovski, Вы писали:
VP>Но чтобы этот парсер шустрым был лучше всего писать его рекурсивным с возможностью VP>заглядования на К символов.
Погоди ка. Насколько я знаю яки создают ДКА, а ДКА — это самый эффективный алгоритм по распознованию. Или я не прав? А парсеры с заглядыванием обычно — это LL(k)-парсеры, ди и они обычно не в силах порождать ДКА. Я так понимаю у яков проблемы с простотой отладки (хотя тоже жить моно) и обработкой ошибок (но это уже вообще проблемы всех парсеров).
Проблема еще в том, что на яке есть нехилые наработки (почки готовая граматика и разбор в дерево половины этой граматики).
Что же касается
... << RSDN@Home 1.1.2 beta 1 >>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[6]: Мое видение того как можно разработать новый язык для
Здравствуйте, AndrewVK, Вы писали:
VD>>К тому, же полноценный парсер просто обязан поддерижвать семантический анализ. Так как иначе во многих случаях вообще нельзя квалифицировать некоторые конструкции.
AVK>Например?
Да примеры тут и там. Например, приведение типов от выражения в скобках можно отделить или путем хакерских предположений, или просто проанализировав что находится в скобках.
Или в атрибутах могут быть как позиционные параметры, так и именованные. Но именованные обязаны быть последними. Сделать парсер учитывающий это очень не просто. Намного проще разобрать все параметры как выражения, а потом уже семантически проверить корректность.
В общем, есть куча мест где формальные парсеры не могут дать четкую классификацию выражения и делают по контексту
... << RSDN@Home 1.1.2 beta 1 >>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, Miem, Вы писали:
AVK>>Пока без комментариев, просто кусочек кода
M>Только не так! Пожалуйста! Вся прелесть такого читабельного языка как С# пропадает.
Предложи свой вариант. По мне так вполне читаьельно. Что конкретно тебя смущает?
Здравствуйте, Воронков Василий, Вы писали:
IT>>Смотря на что. Пару-тройку Владо-дней на генерацию идей и ещё 3-4 человеко-года на их реализацию.
ВВ>А что такое Владо-день? Чем он отличается от Васе-дня?
Намного менее очевидно. Кроме того совсем непонятно.
VD>Вот только это не так сложно и на жденириках сделать.
На дженериках можно этот конкретный пример еще лучше сделать. Не в этом суть.
VD>Второй вариант сделать по человечески сложнее. Тут уже ужно конкретно думать...
О! О том и речь. Если бы задача стояла делать типизированные коллекции то достаточно было бы шаблоноподобного синтаксиса. Но речь то не о создании механизма для типизированных коллекций, с этим и дженерики справляются, речь то о о куда более мощном механизме. И второй пример это самое простое что лично мне нужно. Могу тебе привести самый простой, но реальный пример генерации кода на xslt.
Вот и надо придумать способ записать тоже самое, но более внятным языком. В приведенном примере я постарался это сделать. Буду рад увидеть более читабельные варианты. Пример с атрибутами меня не воодушевил, а точнее совсем не понравился. Мешает все в одну кучу — непонятно где собственно код, а где его генерация, сразу сказать какой код получится в результате генерации крайне сложно.
VD>Основная проблема в том, что по этому коду нужно будет производить отладку. А тут уже чистая генерация кода.
По поводу компилятора я уже говорил — меня это не вдохновляет.
VD>ЗЫ
VD>Кстати, где взять Яву 1.1?
Зачем именно 1.1. Скачай 1.4.2. Брать разумеется на java.sun.com
Здравствуйте, VladD2, Вы писали:
AVK>>Вот только не надо этих сишных префиксов
VD>Не, тут ты не прав. Перфиксы это не сишные.
Тем не менее в шарпе такого нет и слава богу.
VD>Это способ создать конструкцию не конфликтующую с идентификаторами в приложениях.
Кривой, надо заметить способ. Я за добавление небольшого количества ключевых слов или реюз существующих. Меня всякие _printf __printf и прочая всегда в сях не нравились. ИМХО уродство это.
VD> Есть соглашение по которому двойное подчеркивание зарезервировано для компилятора и не может использоваться для обозначения идентификаторов. Именно по этому __ilasm или __msil.
А если я использую __ilasm — опять не совместимость? Инвалидное какое то, надо сказать решение. Уж давай тогда гуиды использовать?
ilasm4F4ED94F3E34483091ABF3F3229EF1E6
Как тебе? Такое точно вряд ли кто использует в качестве идентификатора
VD>Например, у МС есть недукументированное ключевое слово __arglist. Называно именно по этим соображениям.
Именно что недокументированное.
VD>Попробуй создать переменную: VD>
VD> int __arglist;
VD>
А ты попробуй создать getProp при наличии свойства Prop.
VD>У нас просто нет другого выхода.
Ну вот еще один довод почему не стоит писать свой компилятор
Здравствуйте, VladD2, Вы писали:
VD>Погоди ка. Насколько я знаю яки создают ДКА, а ДКА — это самый эффективный алгоритм по распознованию. Или я не прав?
В плане производительности? Да, прав.
VD> А парсеры с заглядыванием обычно — это LL(k)-парсеры,
Здравствуйте, AndrewVK, Вы писали:
AVK>Тем не менее в шарпе такого нет и слава богу.
Такие вещи используются когда нужно расширить язык и ну потерять обатной совместимости. В С++ такого тоже нет. Это делают те кто расширяет (нестандартно) компилятор и хочет добиться 100%-ой совместимости со стандартом.
AVK>Кривой, надо заметить способ. Я за добавление небольшого количества ключевых слов или реюз существующих.
Добавлять ключевые слова значит делать язык несовместимым с оригиналом, так как они могут использоваться в качестве идентификаторов.
AVK> Меня всякие _printf __printf и прочая всегда в сях не нравились. ИМХО уродство это.
Называть функции с двойным подчеркиванием вообще нельзя. Это могут себе позолить делать только разработчики компилятора.
Ну, а на счет эстетики... Ничего страшного. Другие способы еще кривее.
Если стоит выбор между эстетикой и совместимостью, то даже думать нечего.
AVK>А если я использую __ilasm — опять не совместимость?
Где используешь? В качестве названия идентификатора? Ну, это нарушение правил, и ответственность только на тебе. Вероятность такой дури равна нул.
AVK> Инвалидное какое то, надо сказать решение. Уж давай тогда гуиды использовать? AVK>ilasm4F4ED94F3E34483091ABF3F3229EF1E6 AVK>Как тебе? Такое точно вряд ли кто использует в качестве идентификатора
Ну, раз ты согласен...
VD>>Например, у МС есть недукументированное ключевое слово __arglist. Называно именно по этим соображениям.
AVK>Именно что недокументированное.
А наши что будут по отношению к языку документированны? __arglist назван именно так, чтобы не противоречить стандарту.
AVK>А ты попробуй создать getProp при наличии свойства Prop.
Ээээ... Наверно get_Prop? Ну, да это вроде оговорено. А наши ключевые слова по определению не оговорены.
VD>>У нас просто нет другого выхода.
AVK>Ну вот еще один довод почему не стоит писать свой компилятор
Это не довод.
... << RSDN@Home 1.1.2 beta 1 >>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, AndrewVK, Вы писали:
AVK>И что ты там птичьего увидел?
Грязь. Не код, а каша. О поддержке такой каши редактором даже и речи быть не может.
AVK>Намного менее очевидно. Кроме того совсем непонятно.
Все прекрасно понятно. Твой код тоже без коментариев непонятен. Зато читается легко и совместим с синтаксисом Шарпа. По сути меняется только семантика. Причем меняется она атрибутами.
AVK>О! О том и речь. Если бы задача стояла делать типизированные коллекции то достаточно было бы шаблоноподобного синтаксиса. Но речь то не о создании механизма для типизированных коллекций, с этим и дженерики справляются, речь то о о куда более мощном механизме. И второй пример это самое простое что лично мне нужно.
Понятно. Но кроме того, что "нужно", нужно еще учитывать и много других факторов:
1. Синтаксис должен быть максимально близок к Шарпу, чтобы работали редакторы и т.п.
2. Код должен легко читаться. Тут, кстати, тоже лучше быть похожим на Шарп, чтобы программисту не приходилось сильно переключаться.
AVK>Могу тебе привести самый простой, но реальный пример генерации кода на xslt...
Вот это уже вообще райт-онли.
Надо как-то наложить Шарп на Шарп. Т.е. чтобы метаязык был самим шарпом.
За одно такой подход позволит именно метопрограммировать, т.е. писать код пишущий код.
AVK>Вот и надо придумать способ записать тоже самое, но более внятным языком.
Согласен. Как тебе предложение о принятии синтаксиса Шарпа плюс хитрые атрибутц?
AVK> В приведенном примере я постарался это сделать. Буду рад увидеть более читабельные варианты.
К сожалению я не смог по большому счету прочесть это дело. Уситчивости не хватило.
Но, думаю, общей идее будут вложенные мета-вызовы. Т.е. вместо шаблона хслт выступает обычная функция. А вместо apply-templates некий атрибут выполняющий схожие действия.
AVK> Пример с атрибутами меня не воодушевил, а точнее совсем не понравился. Мешает все в одну кучу — непонятно где собственно код, а где его генерация, сразу сказать какой код получится в результате генерации крайне сложно.
Отчего же не понятно? Вопрос в том, что сами атрибуты — это уже применение. Генерация же должна быть в отдельных методах. И должна быть возможность повышения абстракции.
VD>>Основная проблема в том, что по этому коду нужно будет производить отладку. А тут уже чистая генерация кода.
AVK>По поводу компилятора я уже говорил — меня это не вдохновляет.
А что ты предлогаешь? Генерировать гигобайты кода и разбираться с ним? Ты даже не сможешь вынести каждый сгенерированный класс в отдельный файл, так как это уже связано со средой.
... << RSDN@Home 1.1.2 beta 1 >>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Просто даже M$ не чурается работать с университетами которые как раз выпускают будующих программистов компиляторов. Реально было бы посодрудничать с ними а заодно дать людям пищу для будущих диссертаций и научных изысканий. И помочь вырастить новое поколение программистов.
и солнце б утром не вставало, когда бы не было меня
Re[2]: Мое видение того как можно разработать новый язык для
Ты бы почитал, что там написано. Это упрошенный пример используемый для обучения детей в институтах. К ресерч-языку это отношения не имеет.
S> Просто даже M$ не чурается работать с университетами которые как раз выпускают будующих программистов компиляторов.
У нас почти все программисты этот курс проходят.
S> Реально было бы посодрудничать с ними а заодно дать людям пищу для будущих диссертаций и научных изысканий.
Я не против. Можно написать им писма и пригласить в проект.
S> И помочь вырастить новое поколение программистов.
Эээ... Пщай само растет. А то мы его скорее всего загубим.
... << RSDN@Home 1.1.2 beta 1 >>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[3]: Мое видение того как можно разработать новый язык для
VD>У нас почти все программисты этот курс проходят.
Во во курс проходят. Теория и практика две ооочень разные вещи. Сколько у тебя уйдет времени на вникание всех проблем. А у них есть уже наработки, свой парсер,
исходники. Но я абсолютно не говорю, что у них будет лучше чем у вас, но раз уж задумали такое дело то лучше привлечь практиков. При том, что они за это все равно хоть небольшую но денежку получают и могут потратить все Рабочее время, в отличии от некоторых.
Шутка.
и солнце б утром не вставало, когда бы не было меня
Re[2]: Мое видение того как можно разработать новый язык для
Здравствуйте, Serginio1, Вы писали:
S> Во во курс проходят. Теория и практика две ооочень разные вещи. Сколько у тебя уйдет времени на вникание всех проблем. А у них есть уже наработки, свой парсер, S>исходники. Но я абсолютно не говорю, что у них будет лучше чем у вас, но раз уж задумали такое дело то лучше привлечь практиков.
Да они скорее теоретики. Хотя, как я уже сказал, я только за.
S> При том, что они за это все равно хоть небольшую но денежку получают и могут потратить все Рабочее время, в отличии от некоторых. S> Шутка.
Ну, некоторые могут и все свободные ночи потратить.
... << RSDN@Home 1.1.2 beta 1 >>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re: Мое видение того как можно разработать новый язык для до
Твое видение того как можно разработать новый язык для дотнет -> А на кой ляд он нужен. какие в нем будут преимущества перед уже существующими. Для каких задач будет применятся. Или это просто милое упражнение по теории компиляторов после прочтения книжки Ахо. Не сочтите вышеприведенную фразу за оскорбление — не хотел вас обидеть, клянусь — но действительно непонятна цель. То есть какждый язык для чего-то нужен. Как пример: пролог, лисп, С и все остальное. У каждого своя ниша. А какую нишу ваш займет?