Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Smalltalk 以编程方式获取方法内对象的执行顺序?_Smalltalk_Pharo_Squeak - Fatal编程技术网

Smalltalk 以编程方式获取方法内对象的执行顺序?

Smalltalk 以编程方式获取方法内对象的执行顺序?,smalltalk,pharo,squeak,Smalltalk,Pharo,Squeak,我有这段代码(取自ProfStef,但可以是任何类的任何方法)。如何以编程方式获取Squeak/Pharo执行对象的顺序 我知道smalltalk文档中的执行顺序,但如果我在构建应用程序时需要这些信息,该怎么办。本质上,使用它来构建一个执行映射,以显示代码外观和执行方式之间的差异 另外,我需要大规模地完成这项工作。。。我不能用手做这件事 tutorial: aTutorialClass lesson: aSelector | tutorial | tutorial := aT

我有这段代码(取自ProfStef,但可以是任何类的任何方法)。如何以编程方式获取Squeak/Pharo执行对象的顺序

我知道smalltalk文档中的执行顺序,但如果我在构建应用程序时需要这些信息,该怎么办。本质上,使用它来构建一个执行映射,以显示代码外观和执行方式之间的差异

另外,我需要大规模地完成这项工作。。。我不能用手做这件事

tutorial: aTutorialClass lesson: aSelector 
    | tutorial | 
    tutorial := aTutorialClass new. 
    self player tutorial: tutorial. 
    self tutorial: aTutorialClass lessonAt: (tutorial indexOfLesson: aSelector).
输出将是一个类似于此的树

有些事

另一个物体[做这件事的东西]

finalobject[另一个对象[某件事可以这样做]。//这就是原始代码的样子。

请查看我们的示例,它将为您提供对Smalltalk代码执行的细粒度控制


使用底层AST作为执行格式,很容易将当前执行的代码映射回源代码。

Pharo和其他几种方言中有一个字节码解释器。在Pharo中,请查看ContextPart类>>跟踪:on:。下面是一个要运行的示例:

ContextPart trace: [3 factorial]

看来你是对的,它似乎有所有需要的课程。根据我在编译时读到的内容,它是“哑”的,您可以使用它生成执行树,例如代码。如果你有时间的话,从你网站的联系人名单上给你发了一封电子邮件来延长讨论。哇,当你添加这个答案时,我从来没有看到过这个答案。刚刚测试过,很有意思。我尝试了ContextPart跟踪:[Transcript open],它显示了为完成该任务而执行的操作。