Odpowiedź brzmi tak. Nie zrobiłbym tego jednak z parserem Earley, ponieważ są prostsze z tymi samymi możliwościami.
Zasadniczo, parser Earley należy do rodziny ogólnych parserów bezkontekstowych, które produkują wszystkie możliwe analizy dla danego łańcucha, gdy gramatyka jest niejednoznaczna.
Istnieją dwa sposoby (przynajmniej) zrozumienia tych parserów:
w| w | +1ZAsolfaL (A)∩ L (G)fasol, aż do zmiany nazw terminali innych niż terminale (z powodu różnych produktów).
ZAfaL(G)∅G
F
Ale, jak widzisz, uogólnia to na analizowanie całego regularnego zestawu, jeśli ktoś jest tego zainteresowany.
ww
GF
Jeśli jest to pożądane, można to wykorzystać do zachowania tylko łańcuchów przy minimalnej odległości.
Można to jednak nieco poprawić, ponieważ kompozycja za pomocą automatów skończonych jest asocjacyjna.
GwΣ∗
Łatwo byłoby przycinać tę konstrukcję, aby uzyskać ten sam wynik jak poprzednio, ale najlepszym sposobem jest bardziej kontrolowana konstrukcja skrzyżowania, taka jak dynamiczna organizacja programowania używana przez większość parserów w literaturze, w tym Earleya, i używaj jej, aby uniknąć generowania niepotrzebna reguła, obliczając odległości i przerywając dowolną ścieżkę obliczeniową, gdy przekroczy ona pożądany próg. Programowania dynamicznego można również użyć do bezpośredniego obliczenia parsowania lasu (lub parsowania drzewa) dla ciągu, który ma najkrótszą odległość od danych wejściowych.