是否有EBNF规则描述了Forth无限循环或if语句?
答案 0 :(得分:4)
EBNF用于描述语法。循环无限或通常不会落入其描述的范围内。因此,您将看到EBNF的无限循环,看起来像:
indefinite_loop ::= 'BEGIN' statements cond 'UNTIL'
通常cond
将推送堆栈上的0或1以确定是否继续循环(0
表示继续循环,1
表示退出)。因此,如果您只是直接插入0
,循环将永久执行:
: infinite_loop BEGIN do_whatever 0 UNTIL ;
答案 1 :(得分:1)
您也可以使用:
infinite_loop ::= 'BEGIN' statements 'AGAIN'
AGAIN
字用于执行无条件分支回BEGIN
。例如:
: main-loop BEGIN listen-for-event process-event AGAIN ;