Здравствуйте, Sucaba, Вы писали:
S>Все примеры работают по 1. Более того, для релиза вы можете склеить ваш DLL с S>.Derived.dll c помощью MergeDerived.exe: S>$> <nuget-package-path>\tools\net40\MergeDerived.exe <full-path-to-your dll>
ILMerge то чем не подошел, что ты отдельный утиль сделал?
AVK>>Тесты это понятно. Вопрос в другом — есть ли релизные коммерческие проекты, которые его используют или пока что идет активная разработка? S>Я сделал анонс проекта вчера утром. Вряд ли кто-то уже успел сделать релизный коммерческий проект
Кроме тебя, разумеется
... << RSDN@Home 1.2.0 alpha 5 rev. 100 on Windows 8 6.2.9200.0>>
Здравствуйте, AndrewVK, Вы писали:
AVK>Здравствуйте, Sucaba, Вы писали:
S>>Как я уже сказал, я работаю над парсером MSIL.
AVK>В смысле? MSIL же бинарный с тривиальной структурой, чего там парсить то? Или ты имеешь в виду IL Assembler? Так он же очень примитивный, там и парсить то особо нечего.
А ВЫ уверены?) Лично мне не кажется что грамматику на полторы тысячи строк можно назвать простой.
Вы правы только в той части, что в языке отсутствуют арифметические выражения типа того же калькулятора,
в остальном же — это язык более функциональный чем c#.
В прочем, судите сами: http://www.ecma-international.org/publications/standards/Ecma-335.htm
S>>поверхностно. Например, что вам скажет скорость работы c# парсера если вы хотите написать S>>парсер лога?
AVK>Парсер лога??? Я что то не припоминаю ни одного лога, который нельзя было бы отпарсить регексом. Т.е. это ты только лексер протестируешь. А уж GLR на фоне этого, как термоядерная бомба на фоне травматического пистолета.
Никто не говорил о использовании GLR для лог-парсера. Он, кстати, используется только для
недетерминистических грамматик. У вас может быть язык, у которого
синтаксис тривиален, зато лексические правила с наворотами. Посмотрите пример
с вложенными коментариями.
И не факт, что регекспы-удобнее (правда они всегда под рукой).
Здравствуйте, AndrewVK, Вы писали:
AVK>Здравствуйте, Sucaba, Вы писали:
S>>Все примеры работают по 1. Более того, для релиза вы можете склеить ваш DLL с S>>.Derived.dll c помощью MergeDerived.exe: S>>$> <nuget-package-path>\tools\net40\MergeDerived.exe <full-path-to-your dll>
AVK>ILMerge то чем не подошел, что ты отдельный утиль сделал?
По техническим причинам проще было создать и использовать свою чем тянуть еще одну зависимость.
Кроме того, в будущем намечаються проблемы с подписанными-сборками. Поэтому нужен контроль
над ситуацией.
Там порядка ~100 строк простого кода. Мелочь, по сравнению с остальным.
Здравствуйте, Sucaba, Вы писали:
S>А ВЫ уверены?) Лично мне не кажется что грамматику на полторы тысячи строк можно назвать простой.
Это чего ж там такого есть, что аж полторы тысячи то? А то у меня целый SQL DML влез в 1340 строк с комментариями и семантикой.
S>в остальном же — это язык более функциональный чем c#.
Я читал этот стандарт, там много всего, а Part II так читал несколько раз. Что конкретно я должен там увидеть?
S>Никто не говорил о использовании GLR для лог-парсера. Он, кстати, используется только для S>недетерминистических грамматик.
IL asm такой? Или GLR только тестами проверялся?
S>И не факт, что регекспы-удобнее (правда они всегда под рукой).
Да дело то не в удобстве, просто лексеры сейчас никого особо не волнуют.
... << RSDN@Home 1.2.0 alpha 5 rev. 100 on Windows 8 6.2.9200.0>>
Здравствуйте, AndrewVK, Вы писали:
AVK>Это чего ж там такого есть, что аж полторы тысячи то? А то у меня целый SQL DML влез в 1340 строк с комментариями и семантикой.
Это без семантики, коментариев и лексера.
Все тоже что и в c# + дополнительные низкоуровневые возможности
вроде JMP, tail-call, глобальные методы и т.д.
AVK>Я читал этот стандарт, там много всего, а Part II так читал несколько раз. Что конкретно я должен там увидеть?
Тогда, думаю, вы заметили грамматику в конце документа.
Она устаревшая, но там нетрудно найти ответы на ваши вопросы.
S>>Никто не говорил о использовании GLR для лог-парсера. Он, кстати, используется только для S>>недетерминистических грамматик. AVK>IL asm такой? Или GLR только тестами проверялся?
IL asm грамматика, которую я использую, такая. Хотя можно было обойтись LALR1.
Здравствуйте, Sucaba, Вы писали:
S>Все тоже что и в c#
Что значит тоже? Там есть лямбды, вывод типов, linq запросы, 100500 конструкций инициализации и т.п.?
S> + дополнительные низкоуровневые возможности S>вроде JMP, tail-call, глобальные методы и т.д.
При чем тут это? Как "JMP, tail-call, глобальные методы" влияют на синтаксис?
AVK>>IL asm такой? Или GLR только тестами проверялся? S>IL asm грамматика, которую я использую, такая.
... << RSDN@Home 1.2.0 alpha 5 rev. 100 on Windows 8 6.2.9200.0>>
Здравствуйте, AndrewVK, Вы писали:
AVK>Здравствуйте, Sucaba, Вы писали:
S>>Все тоже что и в c# AVK>Что значит тоже? Там есть лямбды, вывод типов, linq запросы,
... AVK>При чем тут это? Как "JMP, tail-call, глобальные методы" влияют на синтаксис?
AndrewVK, грамматика (для .Net 1.0) в конце документа — там
размер, синтаксис и причины. Посмотреть быстрее, чем тратить
время на мыло
AVK>100500 конструкций инициализации и т.п.?
В спецификации c# 5.0 грамматика занимает только 1500 строк ...
AVK>>>IL asm такой? Или GLR только тестами проверялся? S>>IL asm грамматика, которую я использую, такая.
AVK>
Языки могут представляться более чем одной грамматикой.
Выбор грамматики — это вопрос удобства, производительности и т.д.
Грамматику языка можно выбрать так, что она перестанет быть детерминированной
для LALR1 алгоритма. Другими словами, в таблице парсера будут конфликты.
Здравствуйте, Sucaba, Вы писали:
S>AndrewVK, грамматика (для .Net 1.0) в конце документа — там S>размер, синтаксис и причины. Посмотреть быстрее, чем тратить S>время на мыло
Я может неправильно выразился, но я эту грамматику видел, отсюда и вопросы. В самом стандарте грамматика занимает 22 странички (494-515) формата А5 крупным шрифтом, с большими полями, разбивкой между параграфами, заголовками, комментариями и примерами. А если выкинуть из грамматики явное перечисление стандартных типов, заменив на дискриминант в семантике, то она еще ужмется. Да то что останется имеет такой размер в основном потому что очень много всяких флажков и модификаторов, являющихся ключевыми словами, а по структуре грамматика весьма примитивна.
AVK>>100500 конструкций инициализации и т.п.? S>В спецификации c# 5.0 грамматика занимает только 1500 строк ...
Та грамматика, она довольно приблизительная.
S>Грамматику языка можно выбрать так, что она перестанет быть детерминированной
Можно, но зачем?
... << RSDN@Home 1.2.0 alpha 5 rev. 100 on Windows 8 6.2.9200.0>>
Здравствуйте, AndrewVK, Вы писали:
AVK>Я может неправильно выразился, но я эту грамматику видел, отсюда и вопросы. В самом стандарте грамматика занимает 22 странички (494-515) формата А5 крупным шрифтом, с большими полями, разбивкой между параграфами, заголовками, комментариями и примерами. А если выкинуть из грамматики явное перечисление стандартных типов, заменив на дискриминант в семантике, то она еще ужмется. Да то что останется имеет такой размер в основном потому что очень много всяких флажков и модификаторов, являющихся ключевыми словами, а по структуре грамматика весьма примитивна.
Подозреваю что там упрощенная и старая версия для читабельности.
Вы можете найти почти-бизоновскую грамматику в SDK. Например у меня она здесь:
"C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Include\asmparse.grammar"
В этом файле сами IL инструкции вынесли в отдельную таблицу (см. документ),
потому у меня получилось больше.
Кстати 1500 — это я на глаз считал. У меня отформатированная бизоно-подобная
грамматика заняла ~1200 строк для .Net 1.0. 300 строк я прикинул для новых версий.
Спорить о том, насколько сложен CIL синтаксис, если честно, влом. Он меньше и проще
чем c#, но в отличие от c#, он нужен и будет поддерживаться. Писать сложные
и ненужные вещи чтобы кого-то впечатлить — нет времени. Если появятся люди
желающие поучаствовать в IronText, то политику экономии времени можно будет
пересмотреть.
S>>Грамматику языка можно выбрать так, что она перестанет быть детерминированной AVK>Можно, но зачем?
Я уже говорил, для удобства. В случае IronText — это возможность использовать
language-интерфейс также программно для генерации CIL кода + испытание GLR на практике.
В будущем планируется предоставить этот language-интерфейс пользователю для генерации
своего IL кода очень простым и удобным способом. Согласитесь, в серьезном фреймворке
для разработки языков возможность удобной работы с CIL немаловажна.
Здравствуйте, AndrewVK, Вы писали:
AVK>Я может неправильно выразился, но я эту грамматику видел, отсюда и вопросы. В самом стандарте грамматика занимает 22 странички (494-515) формата А5 крупным шрифтом, с большими полями, разбивкой между параграфами, заголовками, комментариями и примерами. А если выкинуть из грамматики явное перечисление стандартных типов, заменив на дискриминант в семантике, то она еще ужмется. Да то что останется имеет такой размер в основном потому что очень много всяких флажков и модификаторов, являющихся ключевыми словами, а по структуре грамматика весьма примитивна.
Подозреваю что там упрощенная и старая версия для читабельности.
Вы можете найти почти-бизоновскую грамматику в SDK. Например у меня она здесь:
"C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Include\asmparse.grammar"
В этом файле сами IL инструкции вынесли в отдельную таблицу (см. документ),
потому у меня получилось больше.
Кстати 1500 — это я на глаз считал. У меня отформатированная бизоно-подобная
грамматика заняла ~1200 строк для .Net 1.0. 300 строк я прикинул для новых версий.
Спорить о том, насколько сложен CIL синтаксис, если честно, влом. Он меньше и проще
чем c#, но в отличие от c#, он нужен и будет поддерживаться. Писать сложные
и ненужные вещи чтобы кого-то впечатлить — нет времени. Если появятся люди
желающие поучаствовать в IronText, то политику экономии времени можно будет
пересмотреть.
S>>Грамматику языка можно выбрать так, что она перестанет быть детерминированной AVK>Можно, но зачем?
Я уже говорил, для удобства. В случае IronText — это возможность использовать
language-интерфейс также программно для генерации CIL кода + испытание GLR на практике.
В будущем планируется предоставить этот language-интерфейс пользователю для генерации
своего IL кода очень простым и удобным способом. Согласитесь, в серьезном фреймворке
для разработки языков возможность удобной работы с CIL немаловажна.
Здравствуйте, Sucaba, Вы писали:
S>В этом файле сами IL инструкции вынесли в отдельную таблицу (см. документ), S>потому у меня получилось больше.
А в твоей грамматике, что, все инструкции перечислены? Нафига? Ну, собственно, тогда понятно откуда 1500 строк, больше вопросов не имею.
S>Он меньше и проще чем c#
Я бы сказал он кардинально проще.
S>Писать сложные и ненужные вещи чтобы кого-то впечатлить — нет времени.
Да дело то не во впечатлении, просто велик шанс что на грамматиках чуть посложнее вылезут серьезные проблемы.
S>>>Грамматику языка можно выбрать так, что она перестанет быть детерминированной AVK>>Можно, но зачем?
S>Я уже говорил, для удобства.
Странное понимание удобства. Расписывать в грамматике правилами часто оказывается сильно сложнее, чем просто написать пару строк в семантике.
S>В будущем планируется предоставить этот language-интерфейс пользователю для генерации S>своего IL кода очень простым и удобным способом.
А чем он будет принципиально удобнее компилятора expression tree?
S> Согласитесь, в серьезном фреймворке для разработки языков возможность удобной работы с CIL немаловажна.
Ну, как бы, есть тот же Microsoft.Cci.
... << RSDN@Home 1.2.0 alpha 5 rev. 100 on Windows 8 6.2.9200.0>>
Здравствуйте, Михаил Романов, Вы писали:
AVK>>>Ну, как бы, есть тот же Microsoft.Cci. S>>Ну если он удобен ...
МР>Да вполне. Он только документирован плохо. Но по примерам и документации к коду разобраться можно.
Лично я, ничего не имею против него. Просто, опять же, как и у Mono.Cecil
высокий порог сложности для среднестатистического .net-чика/проекта. А мене бы все же
хотелось пустить LOP в массы.
В данном случае для компиляции в .Net.
S>Просто, опять же, как и у Mono.Cecil S>высокий порог сложности для среднестатистического .net-чика/проекта.
У него он в целом высокий Даже для людей, уже имеющих некоторое представление о предмете вопроса.
S>А мене бы все же S>хотелось пустить LOP в массы.
Удачи.
У меня самого в ближайшее время не предвидится ничего такого, что потребовало бы разработки DSL (или иных применений вашей разрботки), поэтому ничем толковым — а в первую очередь, я так понимаю, вам бы пригодилось тестирование и реальное использование, и как следствие, список пожеланий — помочь не смогу.
Здравствуйте, Михаил Романов, Вы писали:
a.org/wiki/Language-oriented_programming]LOP[/url] в массы. МР>Удачи. МР>У меня самого в ближайшее время не предвидится ничего такого, что потребовало бы разработки DSL (или иных применений вашей разрботки), поэтому ничем толковым — а в первую очередь, я так понимаю, вам бы пригодилось тестирование и реальное использование, и как следствие, список пожеланий — помочь не смогу.
На помощь я пока не рассчитывал, просто интересно было что опытные люди думают.
Спасибо всем за отзывы и особенно за критику, на данном этапе это важно.