Как я могу изменить EBNF (bar | baz)*, чтобы обеспечить разделение между двумя барами?
У меня есть следующий EBNF, заявив, что foo
состоит из любого числа чередующихся bar
с и baz
s:
foo : (bar | baz)*
Как я могу изменить это, чтобы принудительно использовать разделитель между двумя последовательными bar
s? Например, если foo
мог содержать не более двух элементов, я мог бы использовать:
foo : <empty> | bar | baz | bar SEP bar | bar baz | baz bar | baz baz
В качестве альтернативы, что если в конце концов необходимы разделителиbar
это до конца? То есть эквивалентно:
foo : <empty> | bar | baz | bar SEP bar | bar SEP baz | baz bar | baz baz