Как мне лучше понять, как SmaCC использует функцию isMethod в регулярных выражениях?

Мне непонятна поддержка isMethod в регулярных выражениях SmaCC.

Эти два источника по сути говорят об одном и том же

      <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, если я их определю?)
  • Могу ли я лучше понять это?

Спасибо за ваше время

2 ответа

Решение

По общему признанию, комментарий мог бы быть немного яснее, но, начиная с его примера - #isDigit- на изображении только один реализатор:. Таким образом, вероятное значение состоит в том, что вы можете поместить любое сообщение, которое понимает, в скобки.

Чтобы ответить на ваши конкретные вопросы:

  • Вы не можете использовать #isWhitespace потому что такого сообщения нет, но #isSeparator кажется, делает это

  • Вы узнаете доступные имена, исследуя, например, в браузере.

  • Да, вы можете использовать свои собственные токены, реализовав их в Character (или его суперклассы)

  • Как предположил @Stephan Eggermont, Discord от GT - хорошее место, чтобы спросить. Pharo ML и Discord, как правило, полезны, и на подобный вопрос, вероятно, будет легко ответить там, но чем глубже вы погрузитесь в Smacc, вы найдете меньше экспертов, и сообщество GT в настоящее время активно использует Smacc.

GToolkit Discord - лучшее место для этого вопроса, так как один из авторов оригинала там тусуется.

Другие вопросы по тегам