Как изменить путь, по которому генерируется сгенерированный Java-файл Grammar-Kit?
Как изменить путь, по которому генерируется сгенерированный Java-файл JFlex lexer Grammar-Kit?
Я спросил о системе отслеживания проблем Грамматики, но ответа не получил.
Я устал от того, что лексер не будет помещен в мой каталог сгенерированных файлов (где я мог бы легко удалить его вместе со всеми другими сгенерированными мной файлами и исключить его из поисков, а также предупреждений IDE и тому подобного).
1 ответ
Я тоже устал от того, что лексер не будет помещен в каталог сгенерированных файлов, поэтому я просмотрел исходный код плагина, чтобы найти ответ.
Grammar-Kit использует свою собственную эвристику, чтобы решить, куда вставлять сгенерированный JFlex файл лексера, но эта эвристика явно ошибочна в обоих наших случаях.
Если вы хотите, чтобы ваш сгенерированный лексер помещался в сгенерированную папку, а Grammar-Kit этого не делает, это потому, что способ, которым разработан GK, ваш .flex
файл не может быть внутри исходного корня. Конечно,.flex
файл действительно является исходным файлом, но для целей GK его нельзя пометить таким образом - если вы не хотите, чтобы он правильно делал и помещал его сгенерированный .java
файл в назначенную вами сгенерированную папку [1].
Вместо этого переместите файл.flex из любых исходных папок в корень содержимого, который не помечен как исходный каталог. GK теперь должен вести себя в основном правильно [1]. Для его собственного исходного файла, .bnf
файл, он не ведет себя так странно; только с .flex
файл.
[1]: (на самом деле, в моем скимминге, я думаю, что это выглядело жестко, как если бы я специально входил в папку с именем 'gen', но я только быстро скиммировал, так что это может быть неточно. В любом случае, генерация в папку с именем 'gen' {имя, которое большинство людей выбирают для своей сгенерированной папки в любом случае} должно быть по крайней мере достаточным, так как ваш сгенерированный лексер Flex по крайней мере больше не будет смешиваться с вашими обычными исходными файлами.)