Decoupled the lexer and the parser and updated README