Added an alternative LL(k) parser with variable lookahead instead of fixed.
Refactoring
Added functional interface for speculative parse