Подтвердить что ты не робот

Ресурсы алгоритмов синтаксического анализа

Я пишу генератор парсера GLR и как некоторые советы по ресурсам, связанным с этим алгоритмом как в Интернете, так и в разновидности мертвых деревьев (книги для тех, кто не знаком с выродками).

Я знаю, что Bison может генерировать синтаксические анализаторы GLR, и, учитывая его в GPL, я могу проверить его код, однако было бы неплохо иметь полное описание алгоритма.

Итак, знает ли кто-нибудь о каких-либо хороших ресурсах, которые я могу использовать? Спасибо.

4b9b3361

Ответ 1

Некоторые хорошие вещи, с которыми я столкнулся раньше:

и более подробно:

И я знаю третий анализатор GLR с открытым исходным кодом: DParser.

Ответ 2

Адриан Джонстон публикует много работы над расширенными версиями алгоритмов GLR. Его веб-сайт , вероятно, будет интересным ресурсом.

Ответ 3

Лучшее описание, которое я когда-либо видел, с картинками, иллюстрирующими каждый шаг алгоритма, содержится в этой книге:

http://books.google.ca/books?id=05xA_d5dSwAC&lpg=PA381&dq=generalized%20deterministic%20parsers&pg=PA381#v=onepage&q=generalized%20deterministic%20parsers&f=false

Для псевдокода перейдите к источнику: Обобщенный анализ LR от Tomita, стр. 70 или около того. Бумага Фарши содержит компактное описание.

http://books.google.ca/books?id=PvZiZiVqwHcC&lpg=PP1&dq=generalized%20lr%20parsing&pg=PA70#v=onepage&q=&f=false

Это один из тех методов, которые я пробовал для qb.js(qbasic в javascript).

Ответ 4

Из того, что я знаю, он работает так же, как парсер LALR, за исключением случаев, когда он сталкивается с двусмысленностью.

Когда он это делает, он по существу делит на отдельные разборки, соответствующие возможным вариантам в этой точке, и продолжает их в тандеме - когда синтаксический разбор не удается (из-за столкновения с незаконным элементом), он просто отбрасывается, потому что он должен были ошибочными предположениями о более ранней двусмысленности.

В конце концов, все, кроме одного синтаксического анализа, должны были погибнуть, а выживающий - это "правильный" анализ этих двусмысленных точек.