3

我不清楚 SmaCC 正则表达式中的“isMethod”支持。

这两个消息来源本质上说的是同一件事

<isMethod>  Copies the characters where Character>>isMethod returns true into 
the current regular expression. For example, instead of using \d, we could use 
<isDigit> since Character>>isDigit returns true for digits. 

没什么好说的,所以我有几个问题:

  • 这是否意味着我可以使用 isWhitespace、isNotWhitespace 等?(我怎么知道名字?)
  • 这是否意味着我可以使用自己的代币?(如果我定义了这些,比如 isVariable、isMultiLineComment?)
  • 有什么好地方可以让我更好地理解这一点吗?

谢谢你的时间

4

2 回答 2

1

GToolkit Discord 是解决这个问题的更好地方,因为其中一位原作者在那里闲逛

于 2021-03-23T17:14:58.010 回答
1

诚然,评论可能会更清晰一些,但从它的示例开始 -#isDigit图像中只有一个实现者:Character. 因此,可能的含义是您可以将任何可以Character理解的消息放在括号之间。

要回答您的具体问题:

  • 你不能使用#isWhitespace,因为没有这样的消息,但#isSeparator似乎这样做

  • Character您可以通过在浏览器中探索来了解可用的名称。

  • Character是的,您可以通过在(或其超类)中实现它们来使用自己的令牌

  • 正如@Stephan Eggermont 所建议的那样,GT 的 Discord 是一个询问的好地方。Pharo ML 和 Discord 通常很有帮助,这样的问题很可能在那里很容易得到回答,但是当您深入研究 Smacc 时,您会发现专家越来越少,而 GT 社区目前大量使用 Smacc。

于 2021-03-25T02:18:34.493 回答