Помогите кто знает немного теорию компиляторов

Ответить
Antistas
Сообщения: 5
Зарегистрирован: 23 окт 2008, 22:17

Нужно составить программу для вычисления типа грамматики (тип 0, тип 1 тип 2 тип 3)
вводим грамматику (vn vt p s) vn - нетерминальные символы, vt терминальные символы p - правило вывода s- начальный символ
и программа должна вывести тип

возможно кто то уже делал подобную задачу если не трудно пришлите код! заранее благодарен
dr.Jekill
Сообщения: 526
Зарегистрирован: 03 янв 2009, 23:17
Откуда: Voronezh
Контактная информация:

Поищи в Яндексе. Найдешь очень много, но в первую очередь обрати внимание на статью сайта DelphiKingdom (как-то так). Очень полезная статья с исходниками.
Нет религии выше истины
Antistas
Сообщения: 5
Зарегистрирован: 23 окт 2008, 22:17

я посмотрел но ничего подходящего не увидел... может я что то пропустил...если знаешь кинь ссылку что ли..
dr.Jekill
Сообщения: 526
Зарегистрирован: 03 янв 2009, 23:17
Откуда: Voronezh
Контактная информация:

Напиши подробней с использованием чего ты это всё делаешь. Чем конкретней вопрос, тем полезней ответ!
Нет религии выше истины
Antistas
Сообщения: 5
Зарегистрирован: 23 окт 2008, 22:17

Короче... вводим нетерминалы это большие буквы (S,A,B)
вводим терминалы это маленькие буквы цифры значки(a,b,c)
вводим правила вывода которые имеют вид(S->A,A->AB,AB->ab,B->c)
вводим начальный символ(S)
теперь прога должна узнать тип грамматики

1 тип когда в правиле вывода всё что до стрелочки меньше либо равно тому что после стрелочки
2 тип когда в правиле вывода всё что до стрелочки принадлежит нетерминалам, а то что после стрелочки нетерминалам и терминалам
3 тип когда каждое правило вывода имеет такой вид (A->Bt,A->t или A->tB,A->t) где A,B - нетерминалы, t- терминал
есть 0 тип это когда по другим типам не проходит
есть такая вещь как пустая цепочка Е, если её вводишь как нетерминал это сразу 0 тип
ну определение каждого типа отдельная процедура...для определения в правиле вывода пустой цепочки можно ещё до того как грамматику отправляешь по процедурам...вся работа заключается в правиле вывода(ее вводим как string )
Ответить