Что означает контекст под контекстно-свободной и контекстно-зависимой грамматикой? - PullRequest
0 голосов
/ 23 февраля 2019

Если у меня есть что-то вроде var string = "var";, то после первой двойной кавычки правила меняются, и var не означает то же самое, что и в начале текста.После второй двойной кавычки все возвращается на круги своя.Как это не учитывается в контексте?

(Пожалуйста, не используйте эти стрелки в своем ответе, попробуйте вместо естественного языка!)

1 Ответ

0 голосов
/ 23 февраля 2019

Направление стрелки важно, поэтому, если я не могу об этом говорить, это будет трудно объяснить.Итак, извините, я собираюсь использовать стрелки.Они действительно не сложны.

Выражение A -> ... означает «A есть ...». не означает "... является A".Отсутствие контекста означает, что если A может быть «...» в некотором контексте, то оно может быть «...» в любом контексте.Но стрелка всегда указывает от категории к конкретной;никогда не назад.

В вашем примере, identifier - это буква, за которой следует ряд буквенно-цифровых символов:

 identifier -> letter (letter OR digit)...

Так что identifier может быть var ,Это не означает, что var всегда является identifier, как показывает ваш пример.Стрелка указывает в одном направлении.

Поскольку грамматика не зависит от контекста, если в каком-то контексте мы ищем identifier и мы принимаем var как identifier,тогда в любом другом контексте, где мы ищем identifier, мы также должны принять var .

Но есть контексты (между кавычками), где мы не ищем identifier.Все в порядке;условие без контекста не нарушено.Контекст применяется в направлении стрелки.

...