added PLY lexing