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):
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];
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];
()
def p_cont_assign_1(p):
'''cont_assign : lpvalue '=' expression '''
- if(parse_debug): print('cont_assign_1 TODO', list(p))
+ if(parse_debug): print('cont_assign_1', list(p))
+ absyn.cont_assign_1(p)
# { list<PExpr*>*tmp = new list<PExpr*>;
# tmp->push_back(p[1]);
# tmp->push_back(p[3]);