Направление стрелки важно, поэтому, если я не могу об этом говорить, это будет трудно объяснить.Итак, извините, я собираюсь использовать стрелки.Они действительно не сложны.
Выражение A -> ...
означает «A
есть ...
». не означает "...
является A
".Отсутствие контекста означает, что если A
может быть «...» в некотором контексте, то оно может быть «...» в любом контексте.Но стрелка всегда указывает от категории к конкретной;никогда не назад.
В вашем примере, identifier
- это буква, за которой следует ряд буквенно-цифровых символов:
identifier -> letter (letter OR digit)...
Так что identifier
может быть var ,Это не означает, что var всегда является identifier
, как показывает ваш пример.Стрелка указывает в одном направлении.
Поскольку грамматика не зависит от контекста, если в каком-то контексте мы ищем identifier
и мы принимаем var как identifier
,тогда в любом другом контексте, где мы ищем identifier
, мы также должны принять var .
Но есть контексты (между кавычками), где мы не ищем identifier
.Все в порядке;условие без контекста не нарушено.Контекст применяется в направлении стрелки.