对于无限循环或if语句的第四语言EBNF规则

时间:2011-05-19 02:06:44

标签: ebnf forth

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

2 个答案:

答案 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 ;