X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;ds=sidebyside;f=parse_sv.py;h=02f315dc88117633b8b14d8c4865ccbff999e9a5;hb=651baa08ef15d54e85f8e5080e39c829c5f6d3a9;hp=3df4571b0d97e040d9b39a2b00dbfb3c6a4959cb;hpb=26277f5a20d201ac895bccf941d17bc7e28c3596;p=sv2nmigen.git diff --git a/parse_sv.py b/parse_sv.py index 3df4571..02f315d 100644 --- a/parse_sv.py +++ b/parse_sv.py @@ -23,8 +23,8 @@ from lib2to3.pytree import Node, Leaf from lib2to3.pgen2 import token from lib2to3.pygram import python_symbols as syms -yacc1_debug = 0 -yacc2_debug = 0 +yacc1_debug = 1 +yacc2_debug = 1 parse_debug = 1 from ply import yacc, lex @@ -109,18 +109,6 @@ class DataType: self.typ = typ self.signed = signed -def port_decl(comment, dt, name): - if dt is None or dt.dims is None: - width = '' # width: 1 - else: - width = dt.dims - # XXX TODO, better checking, should be using data structure... *sigh* - width = width[1:-1] # strip brackets - width = width.split(':') - assert width[0] == '0' - width = width[1] - return 'self.%s = Signal(%s) # %s' % (name, width, comment) - # -------------- RULES ---------------- () def p_source_text_1(p): @@ -4758,9 +4746,8 @@ def p_list_of_port_declarations_5(p): def p_port_declaration_1(p): '''port_declaration : attribute_list_opt K_input net_type_opt data_type_or_implicit IDENTIFIER dimensions_opt ''' if(parse_debug): print('port_declaration_1 FIXME', list(p)) - # XXX TODO: python AST comment, dt, name = p[2], p[4], p[5] - p[0] = port_decl(comment, dt, name) + p[0] = absyn.port_decl(comment, dt, name) # { Module::port_t*ptmp; # perm_string name = lex_strings.make(p[5]); # data_type_t*use_type = p[4]; @@ -4831,9 +4818,8 @@ def p_port_declaration_4(p): def p_port_declaration_5(p): '''port_declaration : attribute_list_opt K_output net_type_opt data_type_or_implicit IDENTIFIER dimensions_opt ''' if(parse_debug): print('port_declaration_5 FIXME', list(p)) - # XXX TODO: python AST comment, dt, name = p[2], p[4], p[5] - p[0] = port_decl(comment, dt, name) + p[0] = absyn.port_decl(comment, dt, name) # { Module::port_t*ptmp; # perm_string name = lex_strings.make(p[5]); # data_type_t*use_dtype = p[4];