A Simple, Possibly Correct LR Parser for C11 - Inria - Institut national de recherche en sciences et technologies du numérique
Article Dans Une Revue ACM Transactions on Programming Languages and Systems (TOPLAS) Année : 2017

A Simple, Possibly Correct LR Parser for C11

Résumé

The syntax of the C programming language is described in the C11 standard by an ambiguous context-free grammar, accompanied with English prose that describes the concept of " scope " and indicates how certain ambiguous code fragments should be interpreted. Based on these elements, the problem of implementing a compliant C11 parser is not entirely trivial. We review the main sources of difficulty and describe a relatively simple solution to the problem. Our solution employs the well-known technique of combining an LALR(1) parser with a " lexical feedback " mechanism. It draws on folklore knowledge and adds several original aspects , including: a twist on lexical feedback that allows a smooth interaction with lookahead; a simplified and powerful treatment of scopes; and a few amendments in the grammar. Although not formally verified, our parser avoids several pitfalls that other implementations have fallen prey to. We believe that its simplicity, its mostly-declarative nature, and its high similarity with the C11 grammar are strong informal arguments in favor of its correctness. Our parser is accompanied with a small suite of " tricky " C11 programs. We hope that it may serve as a reference or a starting point in the implementation of compilers and analysis tools.
Fichier principal
Vignette du fichier
jourdan2017simple.pdf (297.37 Ko) Télécharger le fichier
Origine Fichiers produits par l'(les) auteur(s)
Loading...

Dates et versions

hal-01633123 , version 1 (11-11-2017)

Identifiants

Citer

Jacques-Henri Jourdan, François Pottier. A Simple, Possibly Correct LR Parser for C11. ACM Transactions on Programming Languages and Systems (TOPLAS), 2017, 39 (4), pp.1 - 36. ⟨10.1145/3064848⟩. ⟨hal-01633123⟩

Collections

INRIA INRIA2 ANR
648 Consultations
19201 Téléchargements

Altmetric

Partager

More