Definite Clause Grammars (DCGs) are a convenient way to specify possibly non-context-free grammars for natural and formal languages. They can be used to progressively build a parse tree as grammar rules are applied by providing an extra argument in the DCG rule’s head. In the simplest way, this is a structure that contains the name of the used nonterminal. This extension of a DCG has been proposed for natural language processing in the past and can be done automatically in Prolog using term expansion. We extend this approach by a meta-nonterminal to specify optional and sequences of nonterminals, as these structures are common in grammars for formal, domain-specific languages. We specify a term expansion that represents these sequences as lists while preserving the grammar’s ability to be used both for parsing and serialising, i.e. to create a parse tree by a given source code and vice-versa. We show that this mechanism can be used to lift grammars specified in extended Backus-Naur form (EBNF) to generate parse trees. As a case study, we present a parser for the Prolog programming language itself based only on the grammars given in the ISO Prolog standard which produces corresponding parse trees.
@InProceedings{nogatz_et_al:OASIcs.SLATE.2019.7, author = {Nogatz, Falco and Seipel, Dietmar and Abreu, Salvador}, title = {{Definite Clause Grammars with Parse Trees: Extension for Prolog}}, booktitle = {8th Symposium on Languages, Applications and Technologies (SLATE 2019)}, pages = {7:1--7:14}, series = {Open Access Series in Informatics (OASIcs)}, ISBN = {978-3-95977-114-6}, ISSN = {2190-6807}, year = {2019}, volume = {74}, editor = {Rodrigues, Ricardo and Janou\v{s}ek, Jan and Ferreira, Lu{\'\i}s and Coheur, Lu{\'\i}sa and Batista, Fernando and Gon\c{c}alo Oliveira, Hugo}, publisher = {Schloss Dagstuhl -- Leibniz-Zentrum f{\"u}r Informatik}, address = {Dagstuhl, Germany}, URL = {https://drops.dagstuhl.de/entities/document/10.4230/OASIcs.SLATE.2019.7}, URN = {urn:nbn:de:0030-drops-108743}, doi = {10.4230/OASIcs.SLATE.2019.7}, annote = {Keywords: Definite Clause Grammar, Prolog, Term Expansion, Parse Tree, EBNF} }
Feedback for Dagstuhl Publishing