grammar improved. Now lexer.py can return 'tokens' to the parser