build by hand Does dynamic grammar analysis while parsing saves results like a JIT does Allows for direct left recursion indirect left recursion not supported Parsing time typically near-linear
match an assignment; can match "f();" | ID '=' expr ';' // oops! an exact duplicate of previous alternative | expr ';' // expression statement ; expr: ID '(' ')' | INT ; ID : [a‐z]+ ; // match one or more of any lowercase letter INT : [0‐9]+ ; // match integers The ANTLR tool generates recursive-descent parsers from grammar rules such as the ones above.