3

是否有描述 Forth 无限循环或 if 语句的EBNF规则?

4

2 回答 2

4

EBNF 用于描述语法。一个无限循环或其他循环通常不会落在它所描述的范围内。因此,您将看到 EBNF 的无限循环,它看起来像:

indefinite_loop ::= 'BEGIN' statements cond 'UNTIL'

通常,cond将在堆栈上压入 0 或 1 以确定是否继续循环(0表示继续循环,1表示退出)。因此,如果您直接插入 a 0,循环将永远执行:

: infinite_loop BEGIN do_whatever 0 UNTIL ;
于 2011-05-19T03:30:22.880 回答
1

您还可以使用:

infinite_loop ::= 'BEGIN' statements 'AGAIN'

该词AGAIN用于执行无条件分支回到BEGIN. 例如:

: main-loop BEGIN listen-for-event process-event AGAIN ;
于 2015-10-01T18:10:00.507 回答