Как мы знаем, DFA можно использовать для проверки строк на обычном языке.
Пример 1. L=ac(b)*bcb|ad(b)*bb. Строка «acbbbbcb» может быть проверена DFA как правильная.
Кроме того, иногда обычный язык может быть выражен с помощью CFG.
Пример 2.
- S -> "a" A "b"
- A -> "c" B "c" | "d" B
- B -> "b" B | "b"
Язык, сгенерированный приведенной выше CFG, является просто регулярным выражением в примере 1.
Это означает, что мы можем использовать DFA для проверки (обычных) строк, сгенерированных этой CFG. Однако как мы могли бы сгенерировать соответствующее дерево синтаксического анализа?