A Simple, Possibly Correct LR Parser for C11

Abstract : 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.
Type de document :
Article dans une revue
ACM Transactions on Programming Languages and Systems (TOPLAS), ACM, 2017, 39 (4), pp.1 - 36. 〈10.1145/3064848〉
Liste complète des métadonnées

Littérature citée [28 références]  Voir  Masquer  Télécharger

Contributeur : Jacques-Henri Jourdan <>
Soumis le : samedi 11 novembre 2017 - 15:01:03
Dernière modification le : mercredi 12 septembre 2018 - 11:15:10
Document(s) archivé(s) le : lundi 12 février 2018 - 12:12:35


Fichiers produits par l'(les) auteur(s)




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



Consultations de la notice


Téléchargements de fichiers