如何更好地理解 SmaCC 如何在正则表达式中使用'isMethod'功能?



我不清楚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是回答这个问题的更好的地方,因为其中一位原作者在那里留言

相关内容

  • 没有找到相关文章

最新更新