Страница 1 из 1

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

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

возможно кто то уже делал подобную задачу если не трудно пришлите код! заранее благодарен

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

Добавлено: 29 мар 2009, 16:26
dr.Jekill
Поищи в Яндексе. Найдешь очень много, но в первую очередь обрати внимание на статью сайта DelphiKingdom (как-то так). Очень полезная статья с исходниками.

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

Добавлено: 29 мар 2009, 21:43
Antistas
я посмотрел но ничего подходящего не увидел... может я что то пропустил...если знаешь кинь ссылку что ли..

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

Добавлено: 30 мар 2009, 02:29
dr.Jekill
Напиши подробней с использованием чего ты это всё делаешь. Чем конкретней вопрос, тем полезней ответ!

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

Добавлено: 30 мар 2009, 05:31
Antistas
Короче... вводим нетерминалы это большие буквы (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 )