https://blog.reverberate.org/2013/08/parsing-c-is-literally-undecidable.html
как связаны шаблоны и грамматика?
из-за неоднозначности a * b;, которая тянется ещё с сишки
эта неоднозначность не на уровне грамматики
просто в крестах ещё усугубляется шаблонами
А как выглядит грамматика С++?
На уровне грамматики нет типов и умножений
а что есть?
ну вот на уровне грамматики есть правила для различных конструкций, которые выдают различные деревья разбора для объявления поинтера и для умножения разные правила, если что и тут без знания что такое a нельзя выбрать корректное правило, а в C++ попытка узнать что такое a может привести к резолву шаблонов, которое тьюринг полное
КС-грамматика -- это всего лишь грамматика, где в левой части всех правил единственный нетерминал. Все правила "синтаксической грамматики" Си++ именно таковы. Хотя не все правила Си++ описываются КС-грамматикой. Но это уже несколько другое и даже в более простых языках дело обстоит так же.
Это не контекстная зависимость, а неоднозначность грамматики
Есть правильные последовательности символов и неправильные.
А контекстно-зависимые ключевые слова вписываются в принципы КС-грамматики?
ну вот тут сообщением выше про нетерминалы какие-то говорилось
Жжёте! В чате про компиляторы удивляться нетерминалам...
Язык a^n b^n c^n можно тоже приблизить контекстно-свободной (даже регулярной!) грамматикой, и затем считать символы отдельным проходом.
давай иначе, парсинг крестов зависит от контекста?
Спасибо за замечание, раньше не задумывался. А есть примеры яп с контекстно-зависимыми грамматиками?
Проведи аналогию с С++.
я скорее удивляюсь правильным и неправильным последовательностям символов, потому что грамматики всё таки не только (и не столько про это)
Грамматики Хомского исключительно и только про это.
Я подумал и пришел к выводу что да Весь КС-грамматика это про независимость нетерминалов, а не терминалов
Константин Владимиров ровно про это говорил на C++Russia
Обсуждают сегодня