1 / 7

Prolog i parsery : DCG

Prolog i parsery : DCG. autorzy: leisman sepuq mattiq. Informacje ogólne o parserach.

bianca
Download Presentation

Prolog i parsery : DCG

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Prolog i parsery : DCG autorzy: leisman sepuq mattiq

  2. Informacje ogólne o parserach • Parser (inaczej analizator składniowy) to program który dokonuje analizy danych wejściowych. Parsery zwykle opierają się na zmodyfikowanych algorytmach analizy języków formalnych - zmodyfikowanych choćby dlatego, by sprawdzić czy pytanie lub dany tekst jest poprawny jest zupełnie nieinteresujące w porównaniu do pytania jaką on ma strukturę. Parsery wielu języków programowania bazują na gramatykach. • Stosowane najczęściej do sprawdzania poprawności składni poleceń, plików oraz wydobywania informacji z określonych struktur. • Współcześnie najczęściej parserów nie pisze się ręcznie, ale korzysta z generatorów parserów takich jak yacc, bison, ocamlyacc lub ANTLR.

  3. DCG – Definite Clause Grammar • Jednym z narzędzi używanych do generowania parserów jest Prolog, który tworzy je wykorzystując DCG. • DCG jest uogólnieniem gramatyk bezkontekstowych (znanych nam z Lingwistyki Matematycznej) • Gramatyka w DCG jest zestawem reguł konstruowanych przy pomocy symbolu --> • Symbole nieterminalne są zapisywane jako prologowe atomy. Reguły składają się z głowy i ciała. Głowa może być tylko symbolem nieterminalnym, natomiast ciało składa się z elementów oddzielonych przecinkami, gdzie elementem jest symbol terminalny ( umieszczony w nawiasach kwadratowych ) lub nieterminalny.

  4. Przykład : • Gramatyka bezkontekstowa : S  a S S  b S S  c • Ta sama gramatyka w DCG : s --> [a], s. s --> [b], s. s --> [c].

  5. Przykład c.d. : • Po wygenerowaniu przez prolog nasza gramatyka przedstawiona jest przez następujące predykaty: s(A,B) :- 'C'(A,a,C), s(C,B). s(A,B) :- 'C'(A,b,C), s(C,B). s([c|A],A). Gdzie 'C' jest wbudowanym predykatem, który wygląda następująco 'C'([A|B],A,B). Przykładowe użycie: ?- 'C'([1,2,3],1,[2,3]). Zwróci: Yes

  6. SWI Prolog  Java • Istnieje wiele klas umożliwiających komunikację pomiędzy Prologiem, a Java. Ze względu na dostępność oraz prostotę użycia zdecydowaliśmy się na wykorzystanie pakietu JPL (dostarczonego wraz z SWI Prologiem) • Zainteresowanych odsyłamy do lektury dokumentacji JPL-a.

  7. Co dalej ? • E-DCG (Extended-DCG) pozwala na jeszcze lepsze wykorzystanie własności gramatyk w Prologu, łatwiejsza rozbudowę programu oraz skrócenie kodu źródłowego programu. • Zainteresowanych : z przyjemnością zapraszamy

More Related