Compilation 自定义控件流编译单词示例

Compilation 自定义控件流编译单词示例,compilation,control-flow,forth,gforth,immediate-mode,Compilation,Control Flow,Forth,Gforth,Immediate Mode,Forth允许用户通过为控制流定义新词(超出标准给出的词:DO、LOOP、BEGIN、UNTIL、WHILE、REPEAT、LEAVE IF、THEN、ELSE、CASE、ENDCASE等)来更改语言 有没有常见的例子表明人们实际上创建了自己的新控制流单词?有哪些典型和有用的例子?或者标准已经定义了人们真正需要的一切 我希望能找到一些有用的语言扩展的例子,这些扩展已经被人们接受,或者被证明通常有助于提高语言的表达能力。这里有一个例子大小写是对设置控制流字的一个延迟添加。1980年初,在第四维度中

Forth允许用户通过为控制流定义新词(超出标准给出的词:DO、LOOP、BEGIN、UNTIL、WHILE、REPEAT、LEAVE IF、THEN、ELSE、CASE、ENDCASE等)来更改语言

有没有常见的例子表明人们实际上创建了自己的新控制流单词?有哪些典型和有用的例子?或者标准已经定义了人们真正需要的一切


我希望能找到一些有用的语言扩展的例子,这些扩展已经被人们接受,或者被证明通常有助于提高语言的表达能力。

这里有一个例子<代码>大小写是对设置控制流字的一个延迟添加。1980年初,在第四维度中宣布了定义最佳案例陈述的竞赛。那一年的晚些时候,三个参赛者之间达成了平局。其中一个最终进入Forth94标准。

第四个控制流结构的另一个大方向是回溯。这是一个非常有表现力和强大的机制。要实现它,需要对返回地址进行操作[Gas99]

福思的回溯是M.L.Gassananko在1988-1990年间开发的巴福思延伸。关于这个主题的第一篇论文是俄语

回溯技术使我们能够创建抽象迭代器 和过滤器模块,负责检查所有可能的 价值观和拒绝“不适当的”价值观[Gas96b]

有关一些介绍,请参见简短描述:,comp.lang.forth中的讨论也很有用(请参见来自Gassanenko的消息)

BacFORTH中发电机的一个示例:

: (0-2)=> PRO 3 0 DO I CONT LOOP ; \ generator
: test  (0-2)=>  CR . ." : " (0-2)=>  .  ;
test CR
输出:

0 : 0 1 2
1 : 0 1 2
2 : 0 1 2
PRO
CONT
是特殊的控制流字
PRO
指定生成器字,
CONT
调用消费者-在Ruby或ECMAScript中类似于
yield
。BacFORTH中还定义了许多其他特殊词语。 您可以在SP Forth中使用BacFORTH(只需包括
~profit/lib/bac4th.f
库)

词源学 一般来说,它只是一个寻找解决方案的算法。在Prolog中,该算法是嵌入在引擎盖下的,其工作过程也是如此。BacFORTH中的回溯是由一组特殊的控制流字支持的编程技术

工具书类
  • [Gas96a]M.L.Gassanenko,1996()
  • [Gas96b]M.L.Gassanenko,1996()
  • [Gas99]M.L.Gassanenko,1999年

据我所知,捕获和投掷在成为标准之前也作为用户定义的控制结构存在。谢谢。这让人大开眼界。你知道连续化、协程和有限状态机是否也很容易实现吗?你能详细说明一下回溯是什么(为将来的读者)吗?@PeterMortensen我添加了一些信息和链接,请让我知道更多的细节是否适合这里。