It is based on minor modifications of Brian Kernighans awk code. A study of the code shows that awk operates by first calling yyparse to build a parse tree in memory, then calls run to execute it. Yyparse call yylex to get lexical tokens. The run step is skipped. See README for full explanation.