Нахождение Java Грамматики - PullRequest
       28

Нахождение Java Грамматики

2 голосов
/ 06 февраля 2020

Я пробиваюсь в Rascal - отличная работа!

Я на полпути через Tutor и, возможно, забегаю вперед, но один из моих интересов - рефакторинг Java. Я наблюдал за Карри Ти js ван дер Шторма В 2016 году выступление , где он представляет пример этого (модуль "TrafoFields" около 16-й минуты в видео).

Я был Стремясь заняться этим, я искал в документации грамматику Java и похожий пример, но безрезультатно. Более того, документация библиотеки содержит только lang::java m3 и jdt. Я перезагрузил видео Ti js 'и обнаружил, что он использует lang::java::\syntax::Java15. Я слепо пытался импортировать это в Repl, и это работало (хотя и с большим количеством предупреждений)! Я открыл файл Rascal .jar, чтобы найти еще больше в этом пакете.

Итак, мои вопросы в этом контексте:

  • Почему этого нет в документации? Я ожидал бы, что документация библиотеки является исчерпывающей. Не могли бы вы хотя бы добавить «TrafoFields» к рецептам?!
  • Есть ли альтернативный способ узнать о таких модулях, кроме онлайн-документации (кроме поиска в файле .jar)?
  • Что это за странная бэсла sh в имени модуля перед "синтаксисом", ::\syntax?

1 Ответ

2 голосов
/ 06 февраля 2020

Все хорошие вопросы; а также подразумеваемые предложения по улучшению. В то же время, если вы застряли, пожалуйста, задавайте больше вопросов.

Краткий ответ: мы расставили приоритеты в документировании того, что используется чаще всего и что используется на курсах в университетах, а затем о том, что мы получили вопросы. Так что спасибо за вопрос.

В обратном порядке:

  1. Backsla sh - это обобщенный c способ использования идентификаторов в Rascal, которые также являются ключевыми словами в языке. Таким образом, любая переменная, имя пакета или имя модуля могут быть названы «если», но вам придется их избегать. Это очень помогает при определении абстрактных синтаксических деревьев для языков программирования, так как вы можете представить, где «if» будет отличным именем для типа узла ast. «Синтаксис» также является ключевым словом в Rascal.
  2. Представление Rascal Explorer в Eclipse можно использовать для интерактивного просмотра библиотеки. Также вы можете сканировать библиотеку с помощью util :: FileSystem и получить представление первого класса обо всем, что находится в библиотеке, например |std:///|. Согласитесь, это решения плохого человека, и хорошей особенностью будет полностью проиндексированная библиотека с возможностью поиска. Мы на полпути (см. Предварительную работу analysis::text:: Lucene, которую мы проделали, чтобы поддержать это.
  3. Это риторический вопрос, который я принимаю как предложение по улучшению ?? ответ - да.
...