Я понимаю, что ANTLR может принимать грамматику LL (*). Но есть ли способ проверить грамматику, является ли она LL (1) или не используется ANTLR?Проверка грамматики LL (1) с ANTLR
ответ
options {
k = 1;
}
Это даст предупреждение, если ваш грамматист не находится в LL (1).
Для того, чтобы грамматический/язык был LL (1), мы знаем, что в любой заданной позиции на входе есть только одно произведение, которое мы можем взять, чтобы использовать токен (ы) ввода. Итак, чтобы определить, является ли грамматика LL (1), нам необходимо:
1) проверьте FIRST множество всех нетерминалов и, если есть какие-то дубликаты среди одного нетерминала, то грамматика не LL (1).
EX: S-> aba | abc (какое производство мы используем, если нам дается вход «a», мы не можем определить, и вам нужно заглянуть в следующий токен ввода, и на самом деле нам нужно заглянуть на третье, чтобы определить (так это требует LL (3).
2) Так как мы знаем, какие нетерминальные мы находим материал, мы не должны рассматривать первый набор других нетерминалах.
EX. S-> аба
T -> acc
ИНТЕКЦИЯ FIRST (s) с FIRST (T) = {a}, но поскольку мы знаем, что мы производим либо для S, либо для T (только по одному), нам не нужно беспокоиться о множественные нетерминалы, имеющие непустые пересекающиеся множества.
3) Наконец, будьте осторожны, когда грамматика переходит к пустой строке (S-> ε). В этом случае набор FOLLOW должен быть объединен с FIRST, чтобы убедиться, что их пересечение пуст.
EX. S-> aba | bSa | ε
T-> cdd
Здесь, если мы получим вход «ba ...», мы будем использовать производственную S-> bSa, но тогда мы увидим «а» в нашем потоке ввода и не будем знать следует ли производить S-> aba (если вход был b [aba] a) или для получения S-> ε (если вход был b [ε] a)
- 1. Поиск грамматики LL (1)?
- 2. LL (1) интерпретация грамматики
- 3. Преобразование грамматики для LL (1)
- 4. Алгоритм проверки грамматики в отношении другой грамматики в ll (1)
- 5. Проблемы с преобразованием грамматики LL (1)
- 6. LL (1) оператор грамматики и индексирования []
- 7. Преобразование C-грамматики в LL (1)
- 8. Правильный LL (1) грамматики для арифметических выражений
- 9. ANTLR - Семантический предикат и LL (1)
- 10. Ошибка грамматики ANTLR
- 11. LL (1) компиляторы с табличным управлением с ANTLR или ANTLR3
- 12. Преобразование грамматики в LL (1), определить, является ли это LL (1)
- 13. ANTLR грамматики неясность
- 14. Antlr по основываются-LL (*) механизм синтаксического анализа
- 15. Проблемы с Antlr грамматики (лексической)
- 16. Неожиданное поведение грамматики ANTLR
- 17. ANTLR версия2 синтаксис грамматики?
- 18. Ошибка связывания грамматики ANTLR
- 19. Weird ANTLR правило грамматики
- 20. Убедитесь, что грамматика LL (1)
- 21. Преобразование заданной двусмысленной арифметической грамматики выражения в однозначную LL (1)
- 22. Преобразование грамматики в LL (1) грамматикой: некоторые проблемы
- 23. Grammar помощь [Antlr не LL (*)]
- 24. LL (1): несимметричные грамматики и конфликты First/Follow
- 25. Как преобразовать грамматику в форму грамматики LL (1)?
- 26. Миграция ANTLR v3 грамматики в ANTLR v4
- 27. Проблема, создающая грамматику LL (1)
- 28. Проблемы с грамматикой LL (1)
- 29. Написание правильных грамматик LL (1)?
- 30. ANTLR грамматики для цикла While
Спасибо. Это намного проще, чем я думал. – herry
Это, похоже, не работает для ANTLR4? –