Produce the stream of tokens. In case of error, return an explanatory string.
In case of success loop over all the tokens in order to expand those that read files
fn build_sna(code: &str) -> Snapshot {
let listing =
parse_z80_with_context_builder(code, Default::default()).expect("Unable to parse z80 code");
let (_, env) = visit_tokens_all_passes_with_options(&listing, Default::default())
.expect("Unable to assemble z80 code");
let sna = env.sna().clone();
sna
}