[Nitra] описание
От: VladD2 Российская Империя www.nemerle.org
Дата: 07.04.14 16:46
Оценка: 172 (10)
http://confluence.jetbrains.com/display/Nitra/Home

Ссылки на бинарники пока не сделали, так как пока не ясно куда и как их выкладывать. В ближайшее время разберемся выложим инсталлятор.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re: [Nitra] описание
От: Mamut Швеция http://dmitriid.com
Дата: 07.04.14 18:07
Оценка:
VD>http://confluence.jetbrains.com/display/Nitra/Home

VD>Ссылки на бинарники пока не сделали, так как пока не ясно куда и как их выкладывать. В ближайшее время разберемся выложим инсталлятор.


Просто напомню: https://twitter.com/nitra


dmitriid.comGitHubLinkedIn
Re: [Nitra] описание
От: Silver_S Ниоткуда  
Дата: 08.04.14 15:48
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>http://confluence.jetbrains.com/display/Nitra/Home


А в восстановлении после ошибок прогресс есть?
Там с чем больше проблем — с концепцией(сам принцип как разные конструкции восстанавливать), или с реализацией? Я сначала думал в самом dsl(Nitra) будут какие-то хинты вставляемые вручную, подсказки — как восстанавливать. Для полностью автоматического восстановления одной грамматики достаточно, чтобы оно качественно работало?
Re[2]: [Nitra] описание
От: VladD2 Российская Империя www.nemerle.org
Дата: 09.04.14 15:39
Оценка:
Здравствуйте, Silver_S, Вы писали:

S_S>А в восстановлении после ошибок прогресс есть?


Да. С ним все почти в порядке. Единственная проблема — алгоритмы получились не быстрыми. Сейчас Wolfhound занимается их оптимизацией.

S_S>Там с чем больше проблем — с концепцией(сам принцип как разные конструкции восстанавливать), или с реализацией?


Проблема в алгоритмах. За время работы над восстановлением мы выбросили 3 подхода (назовем это так). В итоге мы нашли отличное решение проблемы, но весьма вычислительно сложное.

S_S>Я сначала думал в самом dsl(Nitra) будут какие-то хинты вставляемые вручную, подсказки — как восстанавливать. Для полностью автоматического восстановления одной грамматики достаточно, чтобы оно качественно работало?


Нам очень хотелось создать именно полностью автоматизированный вариант. В практических парсерах, (например, в используемом в Решарпере) разработчик грамматики фактически описывает дополнительные (более широкие) правила для ошибочных случаев. Для большой конторы и малого числа языков это приемлемо. Но для широкого применения это не лучшее решение.

Мы так же обдумываем добавление error-правил для обхода разных сложных случаев и для улучшения диагностических сообщений. Но этого пока нет. Сейчас задача довести до ума автоматическое решение.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re: [Nitra] описание
От: _NN_ www.nemerleweb.com
Дата: 14.04.14 05:31
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>http://confluence.jetbrains.com/display/Nitra/Home


VD>Ссылки на бинарники пока не сделали, так как пока не ясно куда и как их выкладывать. В ближайшее время разберемся выложим инсталлятор.


С помощью этой версии Nitra можно разобрать язык основанный на отступах ?
http://rsdn.nemerleweb.com
http://nemerleweb.com
Re[2]: [Nitra] описание
От: WolfHound  
Дата: 14.04.14 06:44
Оценка:
Здравствуйте, _NN_, Вы писали:

_NN>С помощью этой версии Nitra можно разобрать язык основанный на отступах ?

Нет.
Этот вопрос даже не прорабатывался.
Ясно, что нужно добавить некоторые примитивы. Но какие не ясно.
Можешь предлагать варианты.
Желательно чтобы их можно было использовать для чего-то ещё.
... << RSDN@Home 1.2.0 alpha 5 rev. 62>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[2]: [Nitra] описание
От: VladD2 Российская Империя www.nemerle.org
Дата: 14.04.14 14:08
Оценка:
Здравствуйте, _NN_, Вы писали:

_NN>С помощью этой версии Nitra можно разобрать язык основанный на отступах ?


Специальных средств для этого нет.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[3]: [Nitra] описание
От: _NN_ www.nemerleweb.com
Дата: 16.04.14 07:39
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Здравствуйте, _NN_, Вы писали:


_NN>>С помощью этой версии Nitra можно разобрать язык основанный на отступах ?


VD>Специальных средств для этого нет.


А планируется в будущем ?
http://rsdn.nemerleweb.com
http://nemerleweb.com
Re[4]: [Nitra] описание
От: VladD2 Российская Империя www.nemerle.org
Дата: 16.04.14 12:53
Оценка:
Здравствуйте, _NN_, Вы писали:

_NN>А планируется в будущем ?


Если найдем универсальное решение.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re: [Nitra] описание
От: Mumusan  
Дата: 17.04.14 06:31
Оценка: 1 (1)
Мои поздравления команде!!
Вы — большие молодцы, так держать!! Ну и да, не отвлекайтесь и чините баги ))))

Здравствуйте, VladD2, Вы писали:

VD>http://confluence.jetbrains.com/display/Nitra/Home


VD>Ссылки на бинарники пока не сделали, так как пока не ясно куда и как их выкладывать. В ближайшее время разберемся выложим инсталлятор.
Re[5]: [Nitra] описание
От: STDray http://stdray.livejournal.com
Дата: 21.04.14 21:22
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Если найдем универсальное решение.


http://confluence.jetbrains.com/display/Nitra/SourceSnapshot

Если я верно понимаю, будь
  public PositionToLineColumn(pos : int) : LineColumn;
  public GetSourceLine(pos : int) : Location;

виртуальными, можно было бы написать производный класс, который бы препроцессил исходник, докидывая в текст некие indent и dedent, а потом делал корректное позиционирование к оригинальному тексту. Тогда, полагаю, можно было бы описывать грамматику как контекстно-свободную.
Re[6]: [Nitra] описание
От: WolfHound  
Дата: 22.04.14 06:41
Оценка:
Здравствуйте, STDray, Вы писали:

STD>виртуальными, можно было бы написать производный класс, который бы препроцессил исходник, докидывая в текст некие indent и dedent, а потом делал корректное позиционирование к оригинальному тексту. Тогда, полагаю, можно было бы описывать грамматику как контекстно-свободную.

Там есть вот такой конструктор.
  public this(originalText : string,
              text         : string,
              fileIndex    : int,
              fileName     : string,
              lineIndexes  : array[int],
              textOffset   : int);

Хотя конечно поддержку препроцессора нужно сделать по нормальному.

Но в данном случае это костыль. Хотелось бы придумать способ описания отступов в самой грамматике.
... << RSDN@Home 1.2.0 alpha 5 rev. 62>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[7]: [Nitra] описание
От: Аноним  
Дата: 22.04.14 12:08
Оценка:
Предикаты выражений.

пример
digit = ['0'..'9'] /pred/ 

func pred(s:string):bool
{
 if(s.toint() mod 3=0) false else true;
}


или

digit = ['a'..'z'] /isPerem/ // проверяем переменная уже занесена в список

func pred(s:string):bool
{
 if(!Perem.Hash.isCons(s)) false else true;
}

В случае положительного результата предиката разбор идет дальше, в случае отрицательного данная ветвь отбрасываеться.
Re[8]: [Nitra] описание
От: WolfHound  
Дата: 22.04.14 12:20
Оценка:
Здравствуйте, <Аноним>, Вы писали:

А>Предикаты выражений.

хъ
А>В случае положительного результата предиката разбор идет дальше, в случае отрицательного данная ветвь отбрасываеться.
Предикаты зло.
У нас уже есть синтаксические предикаты.
Они создают очень много проблем. Мы думаем выкинуть их вообще.

А твои предикаты вообще контекстно-зависимые. Совсем ужОс-ужОс.
... << RSDN@Home 1.2.0 alpha 5 rev. 62>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[9]: [Nitra] описание
От: Аноним  
Дата: 22.04.14 13:03
Оценка:
Здравствуйте, WolfHound, Вы писали:

WH>Здравствуйте, <Аноним>, Вы писали:


А>>Предикаты выражений.

WH>хъ
А>>В случае положительного результата предиката разбор идет дальше, в случае отрицательного данная ветвь отбрасываеться.
WH>Предикаты зло.
WH>У нас уже есть синтаксические предикаты.
WH>Они создают очень много проблем. Мы думаем выкинуть их вообще.

WH>А твои предикаты вообще контекстно-зависимые. Совсем ужОс-ужОс.


Наверно прав. А как насчет определенного числа повторений
например num*4 возвращает список из 4 num
num*4-8 возвращает список от 4 до 8 num
Re[9]: [Nitra] описание
От: CodingUnit Россия  
Дата: 22.04.14 13:04
Оценка:
Здравствуйте, WolfHound, Вы писали:

WH>Здравствуйте, <Аноним>, Вы писали:

WH>Предикаты зло.
WH>У нас уже есть синтаксические предикаты.
WH>Они создают очень много проблем. Мы думаем выкинуть их вообще.

Предикаты были последним средством чтобы разрулить неоднозначность в парсере без приоритета правил, как можно будет без них тогда разруливать ее?
Re[10]: [Nitra] описание
От: WolfHound  
Дата: 22.04.14 13:40
Оценка:
Здравствуйте, <Аноним>, Вы писали:

А>Наверно прав. А как насчет определенного числа повторений

А>например num*4 возвращает список из 4 num
А>num*4-8 возвращает список от 4 до 8 num
Это не проблема. Оно даже реализовано.
Но синтаксиса для этого нет.
Нужно придумать синтаксис и оно сразу появится.
... << RSDN@Home 1.2.0 alpha 5 rev. 62>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[10]: [Nitra] описание
От: WolfHound  
Дата: 22.04.14 13:40
Оценка:
Здравствуйте, CodingUnit, Вы писали:

CU>Предикаты были последним средством чтобы разрулить неоднозначность в парсере без приоритета правил, как можно будет без них тогда разруливать ее?

Как вариант создавать неоднозначный АСТ и разруливать типизатором. Перегрузка синтаксиса, в сущности, ничем не отличается от перегрузки функций.
... << RSDN@Home 1.2.0 alpha 5 rev. 62>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[11]: [Nitra] описание
От: Аноним  
Дата: 22.04.14 14:02
Оценка:
Здравствуйте, WolfHound, Вы писали:

WH>Здравствуйте, <Аноним>, Вы писали:


А>>Наверно прав. А как насчет определенного числа повторений

А>>например num*4 возвращает список из 4 num
А>>num*4-8 возвращает список от 4 до 8 num
WH>Это не проблема. Оно даже реализовано.
WH>Но синтаксиса для этого нет.
WH>Нужно придумать синтаксис и оно сразу появится.

Как вариант Num**(first-last, first2-, -last2, count)
Вроде бы 2 звездочки нигде не повторяються
Re[11]: [Nitra] описание
От: CodingUnit Россия  
Дата: 22.04.14 14:09
Оценка:
Здравствуйте, WolfHound, Вы писали:

WH>Здравствуйте, CodingUnit, Вы писали:


CU>>Предикаты были последним средством чтобы разрулить неоднозначность в парсере без приоритета правил, как можно будет без них тогда разруливать ее?

WH>Как вариант создавать неоднозначный АСТ и разруливать типизатором. Перегрузка синтаксиса, в сущности, ничем не отличается от перегрузки функций.

Типизатор должен будет обращаться к парсеру, чтобы узнать что сработали те или иные правила над неоднозначной последовательностью, помоему это все же задача парсера а не типизатора, лучше пока предикаты не убирать, пока не будет найдено универсальное решение без лишних сложностей.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.