Marshaling is the process through which structured values are serialized into a stream of bytes; demarshaling converts this stream of bytes back to structured values. Most often, for a given class of data, the marshaler and the demarshaler are tightly related pieces of code that are synthesized conjunctly. This paper proposes a new point of view: the demarshaler is considered as a byte-code interpreter evaluating a stream of bytes that is itself considered as a program i.e., as a sequence of commands interspersed with quoted raw data. These programs are expressions of the marshaling language. From that point of view, the marshaler logically appears as a compiler translating structured values into expressions of the marshaling language. The demarshaler depends on the sole marshaling language. If this language is powerful enough to deal with any kind of data then the demarshaler can be kept constant while many marshalers may coexist. This asymmetry and programmatic view has far-reaching...