Форум
Философия программирования
Тема
Как правильно задавать вопросы
B
I
abc
U
X
3
X
3
H1
H2
H3
H4
H5
H6
Asm
C/C++
C#
Erlang
Haskell
IDL
Java
Lisp
MSIL
Nemerle
ObjC
OCaml
Pascal
Perl
PHP
Prolog
Python
Ruby
Rust
SQL
VB
Здравствуйте, WolfHound, Вы писали: WH>Здравствуйте, vdimas, Вы писали: V>>Если правильно пользоваться терминологией и определениями, а не твоей свободной интерпретацией (типа неодноначности БНФ), то никакого бреда нет. Скорее всего, тебе просто нечего ответить. WH>У меня с терминологией все в порядке. WH>А вот ты не понимаешь, что БНФ может задать неоднозначную грамматику. WH>Но разбирающие грамматики (PEG, TDOP,...) проектируют так, чтобы задать неоднозначную грамматику было бы не возможно по построению. WH>>>[q] WH>>>Это так, только если контекстно-свободная грамматика является неоднозначной. Т.е. если она не является на самом деле контекстно-свободной и мы располагаем лишь подмножеством контекстно-свободных правил из полной системы правил грамматики. WH>>>[/q] WH>>>Аааааааааа!!!!!!!!!!!!!! Жжжжжжжжееееееесть. V>>Да, пример был жесть. WH>Он просто показал, что БНФ может задать неоднозначную грамматику. WH>Только и всего. WH>А твой гон про то, что неоднозначная КС грамматика не является КС грамматикой, просто противоречит всем определениям. V>>Ты повторно показал непонимание взаимоотношение [i]грамматики языка[/i] и грамматики [i]правил, по которой работает парсер[/i] этого языка. Почти никогда это отношение не является 1:1, иначе не нужен был бы семантический анализ. WH>Я про это говорю, уже не помню, сколько лет подряд. WH>И тут ты заявляешь, что я это не понимаю. :))) WH>А еще я понимаю что то что приходится делать с БНФ для того чтобы скормить его генератору парсеров маразм. WH>А те генераторы, что жрут любую КС грамматику тормоза. V>>Ты привел пример грамматики, в котором A и B заведомо неразличимы. WH>Именно. Я привел простейшую неоднозначную грамматику. V>>Но, если требуется их различимость, значит была приведена неполная грамматика, или [i]язык заведомо неоднозначный[/i]. Но последний вариант по дефолту отбрасывается, т.к. неоднозначные языки не имеют практической ценности, по крайней мере в кач-ве языков программирования. Ведь ты просто не сможешь их скомпилить ни в какой технике. Т.е. либо это была неполная грамматика языка, как в случае x * y, описанном [url=http://ru.wikipedia.org/wiki/%D0%9D%D0%B5%D0%BE%D0%B4%D0%BD%D0%BE%D0%B7%D0%BD%D0%B0%D1%87%D0%BD%D0%B0%D1%8F_%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B0%D1%82%D0%B8%D0%BA%D0%B0]здесь[/url], либо таки A и B неразличимы, например, являются [i]промежуточными нетерминалами[/i] (ты знаешь что это такое?) и могут быть без всяких последствий "склеены" в один в процессе [url=https://www.google.com.ua/search?q=%D0%BF%D1%80%D0%B8%D0%B2%D0%B5%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5+%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B0%D1%82%D0%B8%D0%BA%D0%B8&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:ru:official&client=firefox]приведения грамматики[/url]. WH>Разбирающим грамматикам весь этот бред не нужен. WH>Они однозначны по построению. Ты просто не сможешь задать неоднозначную разбирающую грамматику. WH>И работают как есть без всяких факторизаций. WH>Вся вина разбирающих грамматик в том, что они просты как пробка. И там исследовать нечего. Они просто работают. И как следствие на них не защитить диссертацию. Поэтому их научное сообщество и игнорирует. WH>То ли дело БНФ. Тут тебе и факторизации. И привидения. И построение разбирающих алгоритмов на основе порождающих правил. И куча тому подобного бреда. WH>Но мне на диссеры плевать. WH>Я создаю практичное решение. WH>Которым легко пользоваться. WH>Вот это грамматика разбирает текст и создает АСТ нужной формы. WH>Код генерируется по принципу, что вижу, то пою. Без трансформаций. Ручных или машинных. WH>Самое сложное, что тут происходит это превращение литералов в ДКА. WH>[code] WH>[Ast()] Rule : Ast; WH>[Ast(LeftRule, RightRules)] SequenceRule is Rule = Rule : 10 (Rule : 10)+; WH>[Ast(Op, Rule)] NotRule is Rule = "!"s Rule : 20; WH>[Ast(Op, Rule)] AndRule is Rule = "&"s Rule : 20; WH>[Ast(Rule, Op)] OptionalRule is Rule = Rule : 30 "?"s; WH>[Ast(Rule, Op)] ZeroOrManyRule is Rule = Rule : 30 "*"s; WH>[Ast(Rule, Op)] OneOrManyRule is Rule = Rule : 30 "+"s; WH>[Ast(Char)] CharRule is Rule = CharLiteral; WH>[Ast(String)] StringRule is Rule = StringLiteral; WH>[Ast(Open, Rule, Close)] RoundsRule is Rule = "("s Rule ")"s; WH>[Ast(Name, BP)] CallRule is Rule = QIdentifier (":"s Number)?; WH>[Ast(Open, Rule, Semicolon, Separator, Close, Op)] ZeroOrManyWithSeparatorRule is Rule = "("s Rule ";"s Rule ")"s "*"s; WH>[Ast(Open, Rule, Semicolon, Separator, Close, Op)] OneOrManyWithSeparatorRule is Rule = "("s Rule ";"s Rule ")"s "+"s; WH>[Ast(Name, Open, Rule, Close)] Scope is Rule = Identifier "{"s Rule "}"s; WH>[/code] WH>Она однозначна по построению. WH>Она понимает левую рекурсию, приоритеты и ассоциативность из коробки. WH>Она поддерживает n-арные операторы. ChoiceTokenRule и SequenceTokenRule. WH>Она поддерживает изменение грамматики во время разбора. Например, встретили "using syntax Xml;". Получили поддержку ХМЛ внутри C#. Область видимости закончилась синтаксис ХМЛ отключился. WH>Ну и нахрена после этого нужен БНФ со всеми заморочками? V>>Тут уже разбирали как-то, что народ путает целевой формальный язык и грамматику парсера для него. Языки программирования зачастую контекстно-зависимые, WH>Зачастую? Тебе придется очень постараться, чтобы найти КС язык программирования. (Они конечно есть. Я даже регулярные знаю.) Ибо если у нас есть требование объявить перед использованием то это сразу минимум КЗ. V>> но парсер будет работать скорее всего по неполной грамматике языка - по ее контекстно-свободной части, оставляя решение неоднозначностей семантическому анализатору. Насколько я помню, ты участвовал в том обсуждении, поэтому я хотел лишь напомнить, что ты и так должен был знать. Прочти теперь выделенную фразу еще раз - должно было полегчать. WH>Вот пойди и почитай, что я там говорил. WH>Оно сильно разойдется с тем, что ты мне тут пытаешься пришить.
Теги:
Введите теги разделенные пробелами. Обрамляйте в кавычки словосочетания с пробелами внутри, например:
"Visual Studio" .NET
Имя, пароль:
Загрузить
Нравится наш сайт?
Помогите его развитию!
Отключить смайлики
Получать ответы по e-mail
Проверить правописание
Параметры проверки …