Nail: A Practical Interface Generator for Data Formats

We present Nail, an interface generator that allows programmers to safely parse and generate protocols defined by a Parser-Expression based grammar. Nail uses a richer set of parser combinators that induce an internal representation, obviating the need to write semantic actions. Nail also provides solutions parsing common patterns such as length and offset fields within binary formats that are hard to process with existing parser generators.

[1]  Satish Chandra,et al.  Packet types: abstract specification of network protocol messages , 2000 .

[2]  Bryan Ford,et al.  Packrat parsing:: simple, powerful, lazy, linear time, functional pearl , 2002, ICFP '02.

[3]  Len Sassaman,et al.  PKI Layer Cake: New Collision Attacks against the Global X.509 Infrastructure , 2010, Financial Cryptography.

[4]  Sergey Bratus,et al.  "Weird Machines" in ELF: A Spotlight on the Underappreciated Metadata , 2013, WOOT.

[5]  Satish Chandra,et al.  Packet Types: Abstract specifications of network protocol messages , 2000, SIGCOMM.

[6]  Nils Anders Danielsson Total parser combinators , 2010, ICFP '10.

[7]  Daan Leijen,et al.  Parsec: direct style monadic parser combinators for the real world , 2001 .

[8]  Adrian D. Thurston Parsing Computer Languages with an Automaton Compiled from a Single Regular Expression , 2006, CIAA.

[9]  William H. Burge,et al.  Recursive Programming Techniques , 1975 .

[10]  Otto C. Juelich,et al.  On the recursive programming techniques , 1964, CACM.

[11]  Sergey Bratus,et al.  Exploit Programming: From Buffer Overflows to "Weird Machines" and Theory of Computation , 2011, login Usenix Mag..

[12]  Bryan Ford,et al.  Packrat Parsing: Simple, Powerful, Lazy, Linear Time , 2006, ICFP 2002.

[13]  Sergey Bratus,et al.  The Page-Fault Weird Machine: Lessons in Instruction-less Computation , 2013, WOOT.

[14]  Benjamin C. Pierce,et al.  Relational lenses: a language for updatable views , 2006, PODS '06.