Graph explorer

Resolvable Ambiguity

A common standpoint when designing the syntax of programming languages is that the grammar definition has to be unambiguous. However, requiring up front unambiguous grammars can force language designers to make more or less arbitrary choices to disambiguate the language. In this paper, we depart from the traditional view of unambiguous grammar design, and enable the detection of ambiguities to be delayed until parse time, allowing the user of the language to perform the disambiguation. A natural decision problem follows: given a language definition, can a user always disambiguate an ambiguous program? We introduce and formalize this fundamental problem - called the resolvable ambiguity problem - and divide it into separate static and dynamic resolvability problems. We provide solutions to the static problem for a restricted language class and sketch proofs of soundness and completeness. We also provide a sound and complete solution to the dynamic problem for a much less restricted class of languages. The approach is evaluated through two separate case studies, covering both a large existing programming language, and the composability of domain-specific languages.

6 nodes5 linksoverview previewResolvable Ambiguity
6 nodes5 links
Resolvable Ambiguity6 visible / 6 total nodes / 11 links
Co-authorshipCo-authorshipCo-authorshipCo-authorshipCo-authorshipCo-authorshipAuthorshipAuthorshipAuthorshipAuthorshipTopic signalWResolvable Ambiguitypreprint / 2020AViktor PalmkvistResearcherAElias CastegrenResearcherAPhilipp HallerResearcherADavid BromanResearcherTFormal Languages and Au...714 works
PaperSignal 105 links

Resolvable Ambiguity

preprint / 2020

Open