I wrote an Asn.1 decoder and since it contains type/size info you can often read a subset and handle the rest as opaque data objects if you need round-tripping, this is required as there can be plenty of data that is unknown to older consumers (like the ETSI EIDAS/Pades personal information extensions in PDF signatures).
However, to have a sane interface for actually working with the data you do need a schema that can be compiled to a language specific notation.
However, to have a sane interface for actually working with the data you do need a schema that can be compiled to a language specific notation.