compiles attributed LL(1) grammars into recursive descent compilers