我不清楚SmaCC正则表达式中对'isMethod'的支持。
这两个来源的意思是一样的
- https://files.pharo.org/books-pdfs/booklet-Smacc/2017-10-29-Smacc.pdf
- http://www.refactoryworkers.com/SmaCC/Scanner.html
<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如果我定义这些?)
- 是否有一些好的地方让我更好地理解这一点?
感谢您的宝贵时间
注释应该更清楚一些,但是从它的示例#isDigit
开始,图像中只有一个实施者:Character
。因此,可能的意思是,您可以将Character
理解的任何消息放入括号中。
回答您的具体问题:
-
你不能使用
#isWhitespace
,因为没有这样的消息,但#isSeparator
似乎做到了 -
您可以通过探索
Character
来学习可用的名称,例如在浏览器中。 -
是的,您可以通过在
Character
(或其超类)中实现它们来使用自己的令牌 -
正如@Stephan Eggermont所建议的,GT的Discord是一个很好的提问场所。Pharo ml和Discord通常是有帮助的,像这样的问题可能很容易在那里得到回答,但是当你深入了解Smacc时,你会发现专家很少,而GT社区目前大量使用Smacc。
GToolkit Discord是回答这个问题的更好的地方,因为其中一位原作者在那里留言