簡體   English   中英

訪問Smalltalk中的消息文檔

[英]Access message documentation in Smalltalk

在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的新手,但是我找不到如何訪問方法/消息文檔的方法。

讓我們考慮以下方法

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 Parser是否更好? 我不知道如何在gnu-smalltalk中執行此操作,因此讓我在這里展示(作為示例)如何在Pharo中進行操作:

aCompiledMethod ast comments

#ast消息用該方法的抽象語法樹 (也稱為解析樹)回答,該暴露了該方法的源代碼的語法結構。 特別是,它以CommentNode對象的形式檢測所有注釋,這就是#comments方法僅在於枚舉所有注釋節點同時收集注釋的原因。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM