首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >可执行规范..?如何使用可执行的规范快速原型?

可执行规范..?如何使用可执行的规范快速原型?
EN

Stack Overflow用户
提问于 2013-05-12 00:50:19
回答 1查看 474关注 0票数 1

看完这些书后

Bertrand,编程语言理论导论& J.D. Ullman,ML编程的元素

我也读过一些报纸,也试图在谷歌上找到,但我仍然不明白这个概念。作为快速原型的功能语言中的可执行语言语义规范

我有一些问题..。我不明白某些行的意思,我也有一些问题。这意味着什么?什么是“可执行规范”?

(1) SML中的可执行语言语义规范作为语言实现的快速原型。

(2)可执行规范如何用于快速成型

(3)推理语义在可用的体系结构/机器上为命令式编程语言的实现提供了“预言”。

EN

回答 1

Stack Overflow用户

发布于 2013-05-14 04:24:26

我真的只是猜测,因为我还没有读过您正在讨论的书,但我怀疑这是指将某些语言的语义编码为一组SML函数的实践。这为在可执行设置中处理语言的语义提供了一种快速简便的方法,而不必实现所有混乱的前端和后端编译器或解释器工件。例如:

代码语言:javascript
复制
datatype value = Int of int
               | String of string

datatype ast = Seq of ast * ast
             | Print of ast
             | Value of value
             | Assign of string * ast
             | Variable of string

fun value_printer (Int i) = print (Int.toString i)
  | value_printer (String s) = print s

fun execute env (Seq (a, b)) = (execute env a; execute env b)
  | execute env (Print a) = value_printer (execute env a)
  | execute env (Value _) = ()
  | execute env (Assign (s, a)) = ...
    etc, etc.

基本上,您定义了用来表示抽象语法树的数据类型,然后定义了一个在此AST上执行重写的函数(或者将AST子树简化为表示您语言中值的一些value数据类型)。

如果execute函数看起来有点熟悉,那是因为它类似于教科书中可能看到的更传统的语义定义,只是有一些有趣的语法。

您可以想象,我们可以在此环境中进行构建类型检查器、静态分析或优化的实验,而不必离开我们的“快速原型”环境(碰巧是SML)。SML非常适合于这类任务,这就是为什么您所读的书都提到了这种方法。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16503132

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档