@incollection{jourdanValidatingLRParsers2012,
 title = {Validating {LR}(1) {Parsers}},
 author = {Jourdan, Jacques-Henri and Pottier, François and Leroy, Xavier},
 year = {2012},
 isbn = {978-3-642-28868-5 978-3-642-28869-2},
 doi = {10.1007/978-3-642-28869-2_20},
 url = {http://link.springer.com/10.1007/978-3-642-28869-2_20},
 urldate = {2024-04-22},
 booktitle = {Programming {Languages} and {Systems}},
 editor = {Hutchison, David and Kanade, Takeo and Kittler, Josef and Kleinberg, Jon M. and Mattern, Friedemann and Mitchell, John C. and Naor, Moni and Nierstrasz, Oscar and Pandu Rangan, C. and Steffen, Bernhard and Sudan, Madhu and Terzopoulos, Demetri and Tygar, Doug and Vardi, Moshe Y. and Weikum, Gerhard and Seidl, Helmut},
 volume = {7211},
 pages = {397--416},
 publisher = {Springer Berlin Heidelberg},
 address = {Berlin, Heidelberg},
 note = {Series Title: Lecture Notes in Computer Science},
 language = {en},
 abstract = {An LR(1) parser is a finite-state automaton, equipped with a stack, which uses a combination of its current state and one lookahead symbol in order to determine which action to perform next. We present a validator which, when applied to a context-free grammar G and an automaton A, checks that A and G agree. Validating the parser provides the correctness guarantees required by verified compilers and other high-assurance software that involves parsing. The validation process is independent of which technique was used to construct A. The validator is implemented and proved correct using the Coq proof assistant. As an application, we build a formally-verified parser for the C99 language.}
}
