Реферат: Разработка системного программного обеспечения
Основная идея метода состоит в том, что по контексту без возврата отбрасываюся те символы, которые привели в тупиковую ситуацию и разбор продолжается.
Для наглядности изобразим куст синтаксического разбора для входного языка:
Дано:
IF ( A < Bc ) BULL () ;
1. Z - abAcC [ eC ]
2. A - B | B < B | B > B | B = B
3. B - F | f
4. C - FbDcd
5. D - E | h
6. E - F | f | h
7. F - g { g | f }
Z
![]() | ![]() | ![]() |
a b A c C
![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() |
B B F b c d
![]() | ![]() | ![]() | ![]() | ![]() | ![]() |
F F g { g }
![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() |
g g {g} g g g g
IF ( A < Bc ) BULL ( ) ;
Тестирование на цепочках
Протестируем данную программу на следующей языковой цепочке:
IF ( A < B ) BULL ( );
< Оператор >
![]() | ![]() | ![]() |
a b < УслВыражение > c < Функция >
![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() |
< Терм > < Терм > < Идент > b c d
![]() | ![]() | ![]() | ![]() | ![]() | ![]() |
< Идент > < Идент > g { g }
![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() |
g g {g} g g g g
IF ( A < B ) BULL ( ) ;
1. Проверка на нетерминальный символ IF
2. Проверка на терминальный символ « ( »