Re[20]: КС и КЗ грамматики
От: vdimas Россия  
Дата: 20.11.04 09:18
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Я кажется тебе уже сказал, что ты заблуждаешся. КС позволяет построить формальное описание, а по нему алгоритм. Подобные же зависимости мешают это сделать. Обходные пути не есть приведение к КС.


здесь
Автор: vdimas
Дата: 20.11.04


в общем, Влад, я вижу, что тебе кажется, будто я в упор не понимаю ваш пример. Поверь на слово — понимаю.
у меня тоже приличный опыт на C# (правда только на 1.0 и 1.1)

более того, каюсь, по старой сишной привычке я даже обзывал ф-ии так: get(); (правда только приватные, ибо протектед и паблик именовал согласно принятому в C# name conventions)

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

С использованием техники lexer->parser тебе действительно необходимы обходные пути, я полностью это признаю. Но, вроде бы, спорил совсем не с этим?

-----
внематочнее читаем оппонента, внематочнее...
Re[23]: КС и КЗ грамматики
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 20.11.04 09:27
Оценка: +1 :)
Здравствуйте, vdimas, Вы писали:

Паша, будь добр, поясни свою позицию. А то простановка плюсов vdimas за доказательства того что грамматика C# и С++ КС наряду с простановкой плюсов prVovik, доказывающего что грамматики и шарпа и С++ КЗ приводит меня в состояние ступора.
... << RSDN@Home 1.1.4 beta 3 rev. 231>>
AVK Blog
Re[23]: КС и КЗ грамматики
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 20.11.04 09:27
Оценка:
Здравствуйте, vdimas, Вы писали:

V>ну дык читай, что на что может меняться

V>это суть описание вида БНФ (вернее, БНФ способно описывать правила, попадающие под это определение)

V>есть теорема, что грамматика, представимая БНФ является как минимум КС

V>(если сам поленишься найти — найду ссылки)

Есть такая теорема. Только не представляется грамматика шарпа. Скачай грамматику из R#, там EBNF. Вот только почему то для грамматики шарпа пришлось коку расширять совсем не бнф конструкциями.

V>я тебе уже показывал, как твой случай описываеся БНФ.


Таким образом, как ты это описал, можно описать любую КЗ грамматику. Например просто очертим все возможное множество программ и поставим их в правой части, как ты предлагаешь. Да, такая BNF-грамматика будет бесконечной, но она будет существовать. Отсюда любая грамматика является КС. Абсурд?

V>Да ты легко сам можешь написать КС парсер, который корректно разберет это несчатсное 'get' в различных синтаксических конструкциях


Вряд ли. Все парсеры шарпа, которые я видел (а я видел их довольно много) были не КС. Случайность?

V>---------

V>вот тебе упрощенный пример в регулярной грамматике, где одна и та же цепочка символов может являться частью других допустимых цепочек.

V>$KeywordGet = 'g' 'e' 't' ';'.

V>$VarGet = 'i' 'n' 't' '_' 'g' 'e' 't' '=' '1' ';'.

А когда ты вставишь это в полную грамматику шарпа и попробуешь обработать к примеру кокой то она тебе скажет что в грамматике твоей ошибки, потому что ; в сочетании с идентификатором подходит под другое правило.
... << RSDN@Home 1.1.4 beta 3 rev. 231>>
AVK Blog
Re[25]: КС и КЗ грамматики
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 20.11.04 09:27
Оценка:
Здравствуйте, prVovik, Вы писали:

V>>>Семантика тут не причем. Мы говорим о ПРИНАДЛЕЖНОСТИ предложения языку.

AVK>>Мы говорим о грамматике языка.
V>А это одно и тоже!

То есть в грамматику входит семантика, я правильно тебя понял?

V> Язык — это множество предложений, обычно бесконечное. Грамматика — это конечное описание множества предложений языка.


Это описание правил, по которым может строится синтаксически правильные конструкции языка. Соответствие предложения грамматике является необходимым, но не достаточным условием. Например синтаксическая корректность xml называется wellformness. При этом well-formed документ содержать невалидные данные (например два повторяющихся id). В итоге любой парсер сможет этот xml отпарсить без ошибок, но при том в целевой системе он будет невалидным. Это и называется семантикой.

V>Если использовать твою логику на счет "семантики",


Она не моя, она общепринятая. Ссылки я приводил.

V> то можно договориться до чего угодно. Например, до того, что С# — это регулярный язык. Не веришь? Смотри. Зададим его грамматику в виде регулярного выражения ".*", а все остаьное вынесем на якобы "семантический уровень".


Ты видимо опять не прочитал статью, на которую я привел ссылку. Печально. Прочти, там доходчиво объяснено почему так сделать нельзя.

V>Вообще, для чего нужна грамматика? С помощью грамматики можно задавать ограничения на предложения языка. Ограничения могут быть разными. Например, с помощью грамматики можно указать, что все операторы должны оканчиваться точкой с запятой, или что каждой открывающей скобке должна соответствовать закрывающая и т.д. Точно таким же ограничением является ограничение на предъобьявление идентификатоа. Это ограничение ни чем не лучше и не хуже вышеописанных ограничений. Они равноправны.


Ты забываешь одну простую вещь — когда говорят слово грамматика в подобном контексте имеют ввиду parsing expression grammar. Что это такое можешь прочесть здесь: http://en.wikipedia.org/wiki/Parsing_expression_grammar
... << RSDN@Home 1.1.4 beta 3 rev. 231>>
AVK Blog
Re[21]: КС и КЗ грамматики
От: vdimas Россия  
Дата: 20.11.04 09:30
Оценка:
Здравствуйте, prVovik, Вы писали:

V>>синтаксических ошибок нет,

V>что означает фраза "синтаксических ошибок нет"?

Собственно, во мнениях на теорию языков уже сошлись, просто поимей ввиду теперь прикладной раздел — построение компиляторов. Именно из-за их многоуровневой схемы различают синтаксические и семантические ошибки.
Re[26]: КС и КЗ грамматики
От: prVovik Россия  
Дата: 20.11.04 15:08
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>То есть в грамматику входит семантика, я правильно тебя понял?

Нет. Теория формальных языков вообще не рассматривает семантику предложений.

AVK>Это описание правил, по которым может строится синтаксически правильные конструкции языка. Соответствие предложения грамматике является необходимым, но не достаточным условием. Например синтаксическая корректность xml называется wellformness. При этом well-formed документ содержать невалидные данные (например два повторяющихся id). В итоге любой парсер сможет этот xml отпарсить без ошибок, но при том в целевой системе он будет невалидным. Это и называется семантикой.

А ничего, что можно построить КЗ парсер, который автоматически будет контролировать это ограничение?

V>> то можно договориться до чего угодно. Например, до того, что С# — это регулярный язык. Не веришь? Смотри. Зададим его грамматику в виде регулярного выражения ".*", а все остаьное вынесем на якобы "семантический уровень".

AVK>Ты видимо опять не прочитал статью, на которую я привел ссылку. Печально. Прочти, там доходчиво объяснено почему так сделать нельзя.
Читал. Но глупый я. И не понимаю, почему так нельзя делать. Более того, я даже реально так делал, давно, когда еще не знал слова "грамматика". Я делал интерпретатор паскаля, дак там был только лексический анализатор. Он бил программу на лексемы, а далее эти лексемы сразу обрабатывались семантическим уровнем без всяких AST. Значит ли, что язык того интерпретатора регулярный?
... << RSDN@Home 1.1.4 @@subversion >>
лэт ми спик фром май харт
Re[20]: КС и КЗ грамматики
От: Шахтер Интернет  
Дата: 20.11.04 15:20
Оценка:
Здравствуйте, prVovik, Вы писали:

V>Здравствуйте, Шахтер, Вы писали:



Ш>>"Зависящие от контекста" токены не делают язык контекстно-зависимым.


V>Это почему еще?

V>Если есть зависящие от контекста токены, то грамматика КЗ.

Нет. См. пример выше.

V>А язык, порождаемый КЗ грамматикой по определению является КЗ.


Тоже нет. Один и тот же язык может задаваться разными грамматиками.
... << RSDN@Home 1.1.0 stable >>
В XXI век с CCore.
Копай Нео, копай -- летать научишься. © Matrix. Парадоксы
Re[24]: КС и КЗ грамматики
От: Шахтер Интернет  
Дата: 20.11.04 15:20
Оценка:
Здравствуйте, AndrewVK, Вы писали:

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


AVK>Паша, будь добр, поясни свою позицию. А то простановка плюсов vdimas за доказательства того что грамматика C# и С++ КС наряду с простановкой плюсов prVovik, доказывающего что грамматики и шарпа и С++ КЗ приводит меня в состояние ступора.


Вы бы сначала определились, о чем вообще базар. Если ты откроешь стандарты, то можешь легко убедиться, что грамматики С++ и С#, которые там приведены, контекстно-свободные.
... << RSDN@Home 1.1.0 stable >>
В XXI век с CCore.
Копай Нео, копай -- летать научишься. © Matrix. Парадоксы
Re[21]: КС и КЗ грамматики
От: prVovik Россия  
Дата: 20.11.04 16:03
Оценка:
Здравствуйте, Шахтер, Вы писали:

Ш>Тоже нет. Один и тот же язык может задаваться разными грамматиками.

Ну если МОЖЕТ, то тогда да.
... << RSDN@Home 1.1.4 @@subversion >>
лэт ми спик фром май харт
Re[24]: КС и КЗ грамматики
От: prVovik Россия  
Дата: 20.11.04 17:16
Оценка:
Здравствуйте, AndrewVK, Вы писали:

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


AVK>Паша, будь добр, поясни свою позицию. А то простановка плюсов vdimas за доказательства того что грамматика C# и С++ КС наряду с простановкой плюсов prVovik, доказывающего что грамматики и шарпа и С++ КЗ приводит меня в состояние ступора.


Кстати, вот выдержка из книги "Системное программное обеспечение" А.В.Гордеев А.Ю.Молчанов Питер 2001
Глава 9. Формальные языкт и грамматики
Распознаватели. Задача разбора.
стр. 381

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

... << RSDN@Home 1.1.4 @@subversion >>
лэт ми спик фром май харт
Re[25]: КС и КЗ грамматики
От: prVovik Россия  
Дата: 20.11.04 17:17
Оценка: +2
Здравствуйте, Шахтер, Вы писали:

Ш>Вы бы сначала определились, о чем вообще базар. Если ты откроешь стандарты, то можешь легко убедиться, что грамматики С++ и С#, которые там приведены, контекстно-свободные.


А разве речь идет о том, какие грамматики приведены в стандарте?
... << RSDN@Home 1.1.4 @@subversion >>
лэт ми спик фром май харт
Re[24]: КС и КЗ грамматики
От: vdimas Россия  
Дата: 20.11.04 17:27
Оценка: +2
Здравствуйте, AndrewVK, Вы писали:

AVK>Паша, будь добр, поясни свою позицию. А то простановка плюсов vdimas за доказательства того что грамматика C# и С++ КС наряду с простановкой плюсов prVovik, доказывающего что грамматики и шарпа и С++ КЗ приводит меня в состояние ступора.


звучит прикольно, но не смущай читателя, все уже достаточно разъяснено.

Банальный пример:
Если бы в описание грамматики ЯП явно учесть факт наличие определения типа, то корректность выражения:
 A1 a = new B1();

определялось бы парсером, в зависимости от определения типов A1 и B1.
Такое возмоожно только в КЗ грамматике.

Однако, гораздо легче сделать КС — парсер который распознает только внешний вид конструкции, а корректность операций проверять дополнительно.

Мы вообще зацепились за синтаксис объявления с-в. Я утверждаю, что эта конструкция отличается именно своей конструкцией от остальных, нет другой конструкции, которая выглядила бы точно так же, как определение св-в или евентов в C#. (В общем, внешнего вида достаточно).

Я понимаю, что кого-то смущает тот факт, что ключевое слово get (и иже с ними) может использоваться как обычный идентификатор в других конструкциях языка. При использовании техники лексер->парсер — это действительно не тривиальная задача.

Вот здесь вроде понятно растолковал что имел ввиду изначально
Автор: vdimas
Дата: 20.11.04
Re[26]: КС и КЗ грамматики
От: prVovik Россия  
Дата: 20.11.04 17:27
Оценка:
Здравствуйте, AndrewVK, Вы писали:


AVK>То есть в грамматику входит семантика, я правильно тебя понял?


Ok, я понял о чем ты. В грамматику входит не вся семантика целиком, а только семантические проверки, поскольку они влияют на принадлежность программы к языку, то есть на её корректность.
... << RSDN@Home 1.1.4 @@subversion >>
лэт ми спик фром май харт
Re[25]: КС и КЗ грамматики
От: vdimas Россия  
Дата: 20.11.04 17:32
Оценка: +2
Здравствуйте, Шахтер, Вы писали:

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


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


AVK>>Паша, будь добр, поясни свою позицию. А то простановка плюсов vdimas за доказательства того что грамматика C# и С++ КС наряду с простановкой плюсов prVovik, доказывающего что грамматики и шарпа и С++ КЗ приводит меня в состояние ступора.


Ш>Вы бы сначала определились, о чем вообще базар. Если ты откроешь стандарты, то можешь легко убедиться, что грамматики С++ и С#, которые там приведены, контекстно-свободные.


естественно, т.к. правила синтаксических конструкций там в виде БНФ.

А КЗ правила даются в описательном виде в "других" пунктах стандарта, ибо если это расписать в символах — глаза поломаются разбирать
Re[24]: КС и КЗ грамматики
От: prVovik Россия  
Дата: 20.11.04 17:35
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>Таким образом, как ты это описал, можно описать любую КЗ грамматику. Например просто очертим все возможное множество программ и поставим их в правой части, как ты предлагаешь. Да, такая BNF-грамматика будет бесконечной, но она будет существовать. Отсюда любая грамматика является КС. Абсурд?


Да. Потому что КС-грамматика по определению состоит из конечного числа продукций.
... << RSDN@Home 1.1.4 @@subversion >>
лэт ми спик фром май харт
Re[22]: КС и КЗ грамматики
От: Шахтер Интернет  
Дата: 20.11.04 17:56
Оценка:
Здравствуйте, prVovik, Вы писали:

V>Здравствуйте, Шахтер, Вы писали:


Ш>>Тоже нет. Один и тот же язык может задаваться разными грамматиками.

V>Ну если МОЖЕТ, то тогда да.

А что, есть сомнения?
... << RSDN@Home 1.1.0 stable >>
В XXI век с CCore.
Копай Нео, копай -- летать научишься. © Matrix. Парадоксы
Re[26]: КС и КЗ грамматики
От: Шахтер Интернет  
Дата: 20.11.04 17:59
Оценка:
Здравствуйте, prVovik, Вы писали:

V>Здравствуйте, Шахтер, Вы писали:


Ш>>Вы бы сначала определились, о чем вообще базар. Если ты откроешь стандарты, то можешь легко убедиться, что грамматики С++ и С#, которые там приведены, контекстно-свободные.


V>А разве речь идет о том, какие грамматики приведены в стандарте?


Ну так вы определитесь, о каких именно грамматиках говорите.
... << RSDN@Home 1.1.0 stable >>
В XXI век с CCore.
Копай Нео, копай -- летать научишься. © Matrix. Парадоксы
Re[23]: КС и КЗ грамматики
От: prVovik Россия  
Дата: 20.11.04 18:12
Оценка:
Здравствуйте, Шахтер, Вы писали:

Ш>А что, есть сомнения?


Ну я, например, не представляю, как зависимость от контекста можно учесть в КС грамматике
... << RSDN@Home 1.1.4 @@subversion >>
лэт ми спик фром май харт
Re[27]: КС и КЗ грамматики
От: prVovik Россия  
Дата: 20.11.04 18:12
Оценка:
Здравствуйте, Шахтер, Вы писали:

Ш>Ну так вы определитесь, о каких именно грамматиках говорите.


Ну я имел ввиду общую грамматику языка (то есть грамматику всех корректных программ), которая является ну ни как не ниже КЗ
... << RSDN@Home 1.1.4 @@subversion >>
лэт ми спик фром май харт
Re[24]: КС и КЗ грамматики
От: Шахтер Интернет  
Дата: 20.11.04 18:40
Оценка:
Здравствуйте, prVovik, Вы писали:

V>Здравствуйте, Шахтер, Вы писали:


Ш>>А что, есть сомнения?


V>Ну я, например, не представляю, как зависимость от контекста можно учесть в КС грамматике

V>

Ты вообще читаешь мои сообщения? Я говорил о возможности задания языка разными грамматиками.
... << RSDN@Home 1.1.0 stable >>
В XXI век с CCore.
Копай Нео, копай -- летать научишься. © Matrix. Парадоксы
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.