tweaked lexer to return tokens as tuple list. eg: [('INT', '1'), ('SUB_OP', '-')]