def _CreateModule(id_spec, ids): """ Create a SYNTHETIC ASDL module to generate code from. """ from asdl import asdl_ id_sum = asdl_.Sum([asdl_.Constructor(name) for name, _ in ids]) variants2 = [asdl_.Constructor(name) for name in id_spec.kind_name_list] kind_sum = asdl_.Sum(variants2) id_ = asdl_.TypeDecl('Id', id_sum) kind_ = asdl_.TypeDecl('Kind', kind_sum) schema_ast = asdl_.Module('id_kind', [], [id_, kind_]) return schema_ast
def _CreateSum(sum_name, variant_names): """ Similar to frontend/id_kind_gen.py Usage of SYNTHETIC ASDL module: C++: using option_asdl::opt_num opt_num::nounset Python: from _devbuild.gen.option_asdl import opt_num opt_num.nounset """ sum_ = asdl_.Sum([asdl_.Constructor(name) for name in variant_names]) typ = asdl_.TypeDecl(sum_name, sum_) return typ