summaryrefslogtreecommitdiffstatshomepage
path: root/src/emu/netlist/nl_parser.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/emu/netlist/nl_parser.h')
-rw-r--r--src/emu/netlist/nl_parser.h424
1 files changed, 212 insertions, 212 deletions
diff --git a/src/emu/netlist/nl_parser.h b/src/emu/netlist/nl_parser.h
index 1f0905bfbdf..c9e0608d4ba 100644
--- a/src/emu/netlist/nl_parser.h
+++ b/src/emu/netlist/nl_parser.h
@@ -12,129 +12,129 @@
class ptokenizer
{
- NETLIST_PREVENT_COPYING(ptokenizer)
+ NETLIST_PREVENT_COPYING(ptokenizer)
public:
- virtual ~ptokenizer() {}
-
- ptokenizer()
- : m_line(1), m_line_ptr(NULL), m_px(NULL)
- {}
-
- enum token_type
- {
- IDENTIFIER,
- NUMBER,
- TOKEN,
- STRING,
- COMMENT,
- UNKNOWN,
- ENDOFFILE,
- };
-
- struct token_id_t
- {
- public:
- token_id_t() : m_id(-2) {}
- token_id_t(const int id) : m_id(id) {}
- const int id() const { return m_id; }
- private:
- int m_id;
- };
-
- struct token_t
- {
- token_t() {};
- token_t(token_type type)
- {
- m_type = type;
- m_id = token_id_t(-1);
- m_token ="";
- }
- token_t(token_type type, const pstring str)
- {
- m_type = type;
- m_id = token_id_t(-1);
- m_token = str;
- }
- token_t(const token_id_t id, const pstring str)
- {
- m_type = TOKEN;
- m_id = id;
- m_token = str;
- }
-
- bool is(const token_id_t &tok_id) const { return m_id.id() == tok_id.id(); }
- bool is_not(const token_id_t &tok_id) const { return !is(tok_id); }
-
- bool is_type(const token_type type) const { return m_type == type; }
-
- pstring str() const { return m_token; }
-
- private:
- token_type m_type;
- token_id_t m_id;
- pstring m_token;
- };
-
-
- int currentline_no() { return m_line; }
- pstring currentline_str();
-
- /* tokenizer stuff follows ... */
-
- token_t get_token();
- pstring get_string();
- pstring get_identifier();
-
- void require_token(const token_id_t &token_num);
- void require_token(const token_t tok, const token_id_t &token_num);
-
- token_id_t register_token(pstring token)
- {
- m_tokens.add(token);
- return token_id_t(m_tokens.count() - 1);
- }
-
- void set_identifier_chars(pstring s) { m_identifier_chars = s; }
- void set_number_chars(pstring s) { m_number_chars = s; }
- void set_whitespace(pstring s) { m_whitespace = s; }
- void set_comment(pstring start, pstring end, pstring line)
- {
- m_tok_comment_start = register_token(start);
- m_tok_comment_end = register_token(end);
- m_tok_line_comment = register_token(line);
- m_string = '"';
- }
-
- token_t get_token_internal();
- void error(const char *format, ...) ATTR_PRINTF(2,3);
+ virtual ~ptokenizer() {}
+
+ ptokenizer()
+ : m_line(1), m_line_ptr(NULL), m_px(NULL)
+ {}
+
+ enum token_type
+ {
+ IDENTIFIER,
+ NUMBER,
+ TOKEN,
+ STRING,
+ COMMENT,
+ UNKNOWN,
+ ENDOFFILE,
+ };
+
+ struct token_id_t
+ {
+ public:
+ token_id_t() : m_id(-2) {}
+ token_id_t(const int id) : m_id(id) {}
+ const int id() const { return m_id; }
+ private:
+ int m_id;
+ };
+
+ struct token_t
+ {
+ token_t() {};
+ token_t(token_type type)
+ {
+ m_type = type;
+ m_id = token_id_t(-1);
+ m_token ="";
+ }
+ token_t(token_type type, const pstring str)
+ {
+ m_type = type;
+ m_id = token_id_t(-1);
+ m_token = str;
+ }
+ token_t(const token_id_t id, const pstring str)
+ {
+ m_type = TOKEN;
+ m_id = id;
+ m_token = str;
+ }
+
+ bool is(const token_id_t &tok_id) const { return m_id.id() == tok_id.id(); }
+ bool is_not(const token_id_t &tok_id) const { return !is(tok_id); }
+
+ bool is_type(const token_type type) const { return m_type == type; }
+
+ pstring str() const { return m_token; }
+
+ private:
+ token_type m_type;
+ token_id_t m_id;
+ pstring m_token;
+ };
+
+
+ int currentline_no() { return m_line; }
+ pstring currentline_str();
+
+ /* tokenizer stuff follows ... */
+
+ token_t get_token();
+ pstring get_string();
+ pstring get_identifier();
+
+ void require_token(const token_id_t &token_num);
+ void require_token(const token_t tok, const token_id_t &token_num);
+
+ token_id_t register_token(pstring token)
+ {
+ m_tokens.add(token);
+ return token_id_t(m_tokens.count() - 1);
+ }
+
+ void set_identifier_chars(pstring s) { m_identifier_chars = s; }
+ void set_number_chars(pstring s) { m_number_chars = s; }
+ void set_whitespace(pstring s) { m_whitespace = s; }
+ void set_comment(pstring start, pstring end, pstring line)
+ {
+ m_tok_comment_start = register_token(start);
+ m_tok_comment_end = register_token(end);
+ m_tok_line_comment = register_token(line);
+ m_string = '"';
+ }
+
+ token_t get_token_internal();
+ void error(const char *format, ...) ATTR_PRINTF(2,3);
protected:
- void reset(const char *p) { m_px = p; m_line = 1; m_line_ptr = p; }
- virtual void verror(pstring msg, int line_num, pstring line) = 0;
+ void reset(const char *p) { m_px = p; m_line = 1; m_line_ptr = p; }
+ virtual void verror(pstring msg, int line_num, pstring line) = 0;
private:
- void skipeol();
+ void skipeol();
- unsigned char getc();
- void ungetc();
- bool eof() { return *m_px == 0; }
+ unsigned char getc();
+ void ungetc();
+ bool eof() { return *m_px == 0; }
- int m_line;
- const char * m_line_ptr;
- const char * m_px;
+ int m_line;
+ const char * m_line_ptr;
+ const char * m_px;
- /* tokenizer stuff follows ... */
+ /* tokenizer stuff follows ... */
- pstring m_identifier_chars;
- pstring m_number_chars;
- netlist_list_t<pstring> m_tokens;
- pstring m_whitespace;
- char m_string;
+ pstring m_identifier_chars;
+ pstring m_number_chars;
+ netlist_list_t<pstring> m_tokens;
+ pstring m_whitespace;
+ char m_string;
- token_id_t m_tok_comment_start;
- token_id_t m_tok_comment_end;
- token_id_t m_tok_line_comment;
+ token_id_t m_tok_comment_start;
+ token_id_t m_tok_comment_end;
+ token_id_t m_tok_line_comment;
};
class netlist_parser : public ptokenizer
@@ -146,131 +146,131 @@ public:
bool parse(const char *buf, const pstring nlname = "");
- void parse_netlist(const pstring &nlname);
+ void parse_netlist(const pstring &nlname);
void net_alias();
void netdev_param();
void net_c();
void device(const pstring &dev_type);
- void netdev_netlist_start();
- void netdev_netlist_end();
- void net_model();
- void net_submodel();
- void net_include();
+ void netdev_netlist_start();
+ void netdev_netlist_end();
+ void net_model();
+ void net_submodel();
+ void net_include();
protected:
- virtual void verror(pstring msg, int line_num, pstring line);
+ virtual void verror(pstring msg, int line_num, pstring line);
private:
- double eval_param(const token_t tok);
+ double eval_param(const token_t tok);
- token_id_t m_tok_param_left;
- token_id_t m_tok_param_right;
- token_id_t m_tok_comma;
- token_id_t m_tok_ALIAS;
- token_id_t m_tok_NET_C;
- token_id_t m_tok_PARAM;
- token_id_t m_tok_NET_MODEL;
- token_id_t m_tok_NETLIST_START;
- token_id_t m_tok_NETLIST_END;
- token_id_t m_tok_SUBMODEL;
- token_id_t m_tok_INCLUDE;
+ token_id_t m_tok_param_left;
+ token_id_t m_tok_param_right;
+ token_id_t m_tok_comma;
+ token_id_t m_tok_ALIAS;
+ token_id_t m_tok_NET_C;
+ token_id_t m_tok_PARAM;
+ token_id_t m_tok_NET_MODEL;
+ token_id_t m_tok_NETLIST_START;
+ token_id_t m_tok_NETLIST_END;
+ token_id_t m_tok_SUBMODEL;
+ token_id_t m_tok_INCLUDE;
- netlist_setup_t &m_setup;
+ netlist_setup_t &m_setup;
- const char *m_buf;
+ const char *m_buf;
};
class netlist_source_t
{
public:
- typedef netlist_list_t<netlist_source_t> list_t;
-
- enum source_e
- {
- EMPTY,
- STRING,
- PROC,
- MEMORY
- };
-
- netlist_source_t()
- : m_type(EMPTY),
- m_setup_func(NULL),
- m_setup_func_name(""),
- m_mem(NULL)
- {
- }
-
- netlist_source_t(pstring name, void (*setup_func)(netlist_setup_t &))
- : m_type(PROC),
- m_setup_func(setup_func),
- m_setup_func_name(name),
- m_mem(NULL)
- {
- }
-
- netlist_source_t(const char *mem)
- : m_type(MEMORY),
- m_setup_func(NULL),
- m_setup_func_name(""),
- m_mem(mem)
- {
- }
-
- ~netlist_source_t() { }
-
- bool parse(netlist_setup_t &setup, const pstring name)
- {
- switch (m_type)
- {
- case PROC:
- if (name == m_setup_func_name)
- {
- m_setup_func(setup);
- return true;
- }
- break;
- case MEMORY:
- {
- netlist_parser p(setup);
- return p.parse(m_mem, name);
- }
- break;
- case STRING:
- case EMPTY:
- break;
- }
- return false;
- }
+ typedef netlist_list_t<netlist_source_t> list_t;
+
+ enum source_e
+ {
+ EMPTY,
+ STRING,
+ PROC,
+ MEMORY
+ };
+
+ netlist_source_t()
+ : m_type(EMPTY),
+ m_setup_func(NULL),
+ m_setup_func_name(""),
+ m_mem(NULL)
+ {
+ }
+
+ netlist_source_t(pstring name, void (*setup_func)(netlist_setup_t &))
+ : m_type(PROC),
+ m_setup_func(setup_func),
+ m_setup_func_name(name),
+ m_mem(NULL)
+ {
+ }
+
+ netlist_source_t(const char *mem)
+ : m_type(MEMORY),
+ m_setup_func(NULL),
+ m_setup_func_name(""),
+ m_mem(mem)
+ {
+ }
+
+ ~netlist_source_t() { }
+
+ bool parse(netlist_setup_t &setup, const pstring name)
+ {
+ switch (m_type)
+ {
+ case PROC:
+ if (name == m_setup_func_name)
+ {
+ m_setup_func(setup);
+ return true;
+ }
+ break;
+ case MEMORY:
+ {
+ netlist_parser p(setup);
+ return p.parse(m_mem, name);
+ }
+ break;
+ case STRING:
+ case EMPTY:
+ break;
+ }
+ return false;
+ }
private:
- source_e m_type;
+ source_e m_type;
- void (*m_setup_func)(netlist_setup_t &);
- pstring m_setup_func_name;
- const char *m_mem;
+ void (*m_setup_func)(netlist_setup_t &);
+ pstring m_setup_func_name;
+ const char *m_mem;
};
class netlist_sources_t
{
public:
- void add(netlist_source_t src)
- {
- m_list.add(src);
- }
-
- void parse(netlist_setup_t &setup, const pstring name)
- {
- for (int i=0; i < m_list.count(); i++)
- {
- if (m_list[i].parse(setup, name))
- return;
- }
- setup.netlist().error("unable to find %s in source collection", name.cstr());
- }
+ void add(netlist_source_t src)
+ {
+ m_list.add(src);
+ }
+
+ void parse(netlist_setup_t &setup, const pstring name)
+ {
+ for (int i=0; i < m_list.count(); i++)
+ {
+ if (m_list[i].parse(setup, name))
+ return;
+ }
+ setup.netlist().error("unable to find %s in source collection", name.cstr());
+ }
private:
- netlist_source_t::list_t m_list;
+ netlist_source_t::list_t m_list;
};
#endif /* NL_PARSER_H_ */