EBNF используется для описания синтаксиса . Цикл, являющийся бесконечным или иным образом, обычно не попадает в рамки того, что он описывает. Таким образом, вы будете искать в EBNF неопределенный цикл, который выглядит примерно так:
indefinite_loop ::= 'BEGIN' statements cond 'UNTIL'
Обычно cond
- это то, что помещает 0 или 1 в стек, чтобы определить, продолжать ли цикл (0
означает продолжение цикла, 1
означает выход). Таким образом, если вы просто вставите 0
напрямую, цикл будет выполняться вечно:
: infinite_loop BEGIN do_whatever 0 UNTIL ;