Skip to content

Latest commit

 

History

History
47 lines (40 loc) · 3.24 KB

README.md

File metadata and controls

47 lines (40 loc) · 3.24 KB

LR-1

Программная реализация LR(1) - разбора

Первоначальная грамматика языка

<A> - аксиома
<A>::= <B>|<D>
<B>::= <B><C><C>|a      
<C>::= ba      
<D>::= <C>a<D>|b 

Преобразованная грамматика под LR(1)

  1. A::=1B2
  2. A::= 1D3
  3. B::= 1a4Z5
  4. Z::= 4,9b6a7b8a9Z10
  5. Z::= 4,9Λ4,9
  6. D::= 1,14b11X12
  7. X::= 11a13a14D15
  8. X::= 11Λ11

Λ - означает пустую строку

Правило "С" было удаленно, так как содержало только терминальные символы. Поэтому везде где был вызов "С", были поставленны терминальные символы.

Рекомендуется сначала ознакомится с LL(1) интерпертацией данной грамматики здесь

Таблица

A B Z C D X a b $
1 ДОПУСК Shift 2 ошибка ошибка Shift 3 ошибка Shift 4 Shift 11 ошибка
2 ошибка ошибка ошибка ошибка ошибка ошибка ошибка ошибка Reduction 1
3 ошибка ошибка ошибка ошибка ошибка ошибка ошибка ошибка Reduction 2
4 ошибка ошибка Shift 5 ошибка ошибка ошибка ошибка Shift 6 Reduction 5
5 ошибка ошибка ошибка ошибка ошибка ошибка ошибка ошибка Reduction 3
6 ошибка ошибка ошибка ошибка ошибка ошибка Shift 7 ошибка ошибка
7 ошибка ошибка ошибка ошибка ошибка ошибка ошибка Shift 8 ошибка
8 ошибка ошибка ошибка ошибка ошибка ошибка Shift 9 ошибка ошибка
9 ошибка ошибка Shift 10 ошибка ошибка ошибка ошибка Shift 6 Reduction 5
10 ошибка ошибка ошибка ошибка ошибка ошибка ошибка ошибка Reduction 4
11 ошибка ошибка ошибка ошибка ошибка Shift 12 Shift 13 ошибка Reduction 8
12 ошибка ошибка ошибка ошибка ошибка ошибка ошибка ошибка Reduction 6
13 ошибка ошибка ошибка ошибка ошибка ошибка Shift 14 ошибка ошибка
14 ошибка ошибка ошибка ошибка Shift 15 ошибка ошибка Shift 11 ошибка
15 ошибка ошибка ошибка ошибка ошибка ошибка ошибка ошибка Reduction 7