Проблема, разрешающая конфликт на уровне регистра в моей грамматике

Я подключил LG G3 к Android Studio и получил USB device not found.

Я исправил эту проблему, выполнив следующие шаги:

  1. Включите опцию разработчика

  2. Там, проверьте USB debugging и Allow mock locations

  3. Перейдите в Tethering & Networks и включите USB-модем. Bluetooth не работает для меня.

  4. Наконец, запустите debug в Android Studio

6
задан Dave Clemmer 4 October 2011 в 02:20
поделиться

3 ответа

Ваша грамматика неоднозначна, если вы используете только один просмотр вперед. Чтобы проиллюстрировать, что такое «asd»? Это ExpressionTerm или более длительный срок. Это конфликт сокращения смены. Я подозреваю, что здесь тоже есть конфликт уменьшения-уменьшения.

Большинство генераторов LL (1) / LALR (1) предоставляют способ справиться с конфликтом «сдвиг-уменьшение» с помощью операторов приоритета. Большинство также по умолчанию будут использовать самую длинную последовательность при наличии конфликта сдвиг-уменьшение, поэтому чаще всего их можно игнорировать (после некоторой проверки). (В этом случае, возможно, вам нужно переместить единственный член в конец, чтобы он работал правильно).

3
ответ дан 17 December 2019 в 07:08
поделиться

Конфликт Shift-Уменьшить означает, что ваша грамматика неоднозначна. С вашим рекурсивным правилом токен «asd» можно интерпретировать как часть ExpressionTerm или LogicalExpression , и синтаксический анализатор не может решить, какой именно. Требуется дополнительное правило, чтобы разорвать ничью.

1
ответ дан 17 December 2019 в 07:08
поделиться

Конфликты сокращения сдвига - одна из тех вещей, которые сложнее понять, когда дело доходит до парсеров. Самый простой способ проиллюстрировать конфликт - использовать этот псевдокод:

if (a) then
   if (b) then
     printf('a + b');
   else
     print('this could be a + !b or !a');

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

В качестве альтернативы вы можете использовать синтаксический анализатор LL (k) или LL (*). Эти типы парсеров не имеют двусмысленности сдвига / уменьшения. В зависимости от вашего приложения они могут быть проще или сложнее, чем парсер LALR (1).

0
ответ дан 17 December 2019 в 07:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: