diff options
author | 2020-07-28 20:42:11 +0200 | |
---|---|---|
committer | 2020-07-28 20:42:13 +0200 | |
commit | c00cbad238a86afd03dcc458b679737530d067c3 (patch) | |
tree | 7c42f201a4981e9555548d5254c421b80718d743 | |
parent | 45713f390cefd502a8f0d21f6f844c54ddb9cb1a (diff) |
netlist: Add a missing directive to the file parser.
-rw-r--r-- | src/lib/netlist/nl_parser.cpp | 18 | ||||
-rw-r--r-- | src/lib/netlist/nl_parser.h | 4 |
2 files changed, 20 insertions, 2 deletions
diff --git a/src/lib/netlist/nl_parser.cpp b/src/lib/netlist/nl_parser.cpp index 7c0ad9e7ff7..e23e5f9f89b 100644 --- a/src/lib/netlist/nl_parser.cpp +++ b/src/lib/netlist/nl_parser.cpp @@ -36,6 +36,7 @@ bool parser_t::parse(const pstring &nlname) m_tok_DEFPARAM = register_token("DEFPARAM"); m_tok_HINT = register_token("HINT"); m_tok_NET_MODEL = register_token("NET_MODEL"); + m_tok_NET_REGISTER_DEV = register_token("NET_REGISTER_DEV"); m_tok_INCLUDE = register_token("INCLUDE"); m_tok_LOCAL_SOURCE = register_token("LOCAL_SOURCE"); m_tok_LOCAL_LIB_ENTRY = register_token("LOCAL_LIB_ENTRY"); @@ -136,6 +137,10 @@ void parser_t::parse_netlist(const pstring &nlname) m_setup.register_lib_entry(get_identifier(), "", plib::source_location("parser: " + nlname, 1)); require_token(m_tok_paren_right); } + else if (token.is(m_tok_NET_REGISTER_DEV)) + { + net_register_dev(); + } else if (token.is(m_tok_NETLIST_END)) { netdev_netlist_end(); @@ -199,7 +204,7 @@ void parser_t::net_truthtable_start(const pstring &nlname) require_token(m_tok_paren_left); require_token(m_tok_paren_right); // FIXME: proper location - m_setup.truthtable_create(desc, "+" + def_param, plib::source_location(nlname, 1)); + m_setup.truthtable_create(desc, def_param, plib::source_location(nlname, 1)); return; } } @@ -382,6 +387,17 @@ void parser_t::netdev_hint() require_token(m_tok_paren_right); } +void parser_t::net_register_dev() +{ + require_token(m_tok_paren_left); + pstring type(get_identifier()); + require_token(m_tok_comma); + pstring name(get_identifier()); + require_token(m_tok_paren_right); + + m_setup.register_dev(type, name); +} + void parser_t::device(const pstring &dev_type) { std::vector<pstring> params; diff --git a/src/lib/netlist/nl_parser.h b/src/lib/netlist/nl_parser.h index 4f7bc012d43..1ad6a5a3c95 100644 --- a/src/lib/netlist/nl_parser.h +++ b/src/lib/netlist/nl_parser.h @@ -23,7 +23,7 @@ namespace netlist { } - bool parse(const pstring &nlname = ""); + bool parse(const pstring &nlname); protected: void parse_netlist(const pstring &nlname); @@ -40,6 +40,7 @@ namespace netlist void net_submodel(); void net_include(); void net_local_source(); + void net_register_dev(); void net_truthtable_start(const pstring &nlname); void verror(const pstring &msg) override; @@ -56,6 +57,7 @@ namespace netlist token_id_t m_tok_DEFPARAM; token_id_t m_tok_HINT; token_id_t m_tok_NET_MODEL; + token_id_t m_tok_NET_REGISTER_DEV; token_id_t m_tok_NETLIST_START; token_id_t m_tok_NETLIST_END; token_id_t m_tok_SUBMODEL; |