Нет, это невозможно с контекстно-свободной грамматикой.
По сути, это означает, что "контекстно-свободный" означает. Каждый нетерминал в производстве может быть расширен независимо от контекста, в котором он появляется.
Конечно, если i
действительно имеет только три возможных значения, вы можете перечислить конечное число легальных произведенийВ соответствии с любым определением «правовой», которое вы считаете удобным. Но это становится очень запутанным, когда количество возможностей увеличивается.
Наиболее удобным решением, как правило, является принятие базового синтаксиса и проверка на соответствие (или различие) в связанном семантическом правиле. Это также учитывает лучшие сообщения об ошибках.