代码之家  ›  专栏  ›  技术社区  ›  anquegi

访问Smalltalk中的消息文档

  •  2
  • anquegi  · 技术社区  · 6 年前

    在Smalltalk中定义类时,可以访问文档注释,如下所示:

    st> Integer comment
    'I am the abstract integer class of the GNU Smalltalk system.  My
    subclasses'' instances can represent signed integers of various
    sizes (a subclass is picked according to the size), with varying
    efficiency.'
    

    但也许,我是新来的Smalltalk,但我找不到如何访问方法/消息文档。即

    1 回复  |  直到 6 年前
        1
  •  3
  •   Leandro Caniglia Charlie    6 年前

    让我们考虑一下下面的方法

    SomeClass >> #msg: arg
      "This is a comment"
      ^self doThisTo: arg
    

    很容易实现用于提取注释的服务,例如:

    commentOf: aCompiledMethod
      ^method sourceCode readStream upTo: $"; upTo: $"
    

    'This is a comment' . 但是,问题是双引号字符并不总是注释分隔符。例如,考虑以下方法

    String >> #doubleQuoted
      ^'"', self , '"'
    

    如果我们试着用我们的方法 #commentOf: 对于从这个方法中提取注释,我们将得到

    ' , self, '
    

    这意味着我们的解析应该不那么幼稚。因此,我们应该扪心自问的问题是,使用我们环境中的Smalltalk解析器是否更好。我不知道如何在gnu smalltalk中实现这一点,所以让我在这里展示(作为一个例子)我们如何在Pharo中继续:

    aCompiledMethod ast comments
    

    这个 #ast 消息答复 方法,也称为 ,它公开了方法源代码的语法结构。特别是,它会检测到以下形式的所有注释 CommentNode #comments 方法只是在收集注释时枚举所有解析节点。

    推荐文章