Почему парсить C++ трудно
Oct. 29th, 2015 04:38 amИзвестно, что компилятору языка C++ работать существенно сложнее, чем, скажем, компилятору Java, потому что его парсеру часто приходится „заглядывать вперед“. Давайте разберемся, как это.
Вот фрагмент из Михаила Щербакова:
«[Балаган] летит и в холод, и в жару, и в гром, и в тишину.»
Разбираем. Глагол «летит». Дальше: винительный падеж, винительный падеж, винительный падеж, винительный падеж. Стоп, стоп. «В тишину» – не подходит ведь по семантике. Должно было быть «летит в тишине». А если «летит в тишину», то это ответ на вопрос «куда?». Значит все до этого – это было перечисление того, куда летит Балаган? Ему предстоят холод, жара, гром и тишина? Вот облом, теперь, значит, придется забывать все накопленные впечатления от строки и начинать разбор с начала.
Примерно так. Человеку эта игра слов может показаться забавной, ну а компилятору – нет.
no subject
Date: 2015-10-29 03:29 am (UTC)Если бы автор намекал на возможное окончание "в тишине", то было бы "в холоде", "в жаре", "в громе".
no subject
Date: 2015-10-29 07:54 am (UTC)no subject
Date: 2015-10-29 11:48 am (UTC)no subject
Date: 2015-10-29 01:43 pm (UTC)no subject
Date: 2015-10-30 07:06 am (UTC)велик и могуч
no subject
Date: 2015-11-02 04:08 am (UTC)no subject
Date: 2015-11-02 04:09 am (UTC)no subject
Date: 2015-11-02 04:11 am (UTC)no subject
Date: 2015-11-02 04:16 am (UTC)no subject
Date: 2015-11-02 08:47 am (UTC)И в году 52 недели, но что с того.
no subject
Date: 2015-11-02 09:15 am (UTC)no subject
Date: 2015-11-02 11:27 am (UTC)Смотрите, грамматически форма "в тишину" возможна - но исключительно редко встречается, так редко, что только на Щербакова и можно сослаться. Но можно! И это становится проблемой словаря, если б он учитывал форму окончание -у для ответа на вопрос "когда?", то компилятор съел бы и не подавился.
no subject
Date: 2015-11-02 09:34 pm (UTC)2) в холод/жару/гром - это при каких обст-вах, во время какой обстановки вокруг. Почему это нормативные словоупотребления, а "в тишину" - нет, не знаю, но могу высказать гипоте(ну)зу. Нормативное употребление этой конструкции - это когда обозначаемое обстоятельство хоть как-то нештатно. В войну, в эпидемию холеры, в дождь, в засуху. В мир вот нет почему-то. С уточнениями есть: в мирное время, в хорошую погоду.
no subject
Date: 2015-11-02 09:37 pm (UTC)no subject
Date: 2015-11-02 09:38 pm (UTC)no subject
Date: 2015-11-02 09:40 pm (UTC)no subject
Date: 2015-11-02 09:43 pm (UTC)