Lua—an extensible extension language
Software—Practice & Experience
Essentials of programming languages (2nd ed.)
Essentials of programming languages (2nd ed.)
Packrat parsing:: simple, powerful, lazy, linear time, functional pearl
Proceedings of the seventh ACM SIGPLAN international conference on Functional programming
Parsing expression grammars: a recognition-based syntactic foundation
Proceedings of the 31st ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Journal of Functional Programming
Better extensibility through modular syntax
Proceedings of the 2006 ACM SIGPLAN conference on Programming language design and implementation
Programming in Lua, Second Edition
Programming in Lua, Second Edition
OMeta: an object-oriented language for pattern matching
Proceedings of the 2007 symposium on Dynamic languages
A text pattern-matching tool based on Parsing Expression Grammars
Software—Practice & Experience
Parsing Expression Grammar as a Primitive Recursive-Descent Parser with Backtracking
Fundamenta Informaticae - Special Issue on Concurrency Specification and Programming (CS&P)
Left recursion in parsing expression grammars
SBLP'12 Proceedings of the 16th Brazilian conference on Programming Languages
Hi-index | 0.00 |
Parsing Expression Grammar (PEG) is a recognition-based foundation for describing syntax that renewed interest in top-down parsing approaches. Generally, the implementation of PEGs is based on a recursive-descent parser, or uses a memoization algorithm. We present a new approach for implementing PEGs, based on a virtual parsing machine, which is more suitable for pattern matching. Each PEG has a corresponding program that is executed by the parsing machine, and new programs are dynamically created and composed. The virtual machine is embedded in a scripting language and used by a patternmatching tool. We give an operational semantics of PEGs used for pattern matching, then describe our parsing machine and its semantics. We show how to transform PEGs to parsing machine programs, and give a correctness proof of our transformation.