Я хочу знать, какие алгоритмы анализа используются для анализа запрограммированных грамматик. Любые ссылки, блоги или что-нибудь, где я могу прочитать о запрограммированных грамматиках и алгоритмах синтаксического анализа, кроме исследовательских работ IEEE?
Каковы алгоритмы разбора запрограммированных грамматик?
Ответы (1)
Я думаю, это хорошо объяснено в мощь запрограммированных грамматик с графики из разных классов:
Контекстно-свободная грамматика определяется как четверка
G = (N, T, S, P)
, гдеN
— конечное непустое множество, называемое нетерминальным алфавитом,T
— конечное непустое множество, называемое терминальным алфавитом,(N ∩ T = ∅), S ∈ N
— начальный символ, аP
— конечное подмножество. изN × (N ∪ T)∗
называется набором правил. Правила также называются постановками.Запрограммированная грамматика (без проверки внешнего вида) представляет собой набор из шести кортежей
G = (N, T, S, Lab, P, PG)
, гдеN , T and S
указаны как в контекстно-свободной грамматике,Lab
— это алфавит (меток),P
— конечный набор контекстно-свободных правил, называемых базовыми произведениями множества. , а PG — это конечное множество троекr = (q, p, σ)
, гдеq ∈ Lab
— это меткаr, p ∈ P
— это контекстно-свободная продукция, называемая основной продукциейr
, аσ
— это подмножествоLab
, называемое полем успехаr
. ЭлементыPG
называются правиламиG
.Язык
L(G)
, сгенерированный запрограммированной грамматикойG
, указанной выше, определяется как множество всех словw ∈ T∗
, таких, что существует производноеS = w0 =⇒r1 w1 =⇒r2 w2 =⇒r3 . . . =⇒rk wk = w,
, гдеk ≥ 1
и, для1 ≤ i ≤ k, wi−1 = wi−1 Ai wi−1
иwi = wi−1 vi wi−1
, для некоторых словwi−1 , wi−1 ∈ (N ∪ T)∗ , ri = (qi , Ai → vi , σi)
и, дляi < k, qi+1 ∈ σi
.
Извините за отсутствие LaTeX.
Подобно тому, как лемма Огдена сильнее, чем лемма прокачки (из-за маркировки), концепция запрограммированной грамматики является более строгой. чем контекстно-свободный из-за этих маркировок.