| Block (_ , s, _) ->(* I think this code breaks what Blocks are. *)(* We delay parsing but parse with default_stt and default_grammar... *)let rctx = ctx_blk inlet toks = Lexer.lex default_stt s inlet s = sexp_parse_all_to_list default_grammar toks (Some ";") ineval blk (add_rte_variable None (o2v_list s) rctx)
Your comment is right. The idea is that Sexp_dispatch should not parse the block but pass its content as-is. Then it would be the macro which would call Lexer.lex and sexp_parse (which hence need to be exported to Typer as builtins).
Stefan