Scannerless parsing