Грамматика Dart2 не распознает литералы коллекции

#parsing #antlr4 #grammar #literals #dart-2

#синтаксический анализ #antlr4 #грамматика #литералы #dart-2

Вопрос:

я использую грамматику из https://github.com/antlr/grammars-v4/blob/master/dart2/Dart2.g4 , и пытается распознать литералы коллекции, это пример образца в https://dart.dev/#try-dart , но грамматика не распознает «var», и в этом случае литералы, такие как наборы dict и даже списки, возможно, не распознаются в antlr4, потому что это не определено для этого, но хотел бы получить помощь в поиске причины проблемы, возможно, я делаю что-то не так….

Комментарии:

1. Вы не предоставляете свой ввод. Для аргументации я предположу, что это образец кода в dart.dev/samples#variables . Из грамматики объявления переменных ‘var’ должны быть block , например, в теле функции. Когда я копирую и вставляю пример в онлайн «Попробуйте Dart в вашем браузере», он выдает ошибку. Если этот фрагмент скопирован в блок «Hello world», он работает нормально, и Antlr анализирует его. Другими словами, это неполные примеры.

2. Да, если вы попробуете dart.dev/#try-dart , перейдите к литералам коллекции, скопируйте пример и попробуйте его разобрать, он не распознает var как списки, наборы и словари, но если вы попробуете const вместо var, это сработает, поэтому я предполагаю, что грамматика неполная, новы можете попробовать и высказать мне свое мнение.

3. Да, грамматика не анализирует несколько примеров. Текущая спецификация 2.2 29 июля 2019 года. Грамматика Dart2.g4 датирована апрелем 2019 года (фактически 21 мая). Я не могу найти .pdf-файлы для предыдущей версии спецификации языка в репозитории github, но не проверял репозиторий, обратный путь или восстановление более старой версии из Tex. Грамматика .g4 не имеет номера версии, поэтому кто знает, какую версию она пытается поддерживать. У него должна быть версия, дата, местоположение спецификации. Неаккуратно.

4. Спасибо за помощь, я постараюсь добавить новые функции, чтобы он мог анализировать новые вещи, такие как литералы, о которых я упоминал выше, и, возможно, объединить со старой грамматикой, чтобы улучшить ее

5. Я выполняю магистерскую диссертацию в этой области и использую Dart2 в качестве основного языка для синтаксического анализа, поэтому мне нужна наилучшая возможная грамматика, чтобы я мог оценить некоторые программы dart2 и протестировать их в грамматике, поэтому мне нужно охватить все возможные случаи