void parser_t::net_truthtable_start(const pstring &nlname) { pstring name = get_identifier(); require_token(m_tok_comma); long ni = get_number_long(); require_token(m_tok_comma); long no = get_number_long(); require_token(m_tok_comma); pstring def_param = get_string(); require_token(m_tok_param_right); netlist::tt_desc desc; desc.classname = name; desc.name = name; desc.ni = static_cast<unsigned long>(ni); desc.no = static_cast<unsigned long>(no); desc.def_param = "+" + def_param; desc.family = ""; while (true) { token_t token = get_token(); if (token.is(m_tok_TT_HEAD)) { require_token(m_tok_param_left); desc.desc.push_back(get_string()); require_token(m_tok_param_right); } else if (token.is(m_tok_TT_LINE)) { require_token(m_tok_param_left); desc.desc.push_back(get_string()); require_token(m_tok_param_right); } else if (token.is(m_tok_TT_FAMILY)) { require_token(m_tok_param_left); desc.family = get_string(); require_token(m_tok_param_right); } else { require_token(token, m_tok_TRUTHTABLE_END); require_token(m_tok_param_left); require_token(m_tok_param_right); m_setup.tt_factory_create(desc, nlname); return; } } }
void parser_t::net_truthtable_start() { pstring name = get_identifier(); require_token(m_tok_comma); unsigned ni = get_number_long(); require_token(m_tok_comma); unsigned no = get_number_long(); require_token(m_tok_comma); unsigned hs = get_number_long(); require_token(m_tok_comma); pstring def_param = get_string(); require_token(m_tok_param_right); netlist::devices::netlist_base_factory_truthtable_t *ttd = netlist::devices::nl_tt_factory_create(ni, no, hs, name, name, "+" + def_param); while (true) { token_t token = get_token(); if (token.is(m_tok_TT_HEAD)) { require_token(m_tok_param_left); ttd->m_desc.add(get_string()); require_token(m_tok_param_right); } else if (token.is(m_tok_TT_LINE)) { require_token(m_tok_param_left); ttd->m_desc.add(get_string()); require_token(m_tok_param_right); } else if (token.is(m_tok_TT_FAMILY)) { require_token(m_tok_param_left); ttd->m_family = netlist::logic_family_desc_t::from_model(m_setup.get_model_str(get_string())); require_token(m_tok_param_right); } else { require_token(token, m_tok_TRUTHTABLE_END); require_token(m_tok_param_left); require_token(m_tok_param_right); m_setup.factory().register_device(ttd); return; } } }