Rosetta  2019.40
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Namespaces | Functions
Tag.cc File Reference

An object for reading/writing a simple xml-like language. More...

#include <utility/tag/Tag.hh>
#include <iostream>
#include <cstdio>
#include <boost/spirit/include/classic_core.hpp>
#include <boost/spirit/include/classic_attribute.hpp>
#include <boost/spirit/include/classic_closure.hpp>
#include <boost/spirit/include/phoenix1_primitives.hpp>
#include <boost/spirit/include/phoenix1_operators.hpp>
#include <boost/spirit/include/phoenix1_functions.hpp>
#include <boost/spirit/include/phoenix1_binders.hpp>
#include <boost/spirit/include/phoenix1_casts.hpp>
#include <utility/string_util.hh>
#include <utility/exit.hh>
#include <utility/excn/Exceptions.hh>
#include <boost/spirit/include/classic_position_iterator.hpp>
#include <boost/spirit/include/classic_functor_parser.hpp>
#include <string>
#include <sstream>

Namespaces

 boost
 
 utility
 unresizable vector whose size is known at compile time, which may be allocated on the stack, and which indexes from 0.
 
 utility::tag
 

Functions

void boost::throw_exception (std::exception const &)
 
std::ostream & utility::tag::operator<< (std::ostream &out, Tag const &tag)
 
std::ostream & utility::tag::operator<< (std::ostream &out, TagCOP const &tag_ptr)
 

Detailed Description

An object for reading/writing a simple xml-like language.

Reads simple xml-like files, such as:

<loop_design> <params max_cycles="100"> <loop begin="A:10" end="A:15" length="5-6/"> </loop_design>

When read into a tag, the following code would be valid: std::ifstream fin; fin.open("loop_design.tag") TagCOP tag = Tag::create( fin ); runtime_assert( tag->getName() == "loop_design" ); int max_cycles = tag->getTag("params")->getOption<int>("max_cycles");

Files must obey the following grammar:

EBNF for a simple xml-like language:

top := !xml_schema_tag misc* tag misc* xml_schema_tag := <?xml (char - '?')* '?>' misc := comment_tag | (char - '<') comment_tag := '' tag := leaf_tag | branch_tag leaf_tag := '<' name options* '/>' option := name '=' ( name | quote ) name := (alnum | '_' | '-' | '.' | '*' | ',' )+ quote := '"' (alnum - '"')* '"' branch_tag := '<' name options* '>' ( tag | misc )* '</' name '>' *whitespace allowed between all tokens

Less complex than XML, also: no need to quote options, and text outside of tags is ignored. Implemented with the boost spirit library.

To debug the schema: 1) uncomment this:

#define BOOST_SPIRIT_DEBUG

2) add in the definition function below

BOOST_SPIRIT_DEBUG_NODE(rule_name);

for each rule defined.

NOTE: As of r53105, Rosetta doesn't compile with line 162 in boost_1_46_1/boost/spirit/home/debug/debug_node.hpp when BOOST_SPIRIT_DEBUG is enabled.

Author
Paul Murphy
(schema modified by Matthew O'Meara)

Variable Documentation

rule<Scanner,tag_closure::context_t> branch_tag
rule<Scanner,string_closure::context_t> close_tag
rule<Scanner> comment_tag
functor_parser<error_report_parser> error_report_p
vector< file_position > errors
rule<Scanner,name_and_options_closure::context_t> leaf_tag
rule<Scanner> misc
rule<Scanner,string_closure::context_t> name

Referenced by pyrosetta.io.silent_file_map.SilentFilePoseAccessor::__getitem__(), basic::datacache::ConstDataMap::add(), utility::json_spirit::Config_map< String >::add(), binder::add_relevant_include_for_decl(), CaToAllAtom::apply(), fmt::arg(), binder::bind_enum(), composite_sequences_from_cmd_line(), utility::tag::XMLSchemaSimpleSubelementList::element_summary_as_already_defined_subelement(), utility::tag::XMLSchemaSimpleSubelementList::element_summary_as_simple_subelement(), PerformanceBenchmark::execute(), PerformanceBenchmark::executeOneBenchmark(), zinc2_homodimer_setup::filter_clashes(), demo.D030_Fold_tree::fold_tree(), utility::from_string(), basic::database::full_name(), basic::datacache::HierarchicalDataMap::get(), basic::datacache::HierarchicalDataMap::get_or_null(), basic::datacache::get_set_from_datamap(), PerformanceBenchmark::getOneReport(), zinc1_homodimer_design::gridsearch_rollmove_angles(), utility::tag::XMLSchemaModelGroup::group_name(), demo.D090_Ala_scan::interface_ddG(), binder::is_banned_symbol(), binder::is_bindable(), binder::is_const_overload(), binder::is_python_builtin(), binder::is_skipping_requested(), main(), demo.D040_Movemap::movemap(), mutate_residues_wrapper(), utility::io::izstream::open_ifstream(), binder::operator<<(), utility::xsd_util::output_all_tag_options(), demo.D050_Packer_task::packer_task(), pyrosetta.io::pose_from_sequence(), HBondReporter::pose_name(), demo.D020_Pose_scoring::pose_scoring(), poses_from_cmd_line(), pyrosetta.io::poses_from_silent(), pyrosetta.io::poses_to_silent(), binder::python_class_name(), binder::Config::read(), read_input_weights(), utility::replace_in(), basic::options::replace_option_namespace_colons_with_underscores(), basic::sampling::orientations::QuaternionGridManager::request_by_name(), basic::sampling::orientations::QuaternionGridManager::request_by_radius(), basic::sampling::orientations::QuaternionGridManager::request_by_size(), rna_design_test(), DockFragmentsMover::run(), demo.D060_Folding::sample_folding(), demo.D070_Refinement::sample_refinement(), demo.D080_Loop_modeling::sample_single_loop_modeling(), demo.D090_Ala_scan::scanning(), sequences_from_cmd_line(), basic::datacache::HierarchicalDataMap::set(), utility::tag::Tag::setName(), setup_rmsd_atom_map(), pyrosetta.distributed.viewer.core.Viewer::show(), utility::signal_handler(), basic::options::start_files(), utility::string_split(), utility::terminate_handler(), validate_dunbrack_binaries(), and binder::vector_binder< T, Allocator >::vector_binder().

rule<Scanner,name_and_options_closure::context_t> name_and_options
rule<Scanner,string_closure::context_t> name_or_quote
rule<Scanner,name_and_options_closure::context_t> open_tag
rule<Scanner,option_closure::context_t> option

Referenced by align_pdbs(), analyze_base_pair_test(), ViewMembraneProteinMover::apply(), Minimize::apply(), NCMinimize::apply(), ExemplarMover::apply(), ExposedStrandMover::apply(), HDdesignMover::apply(), HDmakerMover::apply(), HbsDesignMover::apply(), PeptoidDesignMover::apply(), OopDesignMover::apply(), MPDomainAssembly::apply(), supercharge::apply(), DougsDockDesignMinimizeMagicMover::apply(), RNA_ScoreMover::apply(), UBQ_GTPase_disulfide_Mover::apply(), UBQ_E2Mover::apply(), build_full_model_test(), BuildFullModel::BuildFullModel(), calc_rama_scores(), calc_rms_test(), calc_rmsf_and_avrg(), calc_scores(), calculate_pairwise_RMSD(), calculate_sasa(), cluster_outfile_test(), cluster_test(), StepWiseJobQueen::complete_larval_job_maturation(), RNA_DeNovoJobQueen::complete_larval_job_maturation(), compute_chem_shift_RMSD(), compute_folding_energies(), correct_dunbrack(), correct_rama(), create_base_pair_step_database_test(), create_bp_jump_database_test(), create_rna_vall_torsions_test(), create_scorefxn(), cs_rosetta_rna_pdb(), basic::database::db_partition_from_options(), densityTools(), supercharge::design_supercharge(), supercharge::design_supercharge_AvNAPSA(), determine_residues_to_rebuild(), utility::tag::Tag::die_for_unaccessed_options(), do_erraser2(), drrafter_error_estimation(), basic::DynamicProfileThis::DynamicProfileThis(), erraser2_test(), ExposedStrandMover::ExposedStrandMover(), extract_pdbs_test(), BuildFullModel::fill_and_sample_full_model(), fill_designable_set(), fill_input_poses_based_on_possible_checkpoints(), filter_combine_long_loop(), find_close_motifs(), FragmentAssemblyMover::FragmentAssemblyMover(), basic::database::full_cache_name(), basic::database::full_name(), gen_pep_bb_sequential(), basic::database::get_db_session(), get_exclid(), graft_pdb(), HDdesignMover::HDdesignMover(), HDmakerMover::HDmakerMover(), import_and_dump_pdb(), MPDomainAssembly::init_from_cmd(), PhProtocol::init_options(), initialize_native_pose(), initialize_peptide(), RNA_DeNovoJobQueen::initialize_scorefxn(), main(), apps::pilot::frankdt::main(), make_1mer_frags(), BuildFullModel::make_built_residues_virtual(), make_fragments(), match_main(), MC_run(), measure_sequence_recovery(), mg_modeler_test(), Minimize::Minimize(), minimize_test(), mutate_residues_wrapper(), my_main(), MyScoreMover::MyScoreMover(), nucleobase_probe_score_test(), o2prime_packer(), obtain_start_pose(), utility::options::operator+(), output_packstat(), output_packstat_pdb(), output_single_motif(), basic::database::parse_database_connection(), pdb_to_silent_file(), pep_phipsi_analysis(), pep_rmsd_analysis(), post_rebuild_bulge_assembly(), predict_chem_map_test(), Prepare(), print_pep_analysis(), print_pep_csts(), process_for_motifs(), basic::prof_reset(), basic::prof_show(), quick_score_test(), read_in_flexible_regions(), read_input_weights(), read_pose(), read_structures(), read_thickness(), rebuild_test(), DockGlycansProtocol::register_options(), MPDomainAssembly::register_options(), repack_test(), resample_full_model_test(), rhiju_pdbstats(), rna_build_helix_test(), rna_denovo(), rna_denovo_legacy(), rna_design_test(), rna_sample_virtual_sugar(), RNA_ScoreMover::RNA_ScoreMover(), rna_suitename(), rna_superimpose_and_graft_test(), rna_thread_test(), OptionCollectionBenchmark::run(), run(), DockFragmentsMover::run(), ScoreFragmentSetMover::run(), FragmentAssemblyMover::run(), ConsensusFragmentMover::run(), SolutionRescoreMover::run(), run_mc(), run_pep_prep(), RunPepSpec(), basic::database::safely_read_from_database(), utility::options::ScalarOption_T_< PathOptionKey, file::PathName >::ScalarOption_T_(), sequence_tolerance_main(), DockGlycansProtocol::set_commandline_options(), set_pep_csts(), supercharge::set_reference_energies(), supercharge::set_resfile(), setup_align_atom_map(), setup_ca_constraints(), setup_mask(), setup_rmsd_atom_map(), zinc1_homodimer_design::setup_taskfactory(), zinc2_homodimer_design::setup_taskfactory_scorefunction_movers(), setup_tf(), slice_ellipsoid_envelope(), slice_sample_res_and_surrounding(), spanfile_from_pdb(), ss_ds_ts_assign_test(), stepwise_monte_carlo_legacy(), superimpose(), superimpose_pdb(), swa_rna_cluster(), swa_rna_sample(), HDdesignMover::sym_repack_minimize(), HDdesignMover::task_constraint_setup(), thermal_sampler(), utility::options::VectorOption_T_< BooleanVectorOptionKey, bool >::VectorOption_T_(), and basic::DynamicProfileThis::~DynamicProfileThis().

rule<Scanner,options_closure::context_t> options

Referenced by basic::options::add_anonymous_option(), utility::options::OptionCollection::add_built_in_options(), analyze_base_pair_test(), ViewMembraneProteinMover::apply(), Minimize::apply(), NCMinimize::apply(), ExemplarMover::apply(), MPDomainAssembly::apply(), supercharge::apply(), RNA_ScoreMover::apply(), BacksideHbondFinderMover::BacksideHbondFinderMover(), ca_to_allatom_main(), calc_rama_scores(), calc_rms_test(), calc_rmsf_and_avrg(), calc_scores(), calculate_binding_energy(), calculate_sasa(), cluster_outfile_test(), cluster_test(), StepWiseJobQueen::complete_larval_job_maturation(), RNA_DeNovoJobQueen::complete_larval_job_maturation(), compute_folding_energies(), configure_master_mover(), convert(), create_base_pair_step_database_test(), create_bp_jump_database_test(), basic::database::DatabaseSessionLoader::create_resource(), create_rna_vall_torsions_test(), basic::database::db_partition_from_options(), densityTools(), supercharge::design_supercharge(), supercharge::design_supercharge_AvNAPSA(), determine_residues_to_rebuild(), do_color_by_score(), do_options_checks(), drrafter_error_estimation(), basic::DynamicProfileThis::DynamicProfileThis(), supercharge::energy_comparison(), extract_pdbs_test(), find_residues_around_mutation(), basic::database::full_cache_name(), basic::database::full_name(), generate_dunbrack_binaries(), utility::xsd_util::generate_human_readable_recursive(), utility::xsd_util::generate_human_readable_summary(), get_complex_score(), basic::database::get_db_session(), get_exclid(), get_unbound_protein_score(), graft_pdb(), GlycanClashCheckMover::init(), DockGlycansProtocol::init(), MPDomainAssembly::init_from_cmd(), PhProtocol::init_options(), basic::options::initialize(), basic::random::RandomGeneratorSettings::initialize_from_options(), initialize_native_pose(), RNA_DeNovoJobQueen::initialize_scorefxn(), insert_stage_tag(), basic::random::RandomGeneratorSettings::list_options_read(), utility::options::OptionCollection::load(), main(), make_scorefxn(), match_main(), MC_run(), mg_modeler_test(), Minimize::Minimize(), minimize_test(), minimize_with_constraints(), mutate_and_score_RNP(), my_main(), MyScoreMover::MyScoreMover(), NCMinimize::NCMinimize(), output_packstat(), output_packstat_pdb(), output_results(), output_superimposed_pdb(), basic::database::parse_database_connection(), poses_from_cmd_line(), post_rebuild_bulge_assembly(), predict_chem_map_test(), supercharge::prepack_input_structure(), basic::options::process(), processRegions(), basic::prof_reset(), basic::prof_show(), basic::prof_start_function_body(), basic::prof_stop_function_body(), read_native_sequence_for_entity_elements(), read_structures(), basic::options::read_subset_of_global_option_collection(), rebuild_test(), register_options(), DockGlycansProtocol::register_options(), MPDomainAssembly::register_options(), resample_full_model_test(), reverse_convert(), rhiju_pdbstats(), rna_build_helix_test(), rna_denovo(), rna_denovo_legacy(), RNA_DeNovoJobQueen::RNA_DeNovoJobQueen(), rna_design_test(), rna_fullatom_minimize_test(), rna_motif_test(), RNA_ScoreMover::RNA_ScoreMover(), rna_suitename(), rna_superimpose_and_graft_test(), rna_thread_test(), OptionCollectionBenchmark::run(), MinimizerBenchmark< sft, TScale >::run(), run(), ConsensusFragmentMover::run(), basic::database::safely_read_from_database(), sequence_tolerance_main(), DockGlycansProtocol::set_commandline_options(), utility::set_options_string(), supercharge::set_reference_energies(), supercharge::set_resfile(), utility::tag::Tag::setOptions(), setup_align_atom_map(), setup_mask(), setup_rmsd_atom_map(), zinc1_homodimer_design::setup_taskfactory(), zinc2_homodimer_design::setup_taskfactory_scorefunction_movers(), ss_ds_ts_assign_test(), stepwise_monte_carlo_legacy(), superimpose_pdb(), thermal_sampler(), validate_dunbrack_binaries(), utility::json_spirit::write_stream(), utility::json_spirit::write_string(), and basic::DynamicProfileThis::~DynamicProfileThis().

rule<Scanner,string_closure::context_t> quote
rule<Scanner,tag_closure::context_t> tag

Referenced by numeric::interpolation::spline::SplineGenerator::add_boundary_function(), add_protocols(), add_rosetta_options_12(), add_rosetta_options_13(), add_rosetta_options_15(), add_rosetta_options_9(), analyze_base_pair_test(), RNA_ScoreMover::apply(), basic::database::attributes_for_parse_database_connection(), build_full_model_test(), calc_scores(), CAtrace::CAtrace(), utility::tag::Tag::create(), drrafter_error_estimation(), basic::DynamicProfileThis::DynamicProfileThis(), extract_pdbs_test(), BuildFullModel::fill_and_sample_full_model(), FragID::FragID(), basic::mpi::MessageListenerFactory::get_listener(), utility::get_resnum_and_segid(), go_main(), harvest_motifs(), harvest_motifs_one(), basic::mpi::listener_tag_to_name(), main(), utility::make_segtag_with_dashes(), utility::make_tag(), utility::make_tag_with_dashes(), mg_modeler_test(), utility::tag::Tag::operator=(), pdb_to_silent_file(), processRegions(), basic::prof_show(), basic::prof_start_function_body(), basic::prof_stop_function_body(), basic::resource_manager::locator::FileListResourceLocator::provide_xml_schema(), basic::resource_manager::locator::NullResourceLocator::provide_xml_schema(), basic::resource_manager::locator::DatabaseResourceLocator::provide_xml_schema(), basic::resource_manager::locator::FileSystemResourceLocator::provide_xml_schema(), utility::tag::Tag::read(), rna_build_helix_test(), rna_features_from_pose(), rna_fullatom_minimize_test(), ScoreFragmentSetMover::run(), FragmentAssemblyMover::run(), ConsensusFragmentMover::run(), SolutionRescoreMover::run(), basic::resource_manager::ResourceManager::schema_for_resource_definition_file(), basic::gpu::Timer::Timer(), and utility::tag::Tag::write().

rule<Scanner> top
member1 value

Referenced by utility::json_spirit::Config_map< String >::add(), utility::json_spirit::Semantic_actions< Value_type, Iter_type >::add_first(), utility::json_spirit::Semantic_actions< Value_type, Iter_type >::add_to_current(), UBQ_GTPase_disulfide_Mover::analyze_and_filter(), UBQ_E2Mover::analyze_and_filter(), analyze_base_pair_test(), AnchorFinderMover::AnchorFinderMover(), APDBCMover::APDBCMover(), IAMover::apply(), zinc1_homodimer_setup::apply(), MetalSiteFinderMover::apply(), AnchorFinderMover::apply(), APDBCMover::apply(), HDdesignMover::apply(), HbsDesignMover::apply(), PeptoidDesignMover::apply(), OopDesignMover::apply(), DougsDockDesignMinimizeMagicMover::apply(), UBQ_GTPase_disulfide_Mover::apply(), UBQ_E2Mover::apply(), utility::keys::KeyVector< K, T >::assign(), utility::keys::ClassKeyVector< K, T, C >::assign(), ObjexxFCL::Chunk< T >::assign(), utility::keys::SmallKeyVector< PathVectorOptionKey, PathVectorOption >::assign(), utility::keys::ClassKeyMap< K, T, C >::assign(), utility::keys::SmallKeyMap< K, T >::assign(), ObjexxFCL::CArray< typename >::assign(), ObjexxFCL::ChunkVector< typename >::assign(), ObjexxFCL::CArrayP< typename >::assign(), IAMover::assign_IA_mover(), fmt::internal::BasicCharTraits< char >::cast(), ObjexxFCL::Chunk< T >::Chunk(), numeric::clamp(), fmt::internal::const_check(), fmt::internal::CharTraits< char >::convert(), fmt::internal::CharTraits< wchar_t >::convert(), supercharge::design_supercharge(), numeric::interpolation::spline::PolycubicSpline< N >::dFdxi(), do_erraser2(), do_options_checks(), numeric::Polynomial_1d::eval(), numeric::interpolation::spline::PolycubicSpline< N >::F(), BuildFullModel::fill_and_sample_full_model(), fill_input_poses_based_on_possible_checkpoints(), zinc2_homodimer_setup::filter_clashes(), zinc2_homodimer_setup::filter_metal_geom(), fmt::BasicFormatter< CharType, ArgFormatter >::format(), fmt::internal::format_decimal(), fmt::FormatInt::format_decimal(), fmt::format_decimal(), fmt::FormatInt::FormatSigned(), utility::fractional_rank(), basic::datacache::HierarchicalDataMap::get(), utility::json_spirit::get_int(), utility::json_spirit::get_mArray(), utility::json_spirit::get_mObject(), basic::options::get_option(), utility::json_spirit::get_real(), utility::json_spirit::get_string(), utility::json_spirit::get_string_or_empty(), go_main(), utility::type_traits::has_insertion_operator(), rosetta_binders::has_insertion_operator(), utility::heap::heap_up(), numeric::hsv_to_rgb(), UBQ_GTPase_disulfide_Mover::init_on_new_input(), UBQ_E2Mover::init_on_new_input(), utility::keys::ClassKeyMap< K, T, C >::insert(), utility::keys::SmallKeyMap< K, T >::insert(), utility::options::Option::is_group(), numeric::kdtree::is_legal_greater_than(), numeric::kdtree::is_legal_kdtree_below_node(), numeric::kdtree::is_legal_less_than(), Kernel::kernel_precomputed(), numeric::VoxelArray< _Float, _Value >::load(), main(), apps::pilot::frankdt::main(), fmt::internal::ArgArray< N, true >::make(), fmt::internal::ArgArray< N, false >::make(), fmt::internal::MakeValue< Formatter >::MakeValue(), numeric::MathTensor< double >::MathTensor(), rosetta_binders::utility_vector_binder< Vector, L, T, Allocator >::maybe_has_equal_operator(), numeric::mean(), measure_sequence_recovery(), my_main(), ObjexxFCL::Chunk< T >::non_preserving_resize(), ObjexxFCL::Chunk< T >::operator*=(), ObjexxFCL::ChunkVector< typename >::operator*=(), ObjexxFCL::Chunk< T >::operator+=(), ObjexxFCL::ChunkVector< typename >::operator+=(), ObjexxFCL::Chunk< T >::operator-=(), ObjexxFCL::ChunkVector< typename >::operator-=(), ObjexxFCL::Chunk< T >::operator/=(), ObjexxFCL::ChunkVector< typename >::operator/=(), fmt::BasicWriter< Char >::operator<<(), utility::keys::KeyVector< K, T >::operator=(), utility::keys::ClassKeyVector< K, T, C >::operator=(), utility::keys::SmallKeyVector< PathVectorOptionKey, PathVectorOption >::operator=(), ObjexxFCL::Chunk< T >::operator=(), ObjexxFCL::ChunkVector< typename >::operator=(), fmt::internal::parse_nonnegative_int(), basic::options::pre_tracer_process(), utility::libsvm::Svm_rosetta::predict(), utility::libsvm::Svm_rosetta::predict_probability(), ObjexxFCL::Chunk< T >::push_back(), fmt::Buffer< Char >::push_back(), numeric::interpolation::Histogram< typename, typename >::read_from_db(), APDBCMover::read_in_insert_loop_info(), utility::json_spirit::read_mArray(), basic::read_metric_value_scalar(), basic::read_metric_value_vector1(), utility::json_spirit::read_mObject(), utility::json_spirit::read_string(), utility::json_spirit::read_string_or_throw(), numeric::read_tensor_from_file(), basic::options::realafteroption(), ObjexxFCL::ChunkVector< typename >::reshape(), ObjexxFCL::Chunk< T >::resize(), ObjexxFCL::ChunkVector< typename >::resize(), rna_fullatom_minimize_test(), numeric::VoxelArray< _Float, _Value >::save(), numeric::expression_parser::ArithmeticScanner::scan_literal(), basic::datacache::HierarchicalDataMap::set(), utility::SimulateMPI::set_mpi_rank(), basic::options::set_option(), numeric::interpolation::Histogram< typename, typename >::set_params(), supercharge::set_resfile(), supercharge::set_surface(), numeric::expression_parser::LiteralExpression::set_value(), numeric::expression_parser::VariableExpression::set_value(), utility::tag::Tag::setOption(), zinc1_homodimer_design::setup_metalsite_constraints(), zinc1_homodimer_design::setup_scorefunctions(), zinc2_homodimer_design::setup_taskfactory_scorefunction_movers(), HDdesignMover::sym_repack_minimize(), fmt::internal::to_unsigned(), rosetta_binders::utility_vector_binder< Vector, L, T, Allocator >::utility_vector_binder(), fmt::internal::ArgFormatterBase< ArgFormatter< Char >, Char, FormatSpec >::write(), fmt::BasicWriter< Char >::write_decimal(), fmt::BasicWriter< Char >::write_double(), fmt::BasicWriter< Char >::write_int(), utility::json_spirit::write_stream(), numeric::write_tensor_to_file(), and zinc2_homodimer_setup::zinc2_homodimer_setup().

rule<Scanner> xml_schema_tag