Grako (for grammar compiler) is a tool that takes grammars in a variation of EBNF as input, and outputs memoizing (Packrat) PEG parsers in Python. Grako can also compile a grammar stored in a string into a Grammar object that can be used to parse any given input, much like the re module does with regular expressions. Grako is different from other PEG parser generators: * Generated parsers use Python's very efficient exception-handling system to backtrack. Grako generated parsers simply assert what must be parsed. There are no complicated if-then-else sequences for decision making or backtracking. Memoization allows going over the same input sequence several times in linear time. * Positive and negative lookaheads, and the cut element (with its cleaning of the memoization cache) allow for additional, hand-crafted optimizations at the grammar level. * Delegation to Python's re module for lexemes allows for (Perl-like) powerful and efficient lexical analysis. * The use of Python's context managers considerably reduces the size of the generated parsers for code clarity, and enhanced CPU-cache hits. * Include files, rule inheritance, and rule inclusion give Grako grammars considerable expressive power. * Automatic generation of Abstract Syntax Trees and Object Models, along with Model Walkers and Code Generators make analysis and translation approachable.