Re[7]: приоритет оператора зависит от переноса
От: _NN_ www.nemerleweb.com
Дата: 16.02.12 14:12
Оценка:
Здравствуйте, _Claus_, Вы писали:


_C_>>>Повторю, что предлагал раньше. В грамматике должны быть две различимые категории — блок и выражение.

_C_>>>блок — множество выражений.

_NN>>А разве нельзя сегодня отличить блок от выражения в макросе ?


_C_>по моему — нет. из-за этого туда и пролазят скобки, знаки, и прочее, к сути не относящееся.


В таком случае нужно дать формальное определение "выражению".
Чтобы понять как их отличать.
http://rsdn.nemerleweb.com
http://nemerleweb.com
Re[8]: приоритет оператора зависит от переноса
От: _Claus_  
Дата: 16.02.12 14:26
Оценка:
_NN>В таком случае нужно дать формальное определение "выражению".
_NN>Чтобы понять как их отличать.

выражение — связанные функциями и операторами термы. как-то так.
Re[5]: приоритет оператора зависит от переноса
От: Ziaw Россия  
Дата: 16.02.12 14:31
Оценка:
Здравствуйте, _Claus_, Вы писали:


Z>>Кстати. А есть у кого мысли о поддержке отступов в Н2?


_C_>Повторю, что предлагал раньше. В грамматике должны быть две различимые категории — блок и выражение.

_C_>блок — множество выражений.

_C_>тогда, к примеру, если мы условимся писать имена блоков с большой, а выражений с маленькой, макросы будут такими


Совершенно не вижу смысла.

Как это вижу я. Нужна псевдо-грамматика зависящая от контекста:

  1. увеличение отступа обрабатываем как "{" если в данном месте разбор обрывается полным правилом, возвращающим Expr и следующим правилом идет Expr.
  2. увеличение отступа обрабатываем как " " если в данном месте ожидается Expr.
  3. уменьшение отступа обрабатываем как ";" если предыдущее увеличение было по правилу b.
  4. в ином случае уменьшение отступа обрабатываем как "}" и раскрываем получившийся сиквенс если он содержит одно выражение
  5. перевод строки с сохранением отступа обрабатываем как ";"

Только я не вижу способов определить условия в вариантах a и b оставаясь в рамках приоритетного выбора.

2Wolfhound: это возможно хотя бы в теории?
Re[6]: приоритет оператора зависит от переноса
От: _Claus_  
Дата: 16.02.12 14:37
Оценка:
Z>2Wolfhound: это возможно хотя бы в теории?

2Wolfhound: что проще, мой вариант, или Ziaw?
Re[7]: приоритет оператора зависит от переноса
От: Ziaw Россия  
Дата: 16.02.12 15:24
Оценка:
Здравствуйте, _Claus_, Вы писали:

_C_>2Wolfhound: что проще, мой вариант, или Ziaw?


А какую задачу решает твой вариант? Места в грамматике, где должен разбираться Expr и так известны. По типу макроса. Соглашения об именовании тут ничего не дают.
Re[8]: приоритет оператора зависит от переноса
От: _Claus_  
Дата: 16.02.12 15:42
Оценка:
Z>А какую задачу решает твой вариант? Места в грамматике, где должен разбираться Expr и так известны. По типу макроса. Соглашения об именовании тут ничего не дают.

Моя концепция универсальна и проста и в использовании, твой подход — ad hoc для конкретной ситуации — и только.
кто-то захочет другие скобки или метки для блоков, даже в N — макроблоки выражений, то придется навернуть еще описания и кода.
внутри квазицитат отступы не работают. со мной заработают
все должно быть универсальным.если возможно. и просто в реализации. в твоем описании не реализуется тема топика, в моем — и вспоминать не надо. я так вижу.
Re[9]: приоритет оператора зависит от переноса
От: Ziaw Россия  
Дата: 16.02.12 18:45
Оценка:
Здравствуйте, _Claus_, Вы писали:


Z>>А какую задачу решает твой вариант? Места в грамматике, где должен разбираться Expr и так известны. По типу макроса. Соглашения об именовании тут ничего не дают.


_C_>Моя концепция универсальна и проста и в использовании, твой подход — ad hoc для конкретной ситуации — и только.


Ты нормально опиши концепцию-то. У тебя дальше выделения блоков тема не раскрыта. Основная проблема не в этом. Почти с таким же успехом можно ориентироваться на выражения. Если не ошибаюсь, блоки всегда идут последним выражением либо выражением перед ключевым словом. Это можно вычислить по идее.

_C_>кто-то захочет другие скобки или метки для блоков, даже в N — макроблоки выражений, то придется навернуть еще описания и кода.

_C_>внутри квазицитат отступы не работают. со мной заработают
_C_>все должно быть универсальным.если возможно. и просто в реализации. в твоем описании не реализуется тема топика, в моем — и вспоминать не надо. я так вижу.

Твоя концепция конечно проста, только она не делает то, что нужно. Нужно по готовой C-style PEG грамматике генерить python/ruby-style парсер.

Один из минусов твоего решения, в том, что оно специально пишется, чтобы работало под обе грамматики. Этого никто делать не будет.

И вообще, то, что приводишь как пример, это описание синтаксиса в N1. Не PEG.
Re[10]: приоритет оператора зависит от переноса
От: _Claus_  
Дата: 16.02.12 20:44
Оценка:
Z>Ты нормально опиши концепцию-то. У тебя дальше выделения блоков тема не раскрыта.

дальше все как обычно.

Z>Основная проблема не в этом. Почти с таким же успехом можно ориентироваться на выражения. Если не ошибаюсь, блоки всегда идут последним выражением либо выражением перед ключевым словом. Это можно вычислить по идее.


не понимаю как это вычислить. ожидание блока и выражения — совсем разные вещи.

Z>Один из минусов твоего решения, в том, что оно специально пишется, чтобы работало под обе грамматики. Этого никто делать не будет.


я рассчитывал, что декларируемая модификация грамматики позволяет на лету править синтаксис блоков и выражений.
если нет — то парсер не один, конечно. но это будет грустно.

Z>И вообще, то, что приводишь как пример, это описание синтаксиса в N1. Не PEG.


я описал концепцию, которая решает поставленные задачи (-скобки () {} + отступы), при условии, описанном выше. а как ее вписать в PEG, лучше скажет спец по PEG.
мои парсеры работают по старой традиционной схеме (не PEG).
Re[11]: приоритет оператора зависит от переноса
От: Ziaw Россия  
Дата: 17.02.12 05:23
Оценка:
Здравствуйте, _Claus_, Вы писали:

Z>>Ты нормально опиши концепцию-то. У тебя дальше выделения блоков тема не раскрыта.


_C_>дальше все как обычно.


Подробнее.

_C_>не понимаю как это вычислить. ожидание блока и выражения — совсем разные вещи.


Ожидание блока это ожидание выражения если оно последнее в правиле, либо за ним может идти ключевое слово.

_C_>я рассчитывал, что декларируемая модификация грамматики позволяет на лету править синтаксис блоков и выражений.

_C_>если нет — то парсер не один, конечно. но это будет грустно.

Эту модификацию должен будет делать (и понимать, что и зачем он делает) каждый программист пишущий макросы. Им и без этого головняков хватает.

_C_>я описал концепцию, которая решает поставленные задачи (-скобки () {} + отступы), при условии, описанном выше. а как ее вписать в PEG, лучше скажет спец по PEG.

_C_>мои парсеры работают по старой традиционной схеме (не PEG).

В данной подветке идет обсуждение возможности поддержки отступов в N2. Там точно будет PEG и ничего другого.
Re[12]: приоритет оператора зависит от переноса
От: WolfHound  
Дата: 17.02.12 09:48
Оценка:
Здравствуйте, Ziaw, Вы писали:

Z>В данной подветке идет обсуждение возможности поддержки отступов в N2. Там точно будет PEG и ничего другого.

1)От PEG'а там уже мало что осталось. Алгоритм получился очень сильно другим.
2)Вы оба исходите из неверного предположения, что будет два вида синтаксиса. На скобках и на отступах.
Но бывают и другие виды синтаксиса. Например, XML или оберон. И Н2 обязан их поддерживать.
... << RSDN@Home 1.2.0 alpha 4 rev. 1472>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[13]: приоритет оператора зависит от переноса
От: _Claus_  
Дата: 17.02.12 10:42
Оценка:
WH>2)Вы оба исходите из неверного предположения, что будет два вида синтаксиса. На скобках и на отступах.
WH>Но бывают и другие виды синтаксиса. Например, XML или оберон. И Н2 обязан их поддерживать.

золотые слова! именно для этого и нужна концепция выделенных блоков и выражений. упрощает она обращение с видами синтаксиса,
скрывая их детали.
Re[12]: приоритет оператора зависит от переноса
От: _Claus_  
Дата: 17.02.12 11:10
Оценка:
Z>Подробнее.

спрашивай, не знаю я, что непонятно.

_C_>>не понимаю как это вычислить. ожидание блока и выражения — совсем разные вещи.


Z>Ожидание блока это ожидание выражения если оно последнее в правиле, либо за ним может идти ключевое слово.


если ты прав, то в N1 можно написать if макрос 1 в 1 как в Ruby c отступами. попробуй.

_C_>>я рассчитывал, что декларируемая модификация грамматики позволяет на лету править синтаксис блоков и выражений.

_C_>>если нет — то парсер не один, конечно. но это будет грустно.

Z>Эту модификацию должен будет делать (и понимать, что и зачем он делает) каждый программист пишущий макросы. Им и без этого головняков хватает.


в моем противоречивом мире, — то, что может сделать компилятор, не должен делать программист. поэтому, возможно, разница во взглядах у нас определяется идеологией. не логикой.

Z>В данной подветке идет обсуждение возможности поддержки отступов в N2. Там точно будет PEG и ничего другого.

что бы там ни было, — то, что элементарно описывается в N1 не должно ставить в тупик в N2.
я исходил из этого.
Re[13]: приоритет оператора зависит от переноса
От: Ziaw Россия  
Дата: 17.02.12 11:12
Оценка:
Здравствуйте, WolfHound, Вы писали:

WH>1)От PEG'а там уже мало что осталось. Алгоритм получился очень сильно другим.


Вы бы хоть делились, интересно же.

WH>2)Вы оба исходите из неверного предположения, что будет два вида синтаксиса. На скобках и на отступах.

WH>Но бывают и другие виды синтаксиса. Например, XML или оберон. И Н2 обязан их поддерживать.

Я лично исхожу из того, что парсер Nemerle на отступах надо не писать отдельно, а как-то генерить. Если конечно, синтаксис на отступах не будет упразднен. Что будет печально, я убежден, что при нормальной поддержке, большинство пишущих сейчас на немерле писали бы на нем.

Почти все популярные OSS языки склоняются к отмене фигурных и прочих скобок, которые являются костылями парсеру Ruby,Python,CoffeScript,Haskell,Ocaml.
Re[13]: приоритет оператора зависит от переноса
От: Ziaw Россия  
Дата: 17.02.12 12:05
Оценка:
Здравствуйте, _Claus_, Вы писали:

_C_>спрашивай, не знаю я, что непонятно.


Да ничего не понятно. Как будут парситься скобки в скобочном синтаксисе, например?

Z>>Ожидание блока это ожидание выражения если оно последнее в правиле, либо за ним может идти ключевое слово.

_C_>если ты прав, то в N1 можно написать if макрос 1 в 1 как в Ruby c отступами. попробуй.

Неожиданный вывод. Какое отношение имеют возможности Н1 к обсуждению?

_C_>в моем противоречивом мире, — то, что может сделать компилятор, не должен делать программист. поэтому, возможно, разница во взглядах у нас определяется идеологией. не логикой.


А в моем противоречивом мире не принято есть детей, разница идеологий налицо.

Z>>В данной подветке идет обсуждение возможности поддержки отступов в N2. Там точно будет PEG и ничего другого.

_C_>что бы там ни было, — то, что элементарно описывается в N1 не должно ставить в тупик в N2.
_C_>я исходил из этого.

Что элементарно описывается-то? В Н1 ничего не описывается, парсер индент синтаксиса работает как препроцессор.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.