Изменения

Перейти к: навигация, поиск

Формальные грамматики

792 байта добавлено, 04:08, 10 ноября 2011
Исправил пример - арифметические выражения
===Арифметические выражения===
<tex>\Sigma = \{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, +, *, /, -, (, )\}</tex># <tex>S \rightarrow S O S</tex> - два выражения, соединенные действием# <tex>S \rightarrow (S) </tex> - выражение, взятое в скобки# <tex>S \rightarrow 0</tex> - ноль# <tex>S \rightarrow DN</tex> - число, у которого первая цифра не ноль# <tex>O \rightarrow + | - | * | /</tex> - действие# <tex>D \rightarrow 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9</tex> - цифра, не являющаяся нулем# <tex>N \rightarrow NN | \epsilon</tex> - любая последовательность из цифр, возможно пустая# <tex>N \rightarrow 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9</tex> - любая цифра
Вывод строки <tex>2+2*2</tex>: <tex>S \rightarrow S O SSOS \rightarrow SOSOS \rightarrow 2OSOS \rightarrow 2O2OS \rightarrow 2O2O2 \rightarrow 2+2O2 \rightarrow 2+2*2</tex>
Левосторонний вывод для такой же строки: <tex>S \rightarrow (S) </tex> <tex>O SOS \rightarrow + | - | * | /</tex> <tex>S 2OS \rightarrow (1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9) N</tex> <tex>+S \rightarrow 0</tex> <tex>N 2+SOS \rightarrow NN</tex> <tex>N 2+2OS \rightarrow \epsilon</tex> <tex>N 2+2*S \rightarrow 0 | 1 | 2+2*2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0</tex>
143
правки

Навигация