def p__embed0_source_text(p):
'''_embed0_source_text : '''
+
# { pform_set_scope_timescale(yyloc); }
()
if(parse_debug):
print('assignment_pattern_1', list(p))
+
# { PEAssignPattern*tmp = new PEAssignPattern(*p[2]);
# FILE_NAME(tmp, @1);
# delete p[2];
if(parse_debug):
print('assignment_pattern_2', list(p))
+
# { PEAssignPattern*tmp = new PEAssignPattern;
# FILE_NAME(tmp, @1);
# p[0] = tmp;
if(parse_debug):
print('class_declaration_1', list(p))
+
# { // Wrap up the class.
# if (p[11] && p[4] && p[4]->name != p[11]) {
# yyerror(@11, "error: Class end label doesn't match class name.");
def p__embed0_class_declaration(p):
'''_embed0_class_declaration : '''
+
# { pform_start_class_declaration(@2, p[4], p[5].type, p[5].exprs, p[3]); }
()
def p__embed1_class_declaration(p):
'''_embed1_class_declaration : '''
+
# { // Process a class.
# pform_end_class_declaration(@9);
# }
if(parse_debug):
print('class_identifier_1', list(p))
+
# { // Create a synthetic typedef for the class name so that the
# // lexor detects the name as a type.
# perm_string name = lex_strings.make(p[1]);
if(parse_debug):
print('class_identifier_2', list(p))
+
# { class_type_t*tmp = dynamic_cast<class_type_t*>(p[1].type);
# if (tmp == 0) {
# yyerror(@1, "Type name \"%s\"is not a predeclared class name.", p[1].text);
if(parse_debug):
print('class_declaration_endlabel_opt_1', list(p))
+
# { class_type_t*tmp = dynamic_cast<class_type_t*> (p[2].type);
# if (tmp == 0) {
# yyerror(@2, "error: class declaration endlabel \"%s\" is not a class name\n", p[2].text);
if(parse_debug):
print('class_declaration_endlabel_opt_3', list(p))
+
# { p[0] = None }
()
if(parse_debug):
print('class_declaration_extends_opt_1', list(p))
+
# { p[0].type = p[2].type;
# p[0].exprs= 0;
# delete[]p[2].text;
if(parse_debug):
print('class_declaration_extends_opt_2', list(p))
+
# { p[0].type = p[2].type;
# p[0].exprs = p[4];
# delete[]p[2].text;
if(parse_debug):
print('class_declaration_extends_opt_3', list(p))
+
# { p[0].type = 0; p[0].exprs = 0; }
()
if(parse_debug):
print('class_item_1', list(p))
+
# { current_function->set_ports(p[6]);
# pform_set_constructor_return(current_function);
# pform_set_this_class(@3, current_function);
if(parse_debug):
print('class_item_2', list(p))
+
# { pform_class_property(@2, p[1], p[2], p[3]); }
()
if(parse_debug):
print('class_item_3', list(p))
+
# { pform_class_property(@1, p[2] | property_qualifier_t::make_const(), p[3], p[4]); }
()
if(parse_debug):
print('class_item_4', list(p))
+
# { /* The task_declaration rule puts this into the class */ }
()
if(parse_debug):
print('class_item_5', list(p))
+
# { /* The function_declaration rule puts this into the class */ }
()
if(parse_debug):
print('class_item_6', list(p))
+
# { yyerror(@1, "sorry: External constructors are not yet supported."); }
()
if(parse_debug):
print('class_item_7', list(p))
+
# { yyerror(@1, "sorry: External constructors are not yet supported."); }
()
if(parse_debug):
print('class_item_8', list(p))
+
# { yyerror(@1, "sorry: External methods are not yet supported.");
# delete[] p[5];
# }
if(parse_debug):
print('class_item_9', list(p))
+
# { yyerror(@1, "sorry: External methods are not yet supported.");
# delete[] p[5];
# }
if(parse_debug):
print('class_item_10', list(p))
+
# { yyerror(@1, "sorry: External methods are not yet supported.");
# delete[] p[4];
# }
if(parse_debug):
print('class_item_11', list(p))
+
# { yyerror(@1, "sorry: External methods are not yet supported.");
# delete[] p[4];
# }
if(parse_debug):
print('class_item_13', list(p))
+
# { yyerror(@3, "error: Errors in variable names after data type.");
# yyerrok;
# }
if(parse_debug):
print('class_item_14', list(p))
+
# { yyerror(@3, "error: %s doesn't name a type.", p[2]);
# yyerrok;
# }
if(parse_debug):
print('class_item_15', list(p))
+
# { yyerror(@1, "error: I give up on this class constructor declaration.");
# yyerrok;
# }
if(parse_debug):
print('class_item_16', list(p))
+
# { yyerror(@2, "error: invalid class item.");
# yyerrok;
# }
def p__embed0_class_item(p):
'''_embed0_class_item : '''
+
# { assert(current_function==0);
# current_function = pform_push_constructor_scope(@3);
# }
if(parse_debug):
print('class_item_qualifier_1', list(p))
+
# { p[0] = property_qualifier_t::make_static(); }
()
if(parse_debug):
print('class_item_qualifier_2', list(p))
+
# { p[0] = property_qualifier_t::make_protected(); }
()
if(parse_debug):
print('class_item_qualifier_3', list(p))
+
# { p[0] = property_qualifier_t::make_local(); }
()
if(parse_debug):
print('class_item_qualifier_list_1', list(p))
+
# { p[0] = p[1] | p[2]; }
()
if(parse_debug):
print('class_item_qualifier_opt_2', list(p))
+
# { p[0] = property_qualifier_t::make_none(); }
()
if(parse_debug):
print('class_new_1', list(p))
+
# { list<PExpr*>*expr_list = p[3];
# strip_tail_items(expr_list);
# PENewClass*tmp = new PENewClass(*expr_list);
if(parse_debug):
print('class_new_2', list(p))
+
# { PEIdent*tmpi = new PEIdent(*p[2]);
# FILE_NAME(tmpi, @2);
# PENewCopy*tmp = new PENewCopy(tmpi);
if(parse_debug):
print('class_new_3', list(p))
+
# { PENewClass*tmp = new PENewClass;
# FILE_NAME(tmp, @1);
# p[0] = tmp;
if(parse_debug):
print('concurrent_assertion_item_1', list(p))
+
# { /* */
# if (gn_assertions_flag) {
# yyerror(@2, "sorry: concurrent_assertion_item not supported."
if(parse_debug):
print('concurrent_assertion_item_2', list(p))
+
# { yyerrok;
# yyerror(@2, "error: Error in property_spec of concurrent assertion item.");
# }
if(parse_debug):
print('constraint_declaration_1', list(p))
+
# { yyerror(@2, "sorry: Constraint declarations not supported."); }
()
if(parse_debug):
print('constraint_declaration_2', list(p))
+
# { yyerror(@4, "error: Errors in the constraint block item list."); }
()
if(parse_debug):
print('constraint_prototype_1', list(p))
+
# { yyerror(@2, "sorry: Constraint prototypes not supported."); }
()
if(parse_debug):
print('data_declaration_1', list(p))
+
# { data_type_t*data_type = p[2];
# if (data_type == 0) {
# data_type = new vector_type_t(IVL_VT_LOGIC, false, 0);
dt.reg_flag = reg_flag
p[0] = dt
+
# { ivl_variable_type_t use_vtype = p[1];
# bool reg_flag = false;
# if (use_vtype == IVL_VT_NO_TYPE) {
print('data_type_2', list(p))
p[0] = p[1]
+
# { real_type_t*tmp = new real_type_t(p[1]);
# FILE_NAME(tmp, @1);
# p[0] = tmp;
print('data_type_3', list(p))
p[0] = p[1]
+
# { if (!p[1]->packed_flag) {
# yyerror(@1, "sorry: Unpacked structs not supported.");
# }
if(parse_debug):
print('data_type_5', list(p))
+
# { atom2_type_t*tmp = new atom2_type_t(p[1], p[2]);
# FILE_NAME(tmp, @1);
# p[0] = tmp;
if(parse_debug):
print('data_type_6', list(p))
+
# { list<pform_range_t>*pd = make_range_from_width(integer_width);
# vector_type_t*tmp = new vector_type_t(IVL_VT_LOGIC, p[2], pd);
# tmp->reg_flag = true;
if(parse_debug):
print('data_type_7', list(p))
+
# { list<pform_range_t>*pd = make_range_from_width(64);
# vector_type_t*tmp = new vector_type_t(IVL_VT_LOGIC, false, pd);
# tmp->reg_flag = !gn_system_verilog();
if(parse_debug):
print('data_type_8', list(p))
+
# { if (p[2]) {
# parray_type_t*tmp = new parray_type_t(p[1].type, p[2]);
# FILE_NAME(tmp, @1);
if(parse_debug):
print('data_type_9', list(p))
+
# { lex_in_package_scope(0);
# p[0] = p[4].type;
# delete[]p[4].text;
if(parse_debug):
print('data_type_10', list(p))
+
# { string_type_t*tmp = new string_type_t;
# FILE_NAME(tmp, @1);
# p[0] = tmp;
def p__embed0_data_type(p):
'''_embed0_data_type : '''
+
# { lex_in_package_scope(p[1]); }
()
if(parse_debug):
print('data_type_or_implicit_2', list(p))
+
# { vector_type_t*tmp = new vector_type_t(IVL_VT_LOGIC, p[1], p[2]);
# tmp->implicit_flag = true;
# FILE_NAME(tmp, @1);
print('data_type_or_implicit_3', list(p))
p[0] = list(p)
+
# { vector_type_t*tmp = new vector_type_t(IVL_VT_LOGIC, false, p[1]);
# tmp->implicit_flag = true;
# FILE_NAME(tmp, @1);
if(parse_debug > 2):
print('data_type_or_implicit_4', list(p))
+
# { p[0] = None }
()
if(parse_debug):
print('data_type_or_implicit_or_void_2', list(p))
+
# { void_type_t*tmp = new void_type_t;
# FILE_NAME(tmp, @1);
# p[0] = tmp;
if(parse_debug):
print('description_8', list(p))
+
# { perm_string tmp3 = lex_strings.make(p[3]);
# pform_set_type_attrib(tmp3, p[5], p[7]);
# delete[] p[3];
if(parse_debug):
print('dynamic_array_new_1', list(p))
+
# { p[0] = new PENewArray(p[3], 0);
# FILE_NAME(p[0], @1);
# }
if(parse_debug):
print('dynamic_array_new_2', list(p))
+
# { p[0] = new PENewArray(p[3], p[6]);
# FILE_NAME(p[0], @1);
# }
if(parse_debug):
print('for_step_1', list(p))
+
# { PAssign*tmp = new PAssign(p[1],p[3]);
# FILE_NAME(tmp, @1);
# p[0] = tmp;
if(parse_debug):
print('for_step_2', list(p))
+
# { p[0] = pform_compressed_assign_from_inc_dec(@1, p[1]); }
()
if(parse_debug):
print('function_declaration_1', list(p))
+
# { // Last step: check any closing name.
# if (p[11]) {
# if (strcmp(p[4],p[11]) != 0) {
if(parse_debug):
print('function_declaration_2', list(p))
+
# { // Last step: check any closing name.
# if (p[14]) {
# if (strcmp(p[4],p[14]) != 0) {
if(parse_debug):
print('function_declaration_3', list(p))
+
# { // Last step: check any closing name.
# if (p[8]) {
# if (strcmp(p[4],p[8]) != 0) {
def p__embed0_function_declaration(p):
'''_embed0_function_declaration : '''
+
# { assert(current_function == 0);
# current_function = pform_push_function_scope(@1, p[4], p[2]);
# }
def p__embed1_function_declaration(p):
'''_embed1_function_declaration : '''
+
# { current_function->set_ports(p[7]);
# current_function->set_return(p[3]);
# current_function_set_statement(p[8]? @8 : @4, p[8]);
def p__embed2_function_declaration(p):
'''_embed2_function_declaration : '''
+
# { assert(current_function == 0);
# current_function = pform_push_function_scope(@1, p[4], p[2]);
# }
def p__embed3_function_declaration(p):
'''_embed3_function_declaration : '''
+
# { current_function->set_ports(p[7]);
# current_function->set_return(p[3]);
# current_function_set_statement(p[11]? @11 : @4, p[11]);
def p__embed4_function_declaration(p):
'''_embed4_function_declaration : '''
+
# { /* */
# if (current_function) {
# pform_pop_scope();
if(parse_debug):
print('implicit_class_handle_1', list(p))
+
# { p[0] = pform_create_this(); }
()
if(parse_debug):
print('implicit_class_handle_2', list(p))
+
# { p[0] = pform_create_super(); }
()
if(parse_debug):
print('inc_or_dec_expression_1', list(p))
+
# { PEUnary*tmp = new PEUnary('I', p[2]);
# FILE_NAME(tmp, @2);
# p[0] = tmp;
if(parse_debug):
print('inc_or_dec_expression_2', list(p))
+
# { PEUnary*tmp = new PEUnary('i', p[1]);
# FILE_NAME(tmp, @1);
# p[0] = tmp;
if(parse_debug):
print('inc_or_dec_expression_3', list(p))
+
# { PEUnary*tmp = new PEUnary('D', p[2]);
# FILE_NAME(tmp, @2);
# p[0] = tmp;
if(parse_debug):
print('inc_or_dec_expression_4', list(p))
+
# { PEUnary*tmp = new PEUnary('d', p[1]);
# FILE_NAME(tmp, @1);
# p[0] = tmp;
if(parse_debug):
print('inside_expression_1', list(p))
+
# { yyerror(@2, "sorry: \"inside\" expressions not supported yet.");
# p[0] = None
# }
if(parse_debug):
print('integer_vector_type_4', list(p))
+
# { p[0] = IVL_VT_BOOL; }
()
if(parse_debug):
print('join_keyword_1', list(p))
+
# { p[0] = PBlock::BL_PAR; }
()
if(parse_debug):
print('join_keyword_2', list(p))
+
# { p[0] = PBlock::BL_JOIN_NONE; }
()
if(parse_debug):
print('join_keyword_3', list(p))
+
# { p[0] = PBlock::BL_JOIN_ANY; }
()
if(parse_debug):
print('jump_statement_1', list(p))
+
# { yyerror(@1, "sorry: break statements not supported.");
# p[0] = None
# }
if(parse_debug):
print('jump_statement_2', list(p))
+
# { PReturn*tmp = new PReturn(0);
# FILE_NAME(tmp, @1);
# p[0] = tmp;
if(parse_debug):
print('jump_statement_3', list(p))
+
# { PReturn*tmp = new PReturn(p[2]);
# FILE_NAME(tmp, @1);
# p[0] = tmp;
if(parse_debug):
print('lifetime_1', list(p))
+
# { p[0] = LexicalScope::AUTOMATIC; }
()
if(parse_debug):
print('lifetime_2', list(p))
+
# { p[0] = LexicalScope::STATIC; }
()
if(parse_debug > 2):
print('lifetime_opt_2', list(p))
+
# { p[0] = LexicalScope::INHERITED; }
()
if(parse_debug):
print('loop_statement_1', list(p))
+
# { PForStatement*tmp = new PForStatement(p[3], p[5], p[7], p[9], p[11]);
# FILE_NAME(tmp, @1);
# p[0] = tmp;
if(parse_debug):
print('loop_statement_2', list(p))
+
# { pform_name_t tmp_hident;
# tmp_hident.push_back(name_component_t(lex_strings.make(p[4])));
#
if(parse_debug):
print('loop_statement_3', list(p))
+
# { PForever*tmp = new PForever(p[2]);
# FILE_NAME(tmp, @1);
# p[0] = tmp;
if(parse_debug):
print('loop_statement_4', list(p))
+
# { PRepeat*tmp = new PRepeat(p[3], p[5]);
# FILE_NAME(tmp, @1);
# p[0] = tmp;
if(parse_debug):
print('loop_statement_5', list(p))
+
# { PWhile*tmp = new PWhile(p[3], p[5]);
# FILE_NAME(tmp, @1);
# p[0] = tmp;
if(parse_debug):
print('loop_statement_6', list(p))
+
# { PDoWhile*tmp = new PDoWhile(p[5], p[2]);
# FILE_NAME(tmp, @1);
# p[0] = tmp;
if(parse_debug):
print('loop_statement_7', list(p))
+
# { PForeach*tmp_for = pform_make_foreach(@1, p[3], p[5], p[9]);
#
# pform_pop_scope();
if(parse_debug):
print('loop_statement_8', list(p))
+
# { p[0] = None
# yyerror(@1, "error: Error in for loop step assignment.");
# }
if(parse_debug):
print('loop_statement_9', list(p))
+
# { p[0] = None
# yyerror(@1, "error: Error in for loop condition expression.");
# }
if(parse_debug):
print('loop_statement_10', list(p))
+
# { p[0] = None
# yyerror(@1, "error: Incomprehensible for loop.");
# }
if(parse_debug):
print('loop_statement_11', list(p))
+
# { p[0] = None
# yyerror(@1, "error: Error in while loop condition.");
# }
if(parse_debug):
print('loop_statement_12', list(p))
+
# { p[0] = None
# yyerror(@1, "error: Error in do/while loop condition.");
# }
if(parse_debug):
print('loop_statement_13', list(p))
+
# { p[0] = None
# yyerror(@4, "error: Errors in foreach loop variables list.");
# }
def p__embed0_loop_statement(p):
'''_embed0_loop_statement : '''
+
# { static unsigned for_counter = 0;
# char for_block_name [64];
# snif(parse_debug): printf(for_block_name, sizeof for_block_name, "$ivl_for_loop%u", for_counter);
def p__embed1_loop_statement(p):
'''_embed1_loop_statement : '''
+
# { static unsigned foreach_counter = 0;
# char for_block_name[64];
# snif(parse_debug): printf(for_block_name, sizeof for_block_name, "$ivl_foreach%u", foreach_counter);
if(parse_debug):
print('list_of_variable_decl_assignments_1', list(p))
+
# { list<decl_assignment_t*>*tmp = new list<decl_assignment_t*>;
# tmp->push_back(p[1]);
# p[0] = tmp;
if(parse_debug):
print('list_of_variable_decl_assignments_2', list(p))
+
# { list<decl_assignment_t*>*tmp = p[1];
# tmp->push_back(p[3]);
# p[0] = tmp;
if(parse_debug):
print('variable_decl_assignment_1', list(p))
+
# { decl_assignment_t*tmp = new decl_assignment_t;
# tmp->name = lex_strings.make(p[1]);
# if (p[2]) {
if(parse_debug):
print('variable_decl_assignment_2', list(p))
+
# { decl_assignment_t*tmp = new decl_assignment_t;
# tmp->name = lex_strings.make(p[1]);
# tmp->expr .reset(p[3]);
if(parse_debug):
print('variable_decl_assignment_3', list(p))
+
# { decl_assignment_t*tmp = new decl_assignment_t;
# tmp->name = lex_strings.make(p[1]);
# PENewClass*expr = new PENewClass;
if(parse_debug):
print('loop_variables_1', list(p))
+
# { list<perm_string>*tmp = p[1];
# tmp->push_back(lex_strings.make(p[3]));
# delete[]p[3];
if(parse_debug):
print('loop_variables_2', list(p))
+
# { list<perm_string>*tmp = new list<perm_string>;
# tmp->push_back(lex_strings.make(p[1]));
# delete[]p[1];
def p__embed0_modport_declaration(p):
'''_embed0_modport_declaration : '''
+
# { if (!pform_in_interface())
# yyerror(@1, "error: modport declarations are only allowed "
# "in interfaces.");
if(parse_debug):
print('modport_item_1', list(p))
+
# { pform_end_modport_item(@1); }
()
def p__embed0_modport_item(p):
'''_embed0_modport_item : '''
+
# { pform_start_modport_item(@1, p[1]); }
()
if(parse_debug):
print('modport_ports_list_3', list(p))
+
# { if (last_modport_port.type == MP_SIMPLE) {
# pform_add_modport_port(@3, last_modport_port.direction,
# p[3]->name, p[3]->parm);
if(parse_debug):
print('modport_ports_list_4', list(p))
+
# { if (last_modport_port.type != MP_TF)
# yyerror(@3, "error: task/function declaration not allowed here.");
# }
if(parse_debug):
print('modport_ports_list_5', list(p))
+
# { if (last_modport_port.type == MP_SIMPLE) {
# pform_add_modport_port(@3, last_modport_port.direction,
# lex_strings.make(p[3]), 0);
if(parse_debug):
print('modport_ports_list_6', list(p))
+
# { yyerror(@2, "error: NULL port declarations are not allowed"); }
()
if(parse_debug):
print('modport_ports_declaration_1', list(p))
+
# { last_modport_port.type = MP_SIMPLE;
# last_modport_port.direction = p[2];
# pform_add_modport_port(@3, p[2], lex_strings.make(p[3]), 0);
if(parse_debug):
print('modport_ports_declaration_2', list(p))
+
# { last_modport_port.type = MP_SIMPLE;
# last_modport_port.direction = p[2];
# pform_add_modport_port(@3, p[2], p[3]->name, p[3]->parm);
if(parse_debug):
print('modport_ports_declaration_3', list(p))
+
# { last_modport_port.type = MP_TF;
# last_modport_port.is_import = p[2];
# yyerror(@3, "sorry: modport task/function ports are not yet supported.");
if(parse_debug):
print('modport_ports_declaration_4', list(p))
+
# { last_modport_port.type = MP_TF;
# last_modport_port.is_import = p[2];
# yyerror(@3, "sorry: modport task/function ports are not yet supported.");
if(parse_debug):
print('modport_ports_declaration_5', list(p))
+
# { last_modport_port.type = MP_CLOCKING;
# last_modport_port.direction = NetNet::NOT_A_PORT;
# yyerror(@3, "sorry: modport clocking declaration is not yet supported.");
if(parse_debug):
print('modport_simple_port_1', list(p))
+
# { named_pexpr_t*tmp = new named_pexpr_t;
# tmp->name = lex_strings.make(p[2]);
# tmp->parm = p[4];
if(parse_debug):
print('non_integer_type_1', list(p))
+
# { p[0] = real_type_t::REAL; }
()
if(parse_debug):
print('non_integer_type_2', list(p))
+
# { p[0] = real_type_t::REAL; }
()
if(parse_debug):
print('non_integer_type_3', list(p))
+
# { p[0] = real_type_t::SHORTREAL; }
()
if(parse_debug):
print('number_1', list(p))
+
# { p[0] = p[1]; based_size = 0;}
()
num = Leaf(token.NUMBER, "%s" % (p[1]))
p[0] = num
+
# { p[0] = p[1]; based_size = 0;}
()
num = Leaf(token.NUMBER, "%s:%s" % (p[1], p[2]))
p[0] = num
+
# { p[0] = pform_verinum_with_size(p[1],p[2], @2.text, @2.first_line);
# based_size = 0; }
()
if(parse_debug):
print('number_4', list(p))
+
# { p[0] = p[1]; based_size = 0;}
()
if(parse_debug):
print('number_5', list(p))
+
# { yyerror(@1, "error: Unbased SystemVerilog literal cannot have "
# "a size.");
# p[0] = p[1]; based_size = 0;}
if(parse_debug):
print('package_declaration_1', list(p))
+
# { pform_end_package_declaration(@1);
# // If an end label is present make sure it match the package name.
# if (p[10]) {
def p__embed0_package_declaration(p):
'''_embed0_package_declaration : '''
+
# { pform_start_package_declaration(@1, p[3], p[2]); }
()
def p__embed1_package_declaration(p):
'''_embed1_package_declaration : '''
+
# { pform_set_scope_timescale(@1); }
()
if(parse_debug):
print('package_import_declaration_1', list(p))
+
# { }
()
if(parse_debug):
print('package_import_item_1', list(p))
+
# { pform_package_import(@2, p[1], p[3]);
# delete[]p[3];
# }
if(parse_debug):
print('package_import_item_2', list(p))
+
# { pform_package_import(@2, p[1], 0);
# }
()
if(parse_debug):
print('port_direction_1', list(p))
+
# { p[0] = NetNet::PINPUT; }
()
if(parse_debug):
print('port_direction_2', list(p))
+
# { p[0] = NetNet::POUTPUT; }
()
if(parse_debug):
print('port_direction_3', list(p))
+
# { p[0] = NetNet::PINOUT; }
()
if(parse_debug):
print('port_direction_4', list(p))
+
# { p[0] = NetNet::PREF;
# if (!gn_system_verilog()) {
# yyerror(@1, "error: Reference ports (ref) require SystemVerilog.");
if(parse_debug):
print('port_direction_opt_2', list(p))
+
# { p[0] = NetNet::PIMPLICIT; }
()
if(parse_debug):
print('procedural_assertion_statement_1', list(p))
+
# { yyerror(@1, "sorry: Simple immediate assertion statements not implemented.");
# p[0] = None
# }
if(parse_debug):
print('procedural_assertion_statement_2', list(p))
+
# { yyerror(@1, "sorry: Simple immediate assertion statements not implemented.");
# p[0] = None
# }
if(parse_debug):
print('procedural_assertion_statement_3', list(p))
+
# { yyerror(@1, "sorry: Simple immediate assertion statements not implemented.");
# p[0] = None
# }
if(parse_debug):
print('property_qualifier_opt_2', list(p))
+
# { p[0] = property_qualifier_t::make_none(); }
()
if(parse_debug):
print('property_qualifier_list_1', list(p))
+
# { p[0] = p[1] | p[2]; }
()
if(parse_debug):
print('random_qualifier_1', list(p))
+
# { p[0] = property_qualifier_t::make_rand(); }
()
if(parse_debug):
print('random_qualifier_2', list(p))
+
# { p[0] = property_qualifier_t::make_randc(); }
()
if(parse_debug):
print('simple_type_or_string_1', list(p))
+
# { ivl_variable_type_t use_vtype = p[1];
# bool reg_flag = false;
# if (use_vtype == IVL_VT_NO_TYPE) {
if(parse_debug):
print('simple_type_or_string_2', list(p))
+
# { real_type_t*tmp = new real_type_t(p[1]);
# FILE_NAME(tmp, @1);
# p[0] = tmp;
if(parse_debug):
print('simple_type_or_string_3', list(p))
+
# { atom2_type_t*tmp = new atom2_type_t(p[1], true);
# FILE_NAME(tmp, @1);
# p[0] = tmp;
if(parse_debug):
print('simple_type_or_string_4', list(p))
+
# { list<pform_range_t>*pd = make_range_from_width(integer_width);
# vector_type_t*tmp = new vector_type_t(IVL_VT_LOGIC, true, pd);
# tmp->reg_flag = true;
if(parse_debug):
print('simple_type_or_string_5', list(p))
+
# { list<pform_range_t>*pd = make_range_from_width(64);
# vector_type_t*tmp = new vector_type_t(IVL_VT_LOGIC, false, pd);
# tmp->reg_flag = !gn_system_verilog();
if(parse_debug):
print('simple_type_or_string_6', list(p))
+
# { p[0] = p[1].type;
# delete[]p[1].text;
# }
if(parse_debug):
print('simple_type_or_string_7', list(p))
+
# { lex_in_package_scope(0);
# p[0] = p[4].type;
# delete[]p[4].text;
if(parse_debug):
print('simple_type_or_string_8', list(p))
+
# { string_type_t*tmp = new string_type_t;
# FILE_NAME(tmp, @1);
# p[0] = tmp;
def p__embed0_simple_type_or_string(p):
'''_embed0_simple_type_or_string : '''
+
# { lex_in_package_scope(p[1]); }
()
# { pform_bind_attributes(p[2]->attributes, p[1]);
p[0] = p[2]
-
# }
()
raise(Exception("p_statement_or_null_2"))
+
# { p[0] = None }
()
if(parse_debug):
print('streaming_concatenation_1', list(p))
+
# { /* streaming concatenation is a SystemVerilog thing. */
# if (gn_system_verilog()) {
# yyerror(@2, "sorry: Streaming concatenation not supported.");
if(parse_debug):
print('task_declaration_1', list(p))
+
# { // Last step: check any closing name. This is done late so
# // that the parser can look ahead to detect the present
# // endlabel_opt but still have the pform_endmodule() called
if(parse_debug):
print('task_declaration_2', list(p))
+
# { // Last step: check any closing name. This is done late so
# // that the parser can look ahead to detect the present
# // endlabel_opt but still have the pform_endmodule() called
if(parse_debug):
print('task_declaration_3', list(p))
+
# { // Last step: check any closing name. This is done late so
# // that the parser can look ahead to detect the present
# // endlabel_opt but still have the pform_endmodule() called
if(parse_debug):
print('task_declaration_4', list(p))
+
# { // Last step: check any closing name. This is done late so
# // that the parser can look ahead to detect the present
# // endlabel_opt but still have the pform_endmodule() called
def p__embed0_task_declaration(p):
'''_embed0_task_declaration : '''
+
# { assert(current_task == 0);
# current_task = pform_push_task_scope(@1, p[3], p[2]);
# }
def p__embed1_task_declaration(p):
'''_embed1_task_declaration : '''
+
# { current_task->set_ports(p[6]);
# current_task_set_statement(@3, p[7]);
# pform_set_this_class(@3, current_task);
def p__embed2_task_declaration(p):
'''_embed2_task_declaration : '''
+
# { assert(current_task == 0);
# current_task = pform_push_task_scope(@1, p[3], p[2]);
# }
def p__embed3_task_declaration(p):
'''_embed3_task_declaration : '''
+
# { current_task->set_ports(p[6]);
# current_task_set_statement(@3, p[10]);
# pform_set_this_class(@3, current_task);
def p__embed4_task_declaration(p):
'''_embed4_task_declaration : '''
+
# { assert(current_task == 0);
# current_task = pform_push_task_scope(@1, p[3], p[2]);
# }
def p__embed5_task_declaration(p):
'''_embed5_task_declaration : '''
+
# { current_task->set_ports(0);
# current_task_set_statement(@3, p[9]);
# pform_set_this_class(@3, current_task);
def p__embed6_task_declaration(p):
'''_embed6_task_declaration : '''
+
# {
# if (current_task) {
# pform_pop_scope();
if(parse_debug):
print('tf_port_declaration_1', list(p))
+
# { vector<pform_tf_port_t>*tmp = pform_make_task_ports(@1, p[1],
# p[2] ? IVL_VT_LOGIC :
# IVL_VT_NO_TYPE,
if(parse_debug):
print('tf_port_declaration_2', list(p))
+
# { list<pform_range_t>*range_stub = make_range_from_width(integer_width);
# vector<pform_tf_port_t>*tmp = pform_make_task_ports(@1, p[1], IVL_VT_LOGIC, true,
# range_stub, p[3], true);
if(parse_debug):
print('tf_port_declaration_3', list(p))
+
# { list<pform_range_t>*range_stub = make_range_from_width(64);
# vector<pform_tf_port_t>*tmp = pform_make_task_ports(@1, p[1], IVL_VT_LOGIC, false,
# range_stub, p[3]);
if(parse_debug):
print('tf_port_declaration_4', list(p))
+
# { vector<pform_tf_port_t>*tmp = pform_make_task_ports(@1, p[1], IVL_VT_REAL, true,
# 0, p[3]);
# p[0] = tmp;
if(parse_debug):
print('tf_port_declaration_5', list(p))
+
# { vector<pform_tf_port_t>*tmp = pform_make_task_ports(@1, p[1], IVL_VT_STRING, true,
# 0, p[3]);
# p[0] = tmp;
if(parse_debug):
print('tf_port_item_1', list(p))
+
# { vector<pform_tf_port_t>*tmp;
# NetNet::PortType use_port_type = p[1];
# if ((use_port_type == NetNet::PIMPLICIT) && (gn_system_verilog() || (p[2] == 0)))
if(parse_debug):
print('tf_port_item_2', list(p))
+
# { yyerror(@3, "error: Error in task/function port item after port name %s.", p[3]);
# yyerrok;
# p[0] = None
if(parse_debug):
print('tf_port_item_expr_opt_1', list(p))
+
# { if (! gn_system_verilog()) {
# yyerror(@1, "error: Task/function default arguments require "
# "SystemVerilog.");
if(parse_debug):
print('tf_port_item_expr_opt_2', list(p))
+
# { p[0] = None }
()
def p__embed0_tf_port_list(p):
'''_embed0_tf_port_list : '''
+
# { port_declaration_context.port_type = gn_system_verilog() ? NetNet::PINPUT : NetNet::PIMPLICIT;
# port_declaration_context.data_type = 0;
# }
if(parse_debug):
print('tf_port_item_list_1', list(p))
+
# { vector<pform_tf_port_t>*tmp;
# if (p[1] && p[3]) {
# size_t s1 = p[1]->size();
if(parse_debug):
print('tf_port_item_list_3', list(p))
+
# { yyerror(@2, "error: Syntax error in task/function port declaration.");
# p[0] = p[3];
# }
if(parse_debug):
print('tf_port_item_list_4', list(p))
+
# { yyerror(@2, "error: NULL port declarations are not allowed.");
# p[0] = p[1];
# }
if(parse_debug):
print('tf_port_item_list_5', list(p))
+
# { yyerror(@2, "error: ';' is an invalid port declaration separator.");
# p[0] = p[1];
# }
if(parse_debug):
print('timeunits_declaration_1', list(p))
+
# { pform_set_timeunit(p[2], allow_timeunit_decl); }
()
if(parse_debug):
print('timeunits_declaration_2', list(p))
+
# { bool initial_decl = allow_timeunit_decl && allow_timeprec_decl;
# pform_set_timeunit(p[2], initial_decl);
# pform_set_timeprec(p[4], initial_decl);
if(parse_debug):
print('timeunits_declaration_3', list(p))
+
# { pform_set_timeprec(p[2], allow_timeprec_decl); }
()
if(parse_debug):
print('value_range_1', list(p))
+
# { }
()
if(parse_debug):
print('value_range_2', list(p))
+
# { }
()
if(parse_debug):
print('variable_dimension_2', list(p))
+
# { // SystemVerilog canonical range
# if (!gn_system_verilog()) {
# warn_count += 1;
if(parse_debug):
print('variable_dimension_3', list(p))
+
# { list<pform_range_t> *tmp = new list<pform_range_t>;
# pform_range_t index (0,0);
# tmp->push_back(index);
if(parse_debug):
print('variable_dimension_4', list(p))
+
# { // SystemVerilog queue
# list<pform_range_t> *tmp = new list<pform_range_t>;
# pform_range_t index (new PENull,0);
if(parse_debug):
print('variable_lifetime_1', list(p))
+
# { if (!gn_system_verilog()) {
# yyerror(@1, "error: overriding the default variable lifetime "
# "requires SystemVerilog.");
if(parse_debug > 2):
print('attribute_list_opt_2', list(p))
+
# { p[0] = None }
()
if(parse_debug):
print('attribute_instance_list_1', list(p))
+
# { p[0] = None }
()
if(parse_debug):
print('attribute_instance_list_4', list(p))
+
# { list<named_pexpr_t>*tmp = p[1];
# if (tmp) {
# tmp->splice(tmp->end(), *p[3]);
if(parse_debug):
print('attribute_list_1', list(p))
+
# { list<named_pexpr_t>*tmp = p[1];
# tmp->push_back(*p[3]);
# delete p[3];
if(parse_debug):
print('attribute_list_2', list(p))
+
# { list<named_pexpr_t>*tmp = new list<named_pexpr_t>;
# tmp->push_back(*p[1]);
# delete p[1];
if(parse_debug):
print('attribute_1', list(p))
+
# { named_pexpr_t*tmp = new named_pexpr_t;
# tmp->name = lex_strings.make(p[1]);
# tmp->parm = 0;
if(parse_debug):
print('attribute_2', list(p))
+
# { PExpr*tmp = p[3];
# named_pexpr_t*tmp2 = new named_pexpr_t;
# tmp2->name = lex_strings.make(p[1]);
if(parse_debug):
print('block_item_decl_1', list(p))
+
# { if (p[1]) pform_set_data_type(@1, p[1], p[2], NetNet::REG, attributes_in_context);
# }
()
if(parse_debug):
print('block_item_decl_2', list(p))
+
# { if (p[2]) pform_set_data_type(@2, p[2], p[3], NetNet::REG, attributes_in_context);
# var_lifetime = LexicalScope::INHERITED;
# }
if(parse_debug):
print('block_item_decl_3', list(p))
+
# { if (p[2]) pform_set_data_type(@2, p[2], p[3], NetNet::REG, attributes_in_context);
# }
()
if(parse_debug):
print('block_item_decl_4', list(p))
+
# { if (p[3]) pform_set_data_type(@3, p[3], p[4], NetNet::REG, attributes_in_context);
# var_lifetime = LexicalScope::INHERITED;
# }
if(parse_debug):
print('block_item_decl_5', list(p))
+
# { if (p[2]) pform_make_events(p[2], @1.text, @1.first_line);
# }
()
if(parse_debug):
print('block_item_decl_9', list(p))
+
# { yyerror(@1, "error: syntax error in integer variable list.");
# yyerrok;
# }
if(parse_debug):
print('block_item_decl_10', list(p))
+
# { yyerror(@1, "error: syntax error in time variable list.");
# yyerrok;
# }
if(parse_debug):
print('block_item_decl_11', list(p))
+
# { yyerror(@1, "error: syntax error in parameter list.");
# yyerrok;
# }
if(parse_debug):
print('block_item_decl_12', list(p))
+
# { yyerror(@1, "error: syntax error localparam list.");
# yyerrok;
# }
if(parse_debug):
print('type_declaration_1', list(p))
+
# { perm_string name = lex_strings.make(p[3]);
# pform_set_typedef(name, p[2], p[4]);
# delete[]p[3];
if(parse_debug):
print('type_declaration_2', list(p))
+
# { perm_string name = lex_strings.make(p[3].text);
# if (pform_test_type_identifier_local(name)) {
# yyerror(@3, "error: Typedef identifier \"%s\" is already a type name.", p[3].text);
if(parse_debug):
print('type_declaration_3', list(p))
+
# { // Create a synthetic typedef for the class name so that the
# // lexor detects the name as a type.
# perm_string name = lex_strings.make(p[3]);
if(parse_debug):
print('type_declaration_4', list(p))
+
# { yyerror(@1, "sorry: Enum forward declarations not supported yet."); }
()
if(parse_debug):
print('type_declaration_5', list(p))
+
# { yyerror(@1, "sorry: Struct forward declarations not supported yet."); }
()
if(parse_debug):
print('type_declaration_6', list(p))
+
# { yyerror(@1, "sorry: Union forward declarations not supported yet."); }
()
if(parse_debug):
print('type_declaration_7', list(p))
+
# { // Create a synthetic typedef for the class name so that the
# // lexor detects the name as a type.
# perm_string name = lex_strings.make(p[2]);
if(parse_debug):
print('type_declaration_8', list(p))
+
# { yyerror(@2, "error: Syntax error in typedef clause.");
# yyerrok;
# }
if(parse_debug):
print('enum_data_type_1', list(p))
+
# { enum_type_t*enum_type = new enum_type_t;
# FILE_NAME(enum_type, @1);
# enum_type->names .reset(p[3]);
if(parse_debug):
print('enum_data_type_2', list(p))
+
# { enum_type_t*enum_type = new enum_type_t;
# FILE_NAME(enum_type, @1);
# enum_type->names .reset(p[5]);
if(parse_debug):
print('enum_data_type_3', list(p))
+
# { enum_type_t*enum_type = new enum_type_t;
# FILE_NAME(enum_type, @1);
# enum_type->names .reset(p[5]);
if(parse_debug):
print('enum_data_type_4', list(p))
+
# { enum_type_t*enum_type = new enum_type_t;
# FILE_NAME(enum_type, @1);
# enum_type->names .reset(p[6]);
if(parse_debug):
print('enum_data_type_5', list(p))
+
# { enum_type_t*enum_type = new enum_type_t;
# FILE_NAME(enum_type, @1);
# enum_type->names .reset(p[6]);
if(parse_debug):
print('enum_data_type_6', list(p))
+
# { enum_type_t*enum_type = new enum_type_t;
# FILE_NAME(enum_type, @1);
# enum_type->names .reset(p[6]);
if(parse_debug):
print('enum_name_list_1', list(p))
+
# { p[0] = p[1];
# }
()
if(parse_debug):
print('enum_name_list_2', list(p))
+
# { list<named_pexpr_t>*lst = p[1];
# lst->splice(lst->end(), *p[3]);
# delete p[3];
if(parse_debug):
print('pos_neg_number_1', list(p))
+
# { p[0] = p[1];
# }
()
if(parse_debug):
print('pos_neg_number_2', list(p))
+
# { verinum tmp = -(*(p[2]));
# *(p[2]) = tmp;
# p[0] = p[2];
if(parse_debug):
print('enum_name_1', list(p))
+
# { perm_string name = lex_strings.make(p[1]);
# delete[]p[1];
# p[0] = make_named_number(name);
if(parse_debug):
print('enum_name_2', list(p))
+
# { perm_string name = lex_strings.make(p[1]);
# long count = check_enum_seq_value(@1, p[3], false);
# delete[]p[1];
if(parse_debug):
print('enum_name_3', list(p))
+
# { perm_string name = lex_strings.make(p[1]);
# p[0] = make_named_numbers(name, check_enum_seq_value(@1, p[3], true),
# check_enum_seq_value(@1, p[5], true));
if(parse_debug):
print('enum_name_4', list(p))
+
# { perm_string name = lex_strings.make(p[1]);
# delete[]p[1];
# p[0] = make_named_number(name, p[3]);
if(parse_debug):
print('enum_name_5', list(p))
+
# { perm_string name = lex_strings.make(p[1]);
# long count = check_enum_seq_value(@1, p[3], false);
# p[0] = make_named_numbers(name, 0, count-1, p[6]);
if(parse_debug):
print('enum_name_6', list(p))
+
# { perm_string name = lex_strings.make(p[1]);
# p[0] = make_named_numbers(name, check_enum_seq_value(@1, p[3], true),
# check_enum_seq_value(@1, p[5], true), p[8]);
if(parse_debug):
print('struct_data_type_1', list(p))
+
# { struct_type_t*tmp = new struct_type_t;
# FILE_NAME(tmp, @1);
# tmp->packed_flag = p[2];
if(parse_debug):
print('struct_data_type_2', list(p))
+
# { struct_type_t*tmp = new struct_type_t;
# FILE_NAME(tmp, @1);
# tmp->packed_flag = p[2];
if(parse_debug):
print('struct_data_type_3', list(p))
+
# { yyerror(@3, "error: Errors in struct member list.");
# yyerrok;
# struct_type_t*tmp = new struct_type_t;
if(parse_debug):
print('struct_data_type_4', list(p))
+
# { yyerror(@3, "error: Errors in union member list.");
# yyerrok;
# struct_type_t*tmp = new struct_type_t;
if(parse_debug):
print('struct_union_member_list_1', list(p))
+
# { list<struct_member_t*>*tmp = p[1];
# tmp->push_back(p[2]);
# p[0] = tmp;
if(parse_debug):
print('struct_union_member_list_2', list(p))
+
# { list<struct_member_t*>*tmp = new list<struct_member_t*>;
# tmp->push_back(p[1]);
# p[0] = tmp;
if(parse_debug):
print('struct_union_member_1', list(p))
+
# { struct_member_t*tmp = new struct_member_t;
# FILE_NAME(tmp, @2);
# tmp->type .reset(p[2]);
if(parse_debug):
print('struct_union_member_2', list(p))
+
# { yyerror(@2, "Error in struct/union member.");
# yyerrok;
# p[0] = None
if(parse_debug):
print('case_item_1', list(p))
+
# { PCase::Item*tmp = new PCase::Item;
# tmp->expr = *p[1];
# tmp->stat = p[3];
if(parse_debug):
print('case_item_2', list(p))
+
# { PCase::Item*tmp = new PCase::Item;
# tmp->stat = p[3];
# p[0] = tmp;
if(parse_debug):
print('case_item_3', list(p))
+
# { PCase::Item*tmp = new PCase::Item;
# tmp->stat = p[2];
# p[0] = tmp;
if(parse_debug):
print('case_item_4', list(p))
+
# { yyerror(@2, "error: Incomprehensible case expression.");
# yyerrok;
# }
if(parse_debug):
print('case_items_1', list(p))
+
# { svector<PCase::Item*>*tmp;
# tmp = new svector<PCase::Item*>(*p[1], p[2]);
# delete p[1];
if(parse_debug):
print('case_items_2', list(p))
+
# { svector<PCase::Item*>*tmp = new svector<PCase::Item*>(1);
# (*tmp)[0] = p[1];
# p[0] = tmp;
if(parse_debug):
print('defparam_assign_1', list(p))
+
# { pform_set_defparam(*p[1], p[3]);
# delete p[1];
# }
if(parse_debug):
print('defparam_assign_list_2', list(p))
+
# { yyerror(@1, "error: defparam may not include a range.");
# delete p[1];
# }
if(parse_debug):
print('delay1_1', list(p))
+
# { list<PExpr*>*tmp = new list<PExpr*>;
# tmp->push_back(p[2]);
# p[0] = tmp;
if(parse_debug):
print('delay1_2', list(p))
+
# { list<PExpr*>*tmp = new list<PExpr*>;
# tmp->push_back(p[3]);
# p[0] = tmp;
if(parse_debug):
print('delay3_1', list(p))
+
# { list<PExpr*>*tmp = new list<PExpr*>;
# tmp->push_back(p[2]);
# p[0] = tmp;
if(parse_debug):
print('delay3_2', list(p))
+
# { list<PExpr*>*tmp = new list<PExpr*>;
# tmp->push_back(p[3]);
# p[0] = tmp;
if(parse_debug):
print('delay3_3', list(p))
+
# { list<PExpr*>*tmp = new list<PExpr*>;
# tmp->push_back(p[3]);
# tmp->push_back(p[5]);
if(parse_debug):
print('delay3_4', list(p))
+
# { list<PExpr*>*tmp = new list<PExpr*>;
# tmp->push_back(p[3]);
# tmp->push_back(p[5]);
if(parse_debug > 2):
print('delay3_opt_2', list(p))
+
# { p[0] = None }
()
if(parse_debug):
print('delay_value_list_1', list(p))
+
# { list<PExpr*>*tmp = new list<PExpr*>;
# tmp->push_back(p[1]);
# p[0] = tmp;
if(parse_debug):
print('delay_value_list_2', list(p))
+
# { list<PExpr*>*tmp = p[1];
# tmp->push_back(p[3]);
# p[0] = tmp;
if(parse_debug):
print('delay_value_1', list(p))
+
# { PExpr*tmp = p[1];
# p[0] = tmp;
# }
if(parse_debug):
print('delay_value_2', list(p))
+
# { p[0] = pform_select_mtm_expr(p[1], p[3], p[5]); }
()
if(parse_debug):
print('delay_value_simple_1', list(p))
+
# { verinum*tmp = p[1];
# if (tmp == 0) {
# yyerror(@1, "internal error: delay.");
if(parse_debug):
print('delay_value_simple_2', list(p))
+
# { verireal*tmp = p[1];
# if (tmp == 0) {
# yyerror(@1, "internal error: delay.");
if(parse_debug):
print('delay_value_simple_3', list(p))
+
# { PEIdent*tmp = new PEIdent(lex_strings.make(p[1]));
# FILE_NAME(tmp, @1);
# p[0] = tmp;
if(parse_debug):
print('delay_value_simple_4', list(p))
+
# { int unit;
#
# based_size = 0;
if(parse_debug):
print('discipline_declaration_1', list(p))
+
# { pform_end_discipline(@1); delete[] p[2]; }
()
def p__embed0_discipline_declaration(p):
'''_embed0_discipline_declaration : '''
+
# { pform_start_discipline(p[2]); }
()
if(parse_debug):
print('discipline_item_1', list(p))
+
# { pform_discipline_domain(@1, IVL_DIS_DISCRETE); }
()
if(parse_debug):
print('discipline_item_2', list(p))
+
# { pform_discipline_domain(@1, IVL_DIS_CONTINUOUS); }
()
if(parse_debug):
print('discipline_item_3', list(p))
+
# { pform_discipline_potential(@1, p[2]); delete[] p[2]; }
()
if(parse_debug):
print('discipline_item_4', list(p))
+
# { pform_discipline_flow(@1, p[2]); delete[] p[2]; }
()
if(parse_debug):
print('nature_declaration_1', list(p))
+
# { pform_end_nature(@1); delete[] p[2]; }
()
def p__embed0_nature_declaration(p):
'''_embed0_nature_declaration : '''
+
# { pform_start_nature(p[2]); }
()
if(parse_debug):
print('nature_item_1', list(p))
+
# { delete[] p[3]; }
()
if(parse_debug):
print('nature_item_3', list(p))
+
# { pform_nature_access(@1, p[3]); delete[] p[3]; }
()
if(parse_debug):
print('nature_item_4', list(p))
+
# { delete[] p[3]; }
()
if(parse_debug):
print('nature_item_5', list(p))
+
# { delete[] p[3]; }
()
if(parse_debug):
print('config_declaration_1', list(p))
+
# { cerr << @1 << ": sorry: config declarations are not supported and "
# "will be skipped." << endl;
# delete[] p[2];
if(parse_debug):
print('config_rule_statement_2', list(p))
+
# { delete p[2]; }
()
if(parse_debug):
print('config_rule_statement_3', list(p))
+
# { delete p[2]; }
()
if(parse_debug):
print('lib_cell_id_1', list(p))
+
# { delete[] p[1]; }
()
if(parse_debug):
print('lib_cell_id_2', list(p))
+
# { delete[] p[1]; delete[] p[3]; }
()
if(parse_debug):
print('list_of_libraries_2', list(p))
+
# { delete[] p[2]; }
()
if(parse_debug):
print('drive_strength_1', list(p))
+
# { p[0].str0 = p[2].str0;
# p[0].str1 = p[4].str1;
# }
if(parse_debug):
print('drive_strength_2', list(p))
+
# { p[0].str0 = p[4].str0;
# p[0].str1 = p[2].str1;
# }
if(parse_debug):
print('drive_strength_3', list(p))
+
# { p[0].str0 = p[2].str0;
# p[0].str1 = IVL_DR_HiZ;
# }
if(parse_debug):
print('drive_strength_4', list(p))
+
# { p[0].str0 = IVL_DR_HiZ;
# p[0].str1 = p[2].str1;
# }
if(parse_debug):
print('drive_strength_5', list(p))
+
# { p[0].str0 = p[4].str0;
# p[0].str1 = IVL_DR_HiZ;
# }
if(parse_debug):
print('drive_strength_6', list(p))
+
# { p[0].str0 = IVL_DR_HiZ;
# p[0].str1 = p[4].str1;
# }
if(parse_debug > 2):
print('drive_strength_opt_2', list(p))
+
# { p[0].str0 = IVL_DR_STRONG; p[0].str1 = IVL_DR_STRONG; }
()
if(parse_debug):
print('dr_strength0_1', list(p))
+
# { p[0].str0 = IVL_DR_SUPPLY; }
()
if(parse_debug):
print('dr_strength0_2', list(p))
+
# { p[0].str0 = IVL_DR_STRONG; }
()
if(parse_debug):
print('dr_strength0_3', list(p))
+
# { p[0].str0 = IVL_DR_PULL; }
()
if(parse_debug):
print('dr_strength0_4', list(p))
+
# { p[0].str0 = IVL_DR_WEAK; }
()
if(parse_debug):
print('dr_strength1_1', list(p))
+
# { p[0].str1 = IVL_DR_SUPPLY; }
()
if(parse_debug):
print('dr_strength1_2', list(p))
+
# { p[0].str1 = IVL_DR_STRONG; }
()
if(parse_debug):
print('dr_strength1_3', list(p))
+
# { p[0].str1 = IVL_DR_PULL; }
()
if(parse_debug):
print('dr_strength1_4', list(p))
+
# { p[0].str1 = IVL_DR_WEAK; }
()
if(parse_debug):
print('event_control_1', list(p))
+
# { PEIdent*tmpi = new PEIdent(*p[2]);
# PEEvent*tmpe = new PEEvent(PEEvent::ANYEDGE, tmpi);
# PEventStatement*tmps = new PEventStatement(tmpe);
if(parse_debug):
print('event_control_2', list(p))
+
# { PEventStatement*tmp = new PEventStatement(*p[3]);
# FILE_NAME(tmp, @1);
# delete p[3];
if(parse_debug):
print('event_control_3', list(p))
+
# { yyerror(@1, "error: Malformed event control expression.");
# p[0] = None
# }
if(parse_debug):
print('event_expression_list_2', list(p))
+
# { svector<PEEvent*>*tmp = new svector<PEEvent*>(*p[1], *p[3]);
# delete p[1];
# delete p[3];
if(parse_debug):
print('event_expression_list_3', list(p))
+
# { svector<PEEvent*>*tmp = new svector<PEEvent*>(*p[1], *p[3]);
# delete p[1];
# delete p[3];
if(parse_debug):
print('event_expression_1', list(p))
+
# { PEEvent*tmp = new PEEvent(PEEvent::POSEDGE, p[2]);
# FILE_NAME(tmp, @1);
# svector<PEEvent*>*tl = new svector<PEEvent*>(1);
if(parse_debug):
print('event_expression_2', list(p))
+
# { PEEvent*tmp = new PEEvent(PEEvent::NEGEDGE, p[2]);
# FILE_NAME(tmp, @1);
# svector<PEEvent*>*tl = new svector<PEEvent*>(1);
if(parse_debug):
print('event_expression_3', list(p))
+
# { PEEvent*tmp = new PEEvent(PEEvent::ANYEDGE, p[1]);
# FILE_NAME(tmp, @1);
# svector<PEEvent*>*tl = new svector<PEEvent*>(1);
if(parse_debug):
print('branch_probe_expression_1', list(p))
+
# { p[0] = pform_make_branch_probe_expression(@1, p[1], p[3], p[5]); }
()
if(parse_debug):
print('branch_probe_expression_2', list(p))
+
# { p[0] = pform_make_branch_probe_expression(@1, p[1], p[3]); }
()
p[0] = PEUnary(Leaf(token.MINUS, '-'), p[3])
+
# { PEUnary*tmp = new PEUnary('-', p[3]);
# FILE_NAME(tmp, @3);
# p[0] = tmp;
p[0] = PEUnary(Leaf(token.TILDE, '~'), p[3])
+
# { PEUnary*tmp = new PEUnary('~', p[3]);
# FILE_NAME(tmp, @3);
# p[0] = tmp;
p[0] = PEUnary(Leaf(token.AMPER, '&'), p[3])
+
# { PEUnary*tmp = new PEUnary('&', p[3]);
# FILE_NAME(tmp, @3);
# p[0] = tmp;
p[0] = PEUnary(Leaf(token.STRING, '!'), p[3])
+
# { PEUnary*tmp = new PEUnary('!', p[3]);
# FILE_NAME(tmp, @3);
# p[0] = tmp;
p[0] = PEUnary(Leaf(token.STRING, '|'), p[3])
+
# { PEUnary*tmp = new PEUnary('|', p[3]);
# FILE_NAME(tmp, @3);
# p[0] = tmp;
p[0] = PEUnary(Leaf(token.STRING, '^'), p[3])
+
# { PEUnary*tmp = new PEUnary('^', p[3]);
# FILE_NAME(tmp, @3);
# p[0] = tmp;
if(parse_debug):
print('expression_11', list(p))
+
# { yyerror(@1, "error: '~' '&' is not a valid expression. "
# "Please use operator '~&' instead.");
# p[0] = None
if(parse_debug):
print('expression_12', list(p))
+
# { yyerror(@1, "error: '~' '|' is not a valid expression. "
# "Please use operator '~|' instead.");
# p[0] = None
if(parse_debug):
print('expression_13', list(p))
+
# { yyerror(@1, "error: '~' '^' is not a valid expression. "
# "Please use operator '~^' instead.");
# p[0] = None
p[0] = PEUnary(Leaf(token.STRING, 'K_NAND'), p[3])
+
# { PEUnary*tmp = new PEUnary('A', p[3]);
# FILE_NAME(tmp, @3);
# p[0] = tmp;
p[0] = PEUnary(Leaf(token.STRING, 'K_NOR'), p[3])
+
# { PEUnary*tmp = new PEUnary('N', p[3]);
# FILE_NAME(tmp, @3);
# p[0] = tmp;
p[0] = PEUnary(Leaf(token.STRING, 'K_NXOR'), p[3])
+
# { PEUnary*tmp = new PEUnary('X', p[3]);
# FILE_NAME(tmp, @3);
# p[0] = tmp;
if(parse_debug):
print('expression_17', list(p))
+
# { yyerror(@1, "error: Operand of unary ! "
# "is not a primary expression.");
# p[0] = None
if(parse_debug):
print('expression_18', list(p))
+
# { yyerror(@1, "error: Operand of reduction ^ "
# "is not a primary expression.");
# p[0] = None
p[0] = PEBinary(Leaf(token.STRING, '^'), p[1], p[4])
+
# { PEBinary*tmp = new PEBinary('^', p[1], p[4]);
# FILE_NAME(tmp, @2);
# p[0] = tmp;
p[0] = PEBinary(Leaf(token.STRING, '**'), p[1], p[4])
+
# { PEBinary*tmp = new PEBPower('p', p[1], p[4]);
# FILE_NAME(tmp, @2);
# p[0] = tmp;
p[0] = PEBinary(Leaf(token.STRING, '*'), p[1], p[4])
+
# { PEBinary*tmp = new PEBinary('*', p[1], p[4]);
# FILE_NAME(tmp, @2);
# p[0] = tmp;
p[0] = PEBinary(Leaf(token.STRING, '/'), p[1], p[4])
+
# { PEBinary*tmp = new PEBinary('/', p[1], p[4]);
# FILE_NAME(tmp, @2);
# p[0] = tmp;
p[0] = PEBinary(Leaf(token.STRING, '%'), p[1], p[4])
+
# { PEBinary*tmp = new PEBinary('%', p[1], p[4]);
# FILE_NAME(tmp, @2);
# p[0] = tmp;
p[0] = PEBinary(Leaf(token.AMPER, '&'), p[1], p[4])
+
# { PEBinary*tmp = new PEBinary('&', p[1], p[4]);
# FILE_NAME(tmp, @2);
# p[0] = tmp;
p[0] = PEBinary(Leaf(token.VBAR, '|'), p[1], p[4])
-
# { PEBinary*tmp = new PEBinary('|', p[1], p[4]);
# FILE_NAME(tmp, @2);
# p[0] = tmp;
p[0] = PEBinary(Leaf(token.STRING, '~&'), p[1], p[4])
+
# { PEBinary*tmp = new PEBinary('A', p[1], p[4]);
# FILE_NAME(tmp, @2);
# p[0] = tmp;
p[0] = PEBinary(Leaf(token.STRING, '~|'), p[1], p[4])
+
# { PEBinary*tmp = new PEBinary('O', p[1], p[4]);
# FILE_NAME(tmp, @2);
# p[0] = tmp;
p[0] = PEBinary(Leaf(token.STRING, 'K_XNOR'), p[1], p[4])
+
# { PEBinary*tmp = new PEBinary('X', p[1], p[4]);
# FILE_NAME(tmp, @2);
# p[0] = tmp;
p[0] = PEBinary(Leaf(token.STRING, '<'), p[1], p[4])
+
# { PEBinary*tmp = new PEBComp('<', p[1], p[4]);
# FILE_NAME(tmp, @2);
# p[0] = tmp;
p[0] = PEBinary(Leaf(token.STRING, '>'), p[1], p[4])
+
# { PEBinary*tmp = new PEBComp('>', p[1], p[4]);
# FILE_NAME(tmp, @2);
# p[0] = tmp;
p[0] = PEBinary(Leaf(token.STRING, 'K_LS'), p[1], p[4])
+
# { PEBinary*tmp = new PEBShift('l', p[1], p[4]);
# FILE_NAME(tmp, @2);
# p[0] = tmp;
p[0] = PEBinary(Leaf(token.STRING, 'K_RS'), p[1], p[4])
+
# { PEBinary*tmp = new PEBShift('r', p[1], p[4]);
# FILE_NAME(tmp, @2);
# p[0] = tmp;
p[0] = PEBinary(Leaf(token.STRING, 'K_RSS'), p[1], p[4])
+
# { PEBinary*tmp = new PEBShift('R', p[1], p[4]);
# FILE_NAME(tmp, @2);
# p[0] = tmp;
p[0] = PEBinary(Leaf(token.STRING, '=='), p[1], p[4])
+
# { PEBinary*tmp = new PEBComp('e', p[1], p[4]);
# FILE_NAME(tmp, @2);
# p[0] = tmp;
p[0] = PEBinary(Leaf(token.STRING, 'K_CEQ'), p[1], p[4])
+
# { PEBinary*tmp = new PEBComp('E', p[1], p[4]);
# FILE_NAME(tmp, @2);
# p[0] = tmp;
p[0] = PEBinary(Leaf(token.STRING, 'K_WEQ'), p[1], p[4])
+
# { PEBinary*tmp = new PEBComp('w', p[1], p[4]);
# FILE_NAME(tmp, @2);
# p[0] = tmp;
p[0] = PEBinary(Leaf(token.STRING, '<='), p[1], p[4])
+
# { PEBinary*tmp = new PEBComp('L', p[1], p[4]);
# FILE_NAME(tmp, @2);
# p[0] = tmp;
p[0] = PEBinary(Leaf(token.STRING, '>='), p[1], p[4])
+
# { PEBinary*tmp = new PEBComp('G', p[1], p[4]);
# FILE_NAME(tmp, @2);
# p[0] = tmp;
p[0] = PEBinary(Leaf(token.STRING, '!='), p[1], p[4])
+
# { PEBinary*tmp = new PEBComp('n', p[1], p[4]);
# FILE_NAME(tmp, @2);
# p[0] = tmp;
p[0] = PEBinary(Leaf(token.STRING, 'K_CNE'), p[1], p[4])
+
# { PEBinary*tmp = new PEBComp('N', p[1], p[4]);
# FILE_NAME(tmp, @2);
# p[0] = tmp;
p[0] = PEBinary(Leaf(token.STRING, 'K_WNE'), p[1], p[4])
+
# { PEBinary*tmp = new PEBComp('W', p[1], p[4]);
# FILE_NAME(tmp, @2);
# p[0] = tmp;
p[0] = PEBinary(Leaf(token.STRING, '||'), p[1], p[4])
+
# { PEBinary*tmp = new PEBLogic('o', p[1], p[4]);
# FILE_NAME(tmp, @2);
# p[0] = tmp;
p[0] = PEBinary(Leaf(token.STRING, '&&'), p[1], p[4])
+
# { PEBinary*tmp = new PEBLogic('a', p[1], p[4]);
# FILE_NAME(tmp, @2);
# p[0] = tmp;
p[0] = Node(syms.atom, [p[1], Leaf(token.STRING, ' ? '),
p[4], Leaf(token.STRING, ' : '), p[6]])
+
# { PETernary*tmp = new PETernary(p[1], p[4], p[6]);
# FILE_NAME(tmp, @2);
# p[0] = tmp;
if(parse_debug):
print('expr_mintypmax_2', list(p))
+
# { switch (min_typ_max_flag) {
# case MIN:
# p[0] = p[1];
if(parse_debug):
print('expression_list_with_nuls_1', list(p))
+
# { list<PExpr*>*tmp = p[1];
# tmp->push_back(p[3]);
# p[0] = tmp;
if(parse_debug):
print('expression_list_with_nuls_2', list(p))
+
# { list<PExpr*>*tmp = new list<PExpr*>;
# tmp->push_back(p[1]);
# p[0] = tmp;
if(parse_debug):
print('expression_list_with_nuls_3', list(p))
+
# { list<PExpr*>*tmp = new list<PExpr*>;
# tmp->push_back(0);
# p[0] = tmp;
if(parse_debug):
print('expression_list_with_nuls_4', list(p))
+
# { list<PExpr*>*tmp = p[1];
# tmp->push_back(0);
# p[0] = tmp;
if(parse_debug):
print('expression_list_proper_1', list(p))
+
# { list<PExpr*>*tmp = p[1];
# tmp->push_back(p[3]);
# p[0] = tmp;
if(parse_debug):
print('expression_list_proper_2', list(p))
+
# { list<PExpr*>*tmp = new list<PExpr*>;
# tmp->push_back(p[1]);
# p[0] = tmp;
print('expr_primary_or_typename_2', list(p))
p[0] = p[1]
+
# { PETypename*tmp = new PETypename(p[1].type);
# FILE_NAME(tmp,@1);
# p[0] = tmp;
print('expr_primary_1', list(p))
p[0] = p[1]
+
# { assert(p[1]);
# PENumber*tmp = new PENumber(p[1]);
# FILE_NAME(tmp, @1);
if(parse_debug):
print('expr_primary_2', list(p))
+
# { PEFNumber*tmp = new PEFNumber(p[1]);
# FILE_NAME(tmp, @1);
# p[0] = tmp;
if(parse_debug):
print('expr_primary_3', list(p))
+
# { PEString*tmp = new PEString(p[1]);
# FILE_NAME(tmp, @1);
# p[0] = tmp;
if(parse_debug):
print('expr_primary_4', list(p))
+
# { int unit;
#
# based_size = 0;
if(parse_debug):
print('expr_primary_5', list(p))
+
# { perm_string tn = lex_strings.make(p[1]);
# PECallFunction*tmp = new PECallFunction(tn);
# FILE_NAME(tmp, @1);
print('expr_primary_6', list(p))
p[0] = p[1]
+
# { PEIdent*tmp = pform_new_ident(*p[1]);
# FILE_NAME(tmp, @1);
# p[0] = tmp;
if(parse_debug):
print('expr_primary_7', list(p))
+
# { p[0] = pform_package_ident(@2, p[1], p[3]);
# delete p[3];
# }
if(parse_debug):
print('expr_primary_8', list(p))
+
# { list<PExpr*>*expr_list = p[3];
# strip_tail_items(expr_list);
# PECallFunction*tmp = pform_make_call_function(@1, *p[1], *expr_list);
if(parse_debug):
print('expr_primary_9', list(p))
+
# { pform_name_t*t_name = p[1];
# while (! p[3]->empty()) {
# t_name->push_back(p[3]->front());
if(parse_debug):
print('expr_primary_10', list(p))
+
# { perm_string tn = lex_strings.make(p[1]);
# PECallFunction*tmp = new PECallFunction(tn, *p[3]);
# FILE_NAME(tmp, @1);
if(parse_debug):
print('expr_primary_11', list(p))
+
# { perm_string use_name = lex_strings.make(p[3]);
# PECallFunction*tmp = new PECallFunction(p[1], use_name, *p[5]);
# FILE_NAME(tmp, @3);
if(parse_debug):
print('expr_primary_12', list(p))
+
# { perm_string tn = lex_strings.make(p[1]);
# const vector<PExpr*>empty;
# PECallFunction*tmp = new PECallFunction(tn, empty);
if(parse_debug):
print('expr_primary_13', list(p))
+
# { PEIdent*tmp = new PEIdent(*p[1]);
# FILE_NAME(tmp,@1);
# delete p[1];
if(parse_debug):
print('expr_primary_14', list(p))
+
# { pform_name_t*t_name = p[1];
# while (! p[3]->empty()) {
# t_name->push_back(p[3]->front());
if(parse_debug):
print('expr_primary_15', list(p))
+
# { perm_string tn = perm_string::literal("$acos");
# PECallFunction*tmp = make_call_function(tn, p[3]);
# FILE_NAME(tmp,@1);
if(parse_debug):
print('expr_primary_16', list(p))
+
# { perm_string tn = perm_string::literal("$acosh");
# PECallFunction*tmp = make_call_function(tn, p[3]);
# FILE_NAME(tmp,@1);
if(parse_debug):
print('expr_primary_17', list(p))
+
# { perm_string tn = perm_string::literal("$asin");
# PECallFunction*tmp = make_call_function(tn, p[3]);
# FILE_NAME(tmp,@1);
if(parse_debug):
print('expr_primary_18', list(p))
+
# { perm_string tn = perm_string::literal("$asinh");
# PECallFunction*tmp = make_call_function(tn, p[3]);
# FILE_NAME(tmp,@1);
if(parse_debug):
print('expr_primary_19', list(p))
+
# { perm_string tn = perm_string::literal("$atan");
# PECallFunction*tmp = make_call_function(tn, p[3]);
# FILE_NAME(tmp,@1);
if(parse_debug):
print('expr_primary_20', list(p))
+
# { perm_string tn = perm_string::literal("$atanh");
# PECallFunction*tmp = make_call_function(tn, p[3]);
# FILE_NAME(tmp,@1);
if(parse_debug):
print('expr_primary_21', list(p))
+
# { perm_string tn = perm_string::literal("$atan2");
# PECallFunction*tmp = make_call_function(tn, p[3], p[5]);
# FILE_NAME(tmp,@1);
if(parse_debug):
print('expr_primary_22', list(p))
+
# { perm_string tn = perm_string::literal("$ceil");
# PECallFunction*tmp = make_call_function(tn, p[3]);
# FILE_NAME(tmp,@1);
if(parse_debug):
print('expr_primary_23', list(p))
+
# { perm_string tn = perm_string::literal("$cos");
# PECallFunction*tmp = make_call_function(tn, p[3]);
# FILE_NAME(tmp,@1);
if(parse_debug):
print('expr_primary_24', list(p))
+
# { perm_string tn = perm_string::literal("$cosh");
# PECallFunction*tmp = make_call_function(tn, p[3]);
# FILE_NAME(tmp,@1);
if(parse_debug):
print('expr_primary_25', list(p))
+
# { perm_string tn = perm_string::literal("$exp");
# PECallFunction*tmp = make_call_function(tn, p[3]);
# FILE_NAME(tmp,@1);
if(parse_debug):
print('expr_primary_26', list(p))
+
# { perm_string tn = perm_string::literal("$floor");
# PECallFunction*tmp = make_call_function(tn, p[3]);
# FILE_NAME(tmp,@1);
if(parse_debug):
print('expr_primary_27', list(p))
+
# { perm_string tn = perm_string::literal("$hypot");
# PECallFunction*tmp = make_call_function(tn, p[3], p[5]);
# FILE_NAME(tmp,@1);
if(parse_debug):
print('expr_primary_28', list(p))
+
# { perm_string tn = perm_string::literal("$ln");
# PECallFunction*tmp = make_call_function(tn, p[3]);
# FILE_NAME(tmp,@1);
if(parse_debug):
print('expr_primary_29', list(p))
+
# { perm_string tn = perm_string::literal("$log10");
# PECallFunction*tmp = make_call_function(tn, p[3]);
# FILE_NAME(tmp,@1);
if(parse_debug):
print('expr_primary_30', list(p))
+
# { perm_string tn = perm_string::literal("$pow");
# PECallFunction*tmp = make_call_function(tn, p[3], p[5]);
# FILE_NAME(tmp,@1);
if(parse_debug):
print('expr_primary_31', list(p))
+
# { perm_string tn = perm_string::literal("$sin");
# PECallFunction*tmp = make_call_function(tn, p[3]);
# FILE_NAME(tmp,@1);
if(parse_debug):
print('expr_primary_32', list(p))
+
# { perm_string tn = perm_string::literal("$sinh");
# PECallFunction*tmp = make_call_function(tn, p[3]);
# FILE_NAME(tmp,@1);
if(parse_debug):
print('expr_primary_33', list(p))
+
# { perm_string tn = perm_string::literal("$sqrt");
# PECallFunction*tmp = make_call_function(tn, p[3]);
# FILE_NAME(tmp,@1);
if(parse_debug):
print('expr_primary_34', list(p))
+
# { perm_string tn = perm_string::literal("$tan");
# PECallFunction*tmp = make_call_function(tn, p[3]);
# FILE_NAME(tmp,@1);
if(parse_debug):
print('expr_primary_35', list(p))
+
# { perm_string tn = perm_string::literal("$tanh");
# PECallFunction*tmp = make_call_function(tn, p[3]);
# FILE_NAME(tmp,@1);
if(parse_debug):
print('expr_primary_36', list(p))
+
# { PEUnary*tmp = new PEUnary('m', p[3]);
# FILE_NAME(tmp,@1);
# p[0] = tmp;
if(parse_debug):
print('expr_primary_37', list(p))
+
# { PEBinary*tmp = new PEBinary('M', p[3], p[5]);
# FILE_NAME(tmp,@1);
# p[0] = tmp;
if(parse_debug):
print('expr_primary_38', list(p))
+
# { PEBinary*tmp = new PEBinary('m', p[3], p[5]);
# FILE_NAME(tmp,@1);
# p[0] = tmp;
if(parse_debug):
print('expr_primary_40', list(p))
+
# { PEConcat*tmp = new PEConcat(*p[2]);
# FILE_NAME(tmp, @1);
# delete p[2];
if(parse_debug):
print('expr_primary_41', list(p))
+
# { PExpr*rep = p[2];
# PEConcat*tmp = new PEConcat(*p[4], rep);
# FILE_NAME(tmp, @1);
if(parse_debug):
print('expr_primary_42', list(p))
+
# { PExpr*rep = p[2];
# PEConcat*tmp = new PEConcat(*p[4], rep);
# FILE_NAME(tmp, @1);
if(parse_debug):
print('expr_primary_43', list(p))
+
# { // This is the empty queue syntax.
# if (gn_system_verilog()) {
# list<PExpr*> empty_list;
if(parse_debug):
print('expr_primary_44', list(p))
+
# { PExpr*base = p[4];
# if (gn_system_verilog()) {
# PECastSize*tmp = new PECastSize(p[1], base);
if(parse_debug):
print('expr_primary_45', list(p))
+
# { PExpr*base = p[4];
# if (gn_system_verilog()) {
# PECastType*tmp = new PECastType(p[1], base);
if(parse_debug):
print('expr_primary_48', list(p))
+
# { PENull*tmp = new PENull;
# FILE_NAME(tmp, @1);
# p[0] = tmp;
if(parse_debug):
print('function_item_list_opt_2', list(p))
+
# { p[0] = None }
()
if(parse_debug):
print('function_item_list_2', list(p))
+
# { /* */
# if (p[1] && p[2]) {
# vector<pform_tf_port_t>*tmp = p[1];
if(parse_debug):
print('function_item_2', list(p))
+
# { p[0] = None }
()
if(parse_debug):
print('gate_instance_1', list(p))
+
# { lgate*tmp = new lgate;
# tmp->name = p[1];
# tmp->parms = p[3];
if(parse_debug):
print('gate_instance_2', list(p))
+
# { lgate*tmp = new lgate;
# list<pform_range_t>*rng = p[2];
# tmp->name = p[1];
if(parse_debug):
print('gate_instance_3', list(p))
+
# { lgate*tmp = new lgate;
# tmp->name = "";
# tmp->parms = p[2];
if(parse_debug):
print('gate_instance_4', list(p))
+
# { lgate*tmp = new lgate;
# list<pform_range_t>*rng = p[2];
# tmp->name = p[1];
if(parse_debug):
print('gate_instance_5', list(p))
+
# { lgate*tmp = new lgate;
# tmp->name = p[1];
# tmp->parms = 0;
if(parse_debug):
print('gate_instance_6', list(p))
+
# { lgate*tmp = new lgate;
# list<pform_range_t>*rng = p[2];
# tmp->name = p[1];
if(parse_debug):
print('gate_instance_7', list(p))
+
# { lgate*tmp = new lgate;
# tmp->name = p[1];
# tmp->parms = 0;
if(parse_debug):
print('gate_instance_8', list(p))
+
# { lgate*tmp = new lgate;
# tmp->name = p[1];
# tmp->parms = 0;
if(parse_debug):
print('gate_instance_list_1', list(p))
+
# { svector<lgate>*tmp1 = p[1];
# lgate*tmp2 = p[3];
# svector<lgate>*out = new svector<lgate> (*tmp1, *tmp2);
if(parse_debug):
print('gate_instance_list_2', list(p))
+
# { svector<lgate>*tmp = new svector<lgate>(1);
# (*tmp)[0] = *p[1];
# delete p[1];
if(parse_debug):
print('gatetype_1', list(p))
+
# { p[0] = PGBuiltin::AND; }
()
if(parse_debug):
print('gatetype_2', list(p))
+
# { p[0] = PGBuiltin::NAND; }
()
if(parse_debug):
print('gatetype_3', list(p))
+
# { p[0] = PGBuiltin::OR; }
()
if(parse_debug):
print('gatetype_4', list(p))
+
# { p[0] = PGBuiltin::NOR; }
()
if(parse_debug):
print('gatetype_5', list(p))
+
# { p[0] = PGBuiltin::XOR; }
()
if(parse_debug):
print('gatetype_6', list(p))
+
# { p[0] = PGBuiltin::XNOR; }
()
if(parse_debug):
print('gatetype_7', list(p))
+
# { p[0] = PGBuiltin::BUF; }
()
if(parse_debug):
print('gatetype_8', list(p))
+
# { p[0] = PGBuiltin::BUFIF0; }
()
if(parse_debug):
print('gatetype_9', list(p))
+
# { p[0] = PGBuiltin::BUFIF1; }
()
if(parse_debug):
print('gatetype_10', list(p))
+
# { p[0] = PGBuiltin::NOT; }
()
if(parse_debug):
print('gatetype_11', list(p))
+
# { p[0] = PGBuiltin::NOTIF0; }
()
if(parse_debug):
print('gatetype_12', list(p))
+
# { p[0] = PGBuiltin::NOTIF1; }
()
if(parse_debug):
print('switchtype_1', list(p))
+
# { p[0] = PGBuiltin::NMOS; }
()
if(parse_debug):
print('switchtype_2', list(p))
+
# { p[0] = PGBuiltin::RNMOS; }
()
if(parse_debug):
print('switchtype_3', list(p))
+
# { p[0] = PGBuiltin::PMOS; }
()
if(parse_debug):
print('switchtype_4', list(p))
+
# { p[0] = PGBuiltin::RPMOS; }
()
if(parse_debug):
print('switchtype_5', list(p))
+
# { p[0] = PGBuiltin::CMOS; }
()
if(parse_debug):
print('switchtype_6', list(p))
+
# { p[0] = PGBuiltin::RCMOS; }
()
if(parse_debug):
print('switchtype_7', list(p))
+
# { p[0] = PGBuiltin::TRAN; }
()
if(parse_debug):
print('switchtype_8', list(p))
+
# { p[0] = PGBuiltin::RTRAN; }
()
if(parse_debug):
print('switchtype_9', list(p))
+
# { p[0] = PGBuiltin::TRANIF0; }
()
if(parse_debug):
print('switchtype_10', list(p))
+
# { p[0] = PGBuiltin::TRANIF1; }
()
if(parse_debug):
print('switchtype_11', list(p))
+
# { p[0] = PGBuiltin::RTRANIF0; }
()
if(parse_debug):
print('switchtype_12', list(p))
+
# { p[0] = PGBuiltin::RTRANIF1; }
()
lpvalue = Leaf(token.NAME, p[1])
p[0] = lpvalue
+
# { p[0] = new pform_name_t;
# p[0]->push_back(name_component_t(lex_strings.make(p[1])));
# delete[]p[1];
if(parse_debug):
print('hierarchy_identifier_2', list(p))
+
# { pform_name_t * tmp = p[1];
# tmp->push_back(name_component_t(lex_strings.make(p[3])));
# delete[]p[3];
if(parse_debug):
print('hierarchy_identifier_3', list(p))
+
# { pform_name_t * tmp = p[1];
# name_component_t&tail = tmp->back();
# index_component_t itmp;
if(parse_debug):
print('hierarchy_identifier_4', list(p))
+
# { pform_name_t * tmp = p[1];
# name_component_t&tail = tmp->back();
# if (! gn_system_verilog()) {
if(parse_debug):
print('hierarchy_identifier_5', list(p))
+
# { pform_name_t * tmp = p[1];
# name_component_t&tail = tmp->back();
# index_component_t itmp;
if(parse_debug):
print('hierarchy_identifier_6', list(p))
+
# { pform_name_t * tmp = p[1];
# name_component_t&tail = tmp->back();
# index_component_t itmp;
if(parse_debug):
print('hierarchy_identifier_7', list(p))
+
# { pform_name_t * tmp = p[1];
# name_component_t&tail = tmp->back();
# index_component_t itmp;
if(parse_debug):
print('list_of_identifiers_1', list(p))
+
# { p[0] = list_from_identifier(p[1]); }
()
if(parse_debug):
print('list_of_identifiers_2', list(p))
+
# { p[0] = list_from_identifier(p[1], p[3]); }
()
if(parse_debug):
print('list_of_port_identifiers_1', list(p))
+
# { p[0] = make_port_list(p[1], p[2], 0); }
()
if(parse_debug):
print('list_of_port_identifiers_2', list(p))
+
# { p[0] = make_port_list(p[1], p[3], p[4], 0); }
()
if(parse_debug):
print('list_of_variable_port_identifiers_1', list(p))
+
# { p[0] = make_port_list(p[1], p[2], 0); }
()
if(parse_debug):
print('list_of_variable_port_identifiers_2', list(p))
+
# { p[0] = make_port_list(p[1], p[2], p[4]); }
()
if(parse_debug):
print('list_of_variable_port_identifiers_3', list(p))
+
# { p[0] = make_port_list(p[1], p[3], p[4], 0); }
()
if(parse_debug):
print('list_of_variable_port_identifiers_4', list(p))
+
# { p[0] = make_port_list(p[1], p[3], p[4], p[6]); }
()
if(parse_debug):
print('list_of_ports_1', list(p))
+
# { vector<Module::port_t*>*tmp
# = new vector<Module::port_t*>(1);
# (*tmp)[0] = p[1];
if(parse_debug):
print('list_of_ports_2', list(p))
+
# { vector<Module::port_t*>*tmp = p[1];
# tmp->push_back(p[3]);
# p[0] = tmp;
print('list_of_port_declarations_1', list(p))
p[0] = [p[1]]
+
# { vector<Module::port_t*>*tmp
# = new vector<Module::port_t*>(1);
# (*tmp)[0] = p[1];
p[1].append(p[3])
p[0] = p[1]
+
# { vector<Module::port_t*>*tmp = p[1];
# tmp->push_back(p[3]);
# p[0] = tmp;
if(parse_debug):
print('list_of_port_declarations_3', list(p))
+
# { Module::port_t*ptmp;
# perm_string name = lex_strings.make(p[3]);
# ptmp = pform_module_port_reference(name, @3.text,
if(parse_debug):
print('list_of_port_declarations_4', list(p))
+
# {
# yyerror(@2, "error: NULL port declarations are not "
# "allowed.");
if(parse_debug):
print('list_of_port_declarations_5', list(p))
+
# {
# yyerror(@2, "error: ';' is an invalid port declaration "
# "separator.");
comment, dt, name = p[2], p[4], p[5]
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];
if(parse_debug):
print('port_declaration_2', list(p))
+
# { Module::port_t*ptmp;
# perm_string name = lex_strings.make(p[4]);
# ptmp = pform_module_port_reference(name, @2.text,
if(parse_debug):
print('port_declaration_3', list(p))
+
# { Module::port_t*ptmp;
# perm_string name = lex_strings.make(p[5]);
# ptmp = pform_module_port_reference(name, @2.text, @2.first_line);
if(parse_debug):
print('port_declaration_4', list(p))
+
# { Module::port_t*ptmp;
# perm_string name = lex_strings.make(p[4]);
# ptmp = pform_module_port_reference(name, @2.text,
comment, dt, name = p[2], p[4], p[5]
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];
if(parse_debug):
print('port_declaration_6', list(p))
+
# { Module::port_t*ptmp;
# perm_string name = lex_strings.make(p[4]);
# ptmp = pform_module_port_reference(name, @2.text,
if(parse_debug):
print('port_declaration_7', list(p))
+
# { Module::port_t*ptmp;
# perm_string name = lex_strings.make(p[5]);
# NetNet::Type use_type = p[3];
if(parse_debug):
print('atom2_type_1', list(p))
+
# { p[0] = 8; }
()
if(parse_debug):
print('atom2_type_2', list(p))
+
# { p[0] = 16; }
()
if(parse_debug):
print('atom2_type_3', list(p))
+
# { p[0] = 32; }
()
if(parse_debug):
print('atom2_type_4', list(p))
+
# { p[0] = 64; }
()
print('lpvalue_1', list(p))
p[0] = p[1]
+
# { PEIdent*tmp = pform_new_ident(*p[1]);
# FILE_NAME(tmp, @1);
# p[0] = tmp;
if(parse_debug):
print('lpvalue_2', list(p))
+
# { pform_name_t*t_name = p[1];
# while (!p[3]->empty()) {
# t_name->push_back(p[3]->front());
if(parse_debug):
print('lpvalue_3', list(p))
+
# { PEConcat*tmp = new PEConcat(*p[2]);
# FILE_NAME(tmp, @1);
# delete p[2];
if(parse_debug):
print('lpvalue_4', list(p))
+
# { yyerror(@1, "sorry: streaming concatenation not supported in l-values.");
# p[0] = None
# }
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]);
if(parse_debug):
print('cont_assign_list_1', list(p))
+
# { list<PExpr*>*tmp = p[1];
# tmp->splice(tmp->end(), *p[3]);
# delete p[3];
def p__embed0_module(p):
'''_embed0_module : '''
+
# { pform_startmodule(@2, p[4], p[2]==K_program, p[2]==K_interface, p[3], p[1]); }
()
def p__embed1_module(p):
'''_embed1_module : '''
+
# { pform_module_set_ports(p[8]); }
()
def p__embed2_module(p):
'''_embed2_module : '''
+
# { pform_set_scope_timescale(@2); }
()
def p__embed3_module(p):
'''_embed3_module : '''
+
# { Module::UCDriveType ucd;
# // The lexor detected `unconnected_drive directives and
# // marked what it found in the uc_drive variable. Use that
if(parse_debug > 1):
print('module_start_1', list(p))
+
# { p[0] = K_module; }
()
if(parse_debug):
print('module_start_2', list(p))
+
# { p[0] = K_module; }
()
if(parse_debug):
print('module_start_3', list(p))
+
# { p[0] = K_program; }
()
if(parse_debug):
print('module_start_4', list(p))
+
# { p[0] = K_interface; }
()
if(parse_debug > 2):
print('module_end_1', list(p))
+
# { p[0] = K_module; }
()
if(parse_debug):
print('module_end_2', list(p))
+
# { p[0] = K_program; }
()
if(parse_debug):
print('module_end_3', list(p))
+
# { p[0] = K_interface; }
()
if(parse_debug > 2):
print('endlabel_opt_2', list(p))
+
# { p[0] = None }
()
if(parse_debug):
print('module_attribute_foreign_1', list(p))
+
# { p[0] = None }
()
if(parse_debug > 2):
print('module_attribute_foreign_2', list(p))
+
# { p[0] = None }
()
if(parse_debug):
print('module_port_list_opt_3', list(p))
+
# { p[0] = None }
()
if(parse_debug):
print('module_port_list_opt_4', list(p))
+
# { yyerror(@2, "Errors in port declarations.");
# yyerrok;
# p[0] = None
p[0] = absyn.module_item_2(p[2], p[3], p[5])
#p[0] = ["module_item_2"]+list(p)
+
# { data_type_t*data_type = p[3];
# if (data_type == 0) {
# data_type = new vector_type_t(IVL_VT_LOGIC, false, 0);
if(parse_debug):
print('module_item_3', list(p))
+
# { real_type_t*tmpt = new real_type_t(real_type_t::REAL);
# pform_set_data_type(@2, tmpt, p[4], NetNet::WIRE, p[1]);
# if (p[3] != 0) {
if(parse_debug):
print('module_item_4', list(p))
+
# { real_type_t*tmpt = new real_type_t(real_type_t::REAL);
# pform_set_data_type(@2, tmpt, p[3], NetNet::WIRE, p[1]);
# delete p[1];
if(parse_debug):
print('module_item_5', list(p))
+
# { data_type_t*data_type = p[3];
# if (data_type == 0) {
# data_type = new vector_type_t(IVL_VT_LOGIC, false, 0);
if(parse_debug):
print('module_item_6', list(p))
+
# { data_type_t*data_type = p[3];
# if (data_type == 0) {
# data_type = new vector_type_t(IVL_VT_LOGIC, false, 0);
if(parse_debug):
print('module_item_7', list(p))
+
# { real_type_t*data_type = new real_type_t(real_type_t::REAL);
# pform_makewire(@2, 0, str_strength, p[3], NetNet::WIRE, data_type);
# if (p[1]) {
if(parse_debug):
print('module_item_8', list(p))
+
# { yyerror(@1, "sorry: trireg nets not supported.");
# delete p[3];
# delete p[4];
if(parse_debug):
print('module_item_9', list(p))
+
# { pform_module_define_port(@2, p[5], p[2], p[3], p[4], p[1]); }
()
if(parse_debug):
print('module_item_10', list(p))
+
# { real_type_t*real_type = new real_type_t(real_type_t::REAL);
# pform_module_define_port(@2, p[4], p[2], NetNet::WIRE, real_type, p[1]);
# }
if(parse_debug):
print('module_item_11', list(p))
+
# { NetNet::Type use_type = p[3] ? NetNet::IMPLICIT : NetNet::NONE;
# if (vector_type_t*dtype = dynamic_cast<vector_type_t*> (p[3])) {
# if (dtype->implicit_flag)
if(parse_debug):
print('module_item_12', list(p))
+
# { NetNet::Type use_type = p[3] ? NetNet::IMPLICIT : NetNet::NONE;
# if (vector_type_t*dtype = dynamic_cast<vector_type_t*> (p[3])) {
# if (dtype->implicit_flag)
if(parse_debug):
print('module_item_13', list(p))
+
# { NetNet::Type use_type = p[3] ? NetNet::IMPLICIT : NetNet::NONE;
# if (vector_type_t*dtype = dynamic_cast<vector_type_t*> (p[3])) {
# if (dtype->implicit_flag)
if(parse_debug):
print('module_item_14', list(p))
+
# { yyerror(@2, "error: Invalid variable list in port declaration.");
# if (p[1]) delete p[1];
# if (p[4]) delete p[4];
if(parse_debug):
print('module_item_15', list(p))
+
# { yyerror(@2, "error: Invalid variable list in port declaration.");
# if (p[1]) delete p[1];
# if (p[3]) delete p[3];
if(parse_debug):
print('module_item_16', list(p))
+
# { yyerror(@2, "error: Invalid variable list in port declaration.");
# if (p[1]) delete p[1];
# if (p[3]) delete p[3];
if(parse_debug):
print('module_item_17', list(p))
+
# { yyerror(@2, "error: Invalid variable list in port declaration.");
# if (p[1]) delete p[1];
# if (p[3]) delete p[3];
if(parse_debug):
print('module_item_18', list(p))
+
# { pform_attach_discipline(@1, p[1], p[2]); }
()
if(parse_debug):
print('module_item_19', list(p))
+
# { delete attributes_in_context;
# attributes_in_context = 0;
# }
if(parse_debug):
print('module_item_21', list(p))
+
# { pform_makegates(@2, p[2], str_strength, 0, p[3], p[1]); }
()
if(parse_debug):
print('module_item_22', list(p))
+
# { pform_makegates(@2, p[2], str_strength, p[3], p[4], p[1]); }
()
if(parse_debug):
print('module_item_23', list(p))
+
# { pform_makegates(@2, p[2], p[3], 0, p[4], p[1]); }
()
if(parse_debug):
print('module_item_24', list(p))
+
# { pform_makegates(@2, p[2], p[3], p[4], p[5], p[1]); }
()
if(parse_debug):
print('module_item_25', list(p))
+
# { pform_makegates(@2, p[2], str_strength, 0, p[3], p[1]); }
()
if(parse_debug):
print('module_item_26', list(p))
+
# { pform_makegates(@2, p[2], str_strength, p[3], p[4], p[1]); }
()
if(parse_debug):
print('module_item_27', list(p))
+
# { pform_makegates(@1, PGBuiltin::PULLUP, pull_strength, 0, p[2], 0); }
()
if(parse_debug):
print('module_item_28', list(p))
+
# { pform_makegates(@1, PGBuiltin::PULLDOWN, pull_strength, 0, p[2], 0); }
()
if(parse_debug):
print('module_item_29', list(p))
+
# { pform_makegates(@1, PGBuiltin::PULLUP, p[3], 0, p[5], 0); }
()
if(parse_debug):
print('module_item_30', list(p))
+
# { pform_makegates(@1, PGBuiltin::PULLUP, p[3], 0, p[7], 0); }
()
if(parse_debug):
print('module_item_31', list(p))
+
# { pform_makegates(@1, PGBuiltin::PULLUP, p[5], 0, p[7], 0); }
()
if(parse_debug):
print('module_item_32', list(p))
+
# { pform_makegates(@1, PGBuiltin::PULLDOWN, p[3], 0, p[5], 0); }
()
if(parse_debug):
print('module_item_33', list(p))
+
# { pform_makegates(@1, PGBuiltin::PULLDOWN, p[5], 0, p[7], 0); }
()
if(parse_debug):
print('module_item_34', list(p))
+
# { pform_makegates(@1, PGBuiltin::PULLDOWN, p[3], 0, p[7], 0); }
()
if(parse_debug):
print('module_item_35', list(p))
+
# { perm_string tmp1 = lex_strings.make(p[2]);
# pform_make_modgates(@2, tmp1, p[3], p[4], p[1]);
# delete[]p[2];
if(parse_debug):
print('module_item_36', list(p))
+
# { yyerror(@2, "error: Invalid module instantiation");
# delete[]p[2];
# if (p[1]) delete p[1];
if(parse_debug > 2):
print('module_item_37', list(p))
+
# { pform_make_pgassign_list(p[4], p[3], p[2], @1.text, @1.first_line); }
()
if(parse_debug):
print('module_item_38', list(p))
+
# { PProcess*tmp = pform_make_behavior(IVL_PR_ALWAYS, p[3], p[1]);
# FILE_NAME(tmp, @2);
# }
absyn.always_comb(p[3], p[1])
+
# { PProcess*tmp = pform_make_behavior(IVL_PR_ALWAYS_COMB, p[3], p[1]);
# FILE_NAME(tmp, @2);
# }
if(parse_debug):
print('module_item_40', list(p))
+
# { PProcess*tmp = pform_make_behavior(IVL_PR_ALWAYS_FF, p[3], p[1]);
# FILE_NAME(tmp, @2);
# }
if(parse_debug):
print('module_item_41', list(p))
+
# { PProcess*tmp = pform_make_behavior(IVL_PR_ALWAYS_LATCH, p[3], p[1]);
# FILE_NAME(tmp, @2);
# }
if(parse_debug):
print('module_item_42', list(p))
+
# { PProcess*tmp = pform_make_behavior(IVL_PR_INITIAL, p[3], p[1]);
# FILE_NAME(tmp, @2);
# }
if(parse_debug):
print('module_item_43', list(p))
+
# { PProcess*tmp = pform_make_behavior(IVL_PR_FINAL, p[3], p[1]);
# FILE_NAME(tmp, @2);
# }
if(parse_debug):
print('module_item_44', list(p))
+
# { pform_make_analog_behavior(@2, IVL_PR_ALWAYS, p[3]); }
()
if(parse_debug):
print('module_item_50', list(p))
+
# { // Test for bad nesting. I understand it, but it is illegal.
# if (pform_parent_generate()) {
# cerr << @1 << ": error: Generate/endgenerate regions cannot nest." << endl;
if(parse_debug):
print('module_item_51', list(p))
+
# { pform_genvars(@1, p[2]); }
()
if(parse_debug):
print('module_item_52', list(p))
+
# { pform_endgenerate(); }
()
if(parse_debug):
print('module_item_53', list(p))
+
# { pform_endgenerate(); }
()
if(parse_debug):
print('module_item_54', list(p))
+
# { pform_endgenerate(); }
()
if(parse_debug):
print('module_item_55', list(p))
+
# { pform_endgenerate(); }
()
if(parse_debug):
print('module_item_60', list(p))
+
# { yyerror(@1, "error: syntax error in specify block");
# yyerrok;
# }
if(parse_debug):
print('module_item_61', list(p))
+
# { yyerror(@2, "error: invalid module item.");
# yyerrok;
# }
if(parse_debug):
print('module_item_62', list(p))
+
# { yyerror(@1, "error: syntax error in left side "
# "of continuous assignment.");
# yyerrok;
if(parse_debug):
print('module_item_63', list(p))
+
# { yyerror(@1, "error: syntax error in "
# "continuous assignment");
# yyerrok;
if(parse_debug):
print('module_item_64', list(p))
+
# { yyerror(@1, "error: I give up on this "
# "function definition.");
# if (p[4]) {
if(parse_debug):
print('module_item_65', list(p))
+
# { perm_string tmp3 = lex_strings.make(p[3]);
# perm_string tmp5 = lex_strings.make(p[5]);
# pform_set_attrib(tmp3, tmp5, p[7]);
if(parse_debug):
print('module_item_66', list(p))
+
# { yyerror(@1, "error: Malformed $attribute parameter list."); }
()
def p__embed0_module_item(p):
'''_embed0_module_item : '''
+
# { attributes_in_context = p[1]; }
()
def p__embed1_module_item(p):
'''_embed1_module_item : '''
+
# { if (pform_in_interface())
# yyerror(@1, "error: Parameter overrides are not allowed "
# "in interfaces.");
def p__embed2_module_item(p):
'''_embed2_module_item : '''
+
# { pform_start_generate_for(@1, p[3], p[5], p[7], p[9], p[11]); }
()
def p__embed3_module_item(p):
'''_embed3_module_item : '''
+
# { pform_start_generate_else(@1); }
()
def p__embed4_module_item(p):
'''_embed4_module_item : '''
+
# { pform_start_generate_case(@1, p[3]); }
()
def p__embed5_module_item(p):
'''_embed5_module_item : '''
+
# { if (pform_in_interface())
# yyerror(@1, "error: specparam declarations are not allowed "
# "in interfaces.");
def p__embed6_module_item(p):
'''_embed6_module_item : '''
+
# { if (pform_in_interface())
# yyerror(@1, "error: specify blocks are not allowed "
# "in interfaces.");
if(parse_debug):
print('generate_if_1', list(p))
+
# { pform_start_generate_if(@1, p[3]); }
()
if(parse_debug):
print('generate_case_item_1', list(p))
+
# { pform_endgenerate(); }
()
if(parse_debug):
print('generate_case_item_2', list(p))
+
# { pform_endgenerate(); }
()
def p__embed0_generate_case_item(p):
'''_embed0_generate_case_item : '''
+
# { pform_generate_case_item(@1, p[1]); }
()
def p__embed1_generate_case_item(p):
'''_embed1_generate_case_item : '''
+
# { pform_generate_case_item(@1, 0); }
()
if(parse_debug):
print('generate_item_2', list(p))
+
# { /* Detect and warn about anachronistic begin/end use */
# if (generation_flag > GN_VER2001 && warn_anachronisms) {
# warn_count += 1;
if(parse_debug):
print('generate_item_3', list(p))
+
# { /* Detect and warn about anachronistic named begin/end use */
# if (generation_flag > GN_VER2001 && warn_anachronisms) {
# warn_count += 1;
def p__embed0_generate_item(p):
'''_embed0_generate_item : '''
+
# {
# pform_start_generate_nblock(@1, p[3]);
# }
if(parse_debug):
print('generate_block_3', list(p))
+
# { pform_generate_block_name(p[3]);
# if (p[6]) {
# if (strcmp(p[3],p[6]) != 0) {
if(parse_debug):
print('net_decl_assign_1', list(p))
+
# { net_decl_assign_t*tmp = new net_decl_assign_t;
# tmp->next = tmp;
# tmp->name = lex_strings.make(p[1]);
if(parse_debug):
print('net_decl_assigns_1', list(p))
+
# { net_decl_assign_t*tmp = p[1];
# p[3]->next = tmp->next;
# tmp->next = p[3];
if(parse_debug):
print('net_decl_assigns_2', list(p))
+
# { p[0] = p[1];
# }
()
if(parse_debug):
print('bit_logic_1', list(p))
+
# { p[0] = IVL_VT_LOGIC; }
()
if(parse_debug):
print('bit_logic_2', list(p))
+
# { p[0] = IVL_VT_BOOL; /* Icarus misc */}
()
if(parse_debug):
print('bit_logic_3', list(p))
+
# { p[0] = IVL_VT_BOOL; /* IEEE1800 / IEEE1364-2009 */}
()
if(parse_debug):
print('bit_logic_opt_2', list(p))
+
# { p[0] = IVL_VT_NO_TYPE; }
()
if(parse_debug):
print('net_type_2', list(p))
+
# { p[0] = NetNet::TRI; }
()
if(parse_debug):
print('net_type_3', list(p))
+
# { p[0] = NetNet::TRI1; }
()
if(parse_debug):
print('net_type_4', list(p))
+
# { p[0] = NetNet::SUPPLY0; }
()
if(parse_debug):
print('net_type_5', list(p))
+
# { p[0] = NetNet::WAND; }
()
if(parse_debug):
print('net_type_6', list(p))
+
# { p[0] = NetNet::TRIAND; }
()
if(parse_debug):
print('net_type_7', list(p))
+
# { p[0] = NetNet::TRI0; }
()
if(parse_debug):
print('net_type_8', list(p))
+
# { p[0] = NetNet::SUPPLY1; }
()
if(parse_debug):
print('net_type_9', list(p))
+
# { p[0] = NetNet::WOR; }
()
if(parse_debug):
print('net_type_10', list(p))
+
# { p[0] = NetNet::TRIOR; }
()
if(parse_debug):
print('net_type_11', list(p))
+
# { p[0] = NetNet::UNRESOLVED_WIRE;
# cerr << @1.text << ":" << @1.first_line << ": warning: "
# "'wone' is deprecated, please use 'uwire' "
if(parse_debug):
print('net_type_12', list(p))
+
# { p[0] = NetNet::UNRESOLVED_WIRE; }
()
if(parse_debug):
print('param_type_1', list(p))
+
# { param_active_range = p[3];
# param_active_signed = p[2];
# if ((p[1] == IVL_VT_NO_TYPE) && (p[3] != 0))
if(parse_debug):
print('param_type_2', list(p))
+
# { param_active_range = make_range_from_width(integer_width);
# param_active_signed = true;
# param_active_type = IVL_VT_LOGIC;
if(parse_debug):
print('param_type_3', list(p))
+
# { param_active_range = make_range_from_width(64);
# param_active_signed = false;
# param_active_type = IVL_VT_LOGIC;
if(parse_debug):
print('param_type_4', list(p))
+
# { param_active_range = 0;
# param_active_signed = true;
# param_active_type = IVL_VT_REAL;
if(parse_debug):
print('param_type_5', list(p))
+
# { param_active_range = make_range_from_width(p[1]);
# param_active_signed = true;
# param_active_type = IVL_VT_BOOL;
if(parse_debug):
print('param_type_6', list(p))
+
# { pform_set_param_from_type(@1, p[1].type, p[1].text, param_active_range,
# param_active_signed, param_active_type);
# delete[]p[1].text;
expr = Node(syms.tfpdef, [tpname, Leaf(token.EQUAL, p[2]), p[3]])
p[0] = expr
+
# { PExpr*tmp = p[3];
# pform_set_parameter(@1, lex_strings.make(p[1]), param_active_type,
# param_active_signed, param_active_range, tmp, p[4]);
if(parse_debug):
print('localparam_assign_1', list(p))
+
# { PExpr*tmp = p[3];
# pform_set_localparam(@1, lex_strings.make(p[1]), param_active_type,
# param_active_signed, param_active_range, tmp);
if(parse_debug):
print('parameter_value_ranges_opt_2', list(p))
+
# { p[0] = None }
()
if(parse_debug):
print('parameter_value_ranges_1', list(p))
+
# { p[0] = p[2]; p[0]->next = p[1]; }
()
if(parse_debug):
print('parameter_value_ranges_2', list(p))
+
# { p[0] = p[1]; p[0]->next = 0; }
()
if(parse_debug):
print('parameter_value_range_1', list(p))
+
# { p[0] = pform_parameter_value_range(p[1], false, p[3], false, p[5]); }
()
if(parse_debug):
print('parameter_value_range_2', list(p))
+
# { p[0] = pform_parameter_value_range(p[1], false, p[3], true, p[5]); }
()
if(parse_debug):
print('parameter_value_range_3', list(p))
+
# { p[0] = pform_parameter_value_range(p[1], true, p[3], false, p[5]); }
()
if(parse_debug):
print('parameter_value_range_4', list(p))
+
# { p[0] = pform_parameter_value_range(p[1], true, p[3], true, p[5]); }
()
if(parse_debug):
print('parameter_value_range_5', list(p))
+
# { p[0] = pform_parameter_value_range(true, false, p[2], false, p[2]); }
()
if(parse_debug):
print('value_range_expression_2', list(p))
+
# { p[0] = None }
()
if(parse_debug):
print('value_range_expression_3', list(p))
+
# { p[0] = None }
()
if(parse_debug):
print('value_range_expression_4', list(p))
+
# { p[0] = None }
()
if(parse_debug):
print('parameter_value_opt_1', list(p))
+
# { struct parmvalue_t*tmp = new struct parmvalue_t;
# tmp->by_order = p[3];
# tmp->by_name = 0;
if(parse_debug):
print('parameter_value_opt_2', list(p))
+
# { struct parmvalue_t*tmp = new struct parmvalue_t;
# tmp->by_order = 0;
# tmp->by_name = p[3];
if(parse_debug):
print('parameter_value_opt_3', list(p))
+
# { assert(p[2]);
# PENumber*tmp = new PENumber(p[2]);
# FILE_NAME(tmp, @1);
if(parse_debug):
print('parameter_value_opt_4', list(p))
+
# { assert(p[2]);
# PEFNumber*tmp = new PEFNumber(p[2]);
# FILE_NAME(tmp, @1);
if(parse_debug):
print('parameter_value_opt_5', list(p))
+
# { yyerror(@1, "error: syntax error in parameter value "
# "assignment list.");
# p[0] = None
if(parse_debug):
print('parameter_value_opt_6', list(p))
+
# { p[0] = None }
()
if(parse_debug):
print('parameter_value_byname_1', list(p))
+
# { named_pexpr_t*tmp = new named_pexpr_t;
# tmp->name = lex_strings.make(p[2]);
# tmp->parm = p[4];
if(parse_debug):
print('parameter_value_byname_2', list(p))
+
# { named_pexpr_t*tmp = new named_pexpr_t;
# tmp->name = lex_strings.make(p[2]);
# tmp->parm = 0;
if(parse_debug):
print('parameter_value_byname_list_1', list(p))
+
# { list<named_pexpr_t>*tmp = new list<named_pexpr_t>;
# tmp->push_back(*p[1]);
# delete p[1];
if(parse_debug):
print('parameter_value_byname_list_2', list(p))
+
# { list<named_pexpr_t>*tmp = p[1];
# tmp->push_back(*p[3]);
# delete p[3];
if(parse_debug):
print('port_2', list(p))
+
# { Module::port_t*tmp = p[4];
# tmp->name = lex_strings.make(p[2]);
# delete[]p[2];
if(parse_debug):
print('port_3', list(p))
+
# { Module::port_t*tmp = p[2];
# tmp->name = perm_string();
# p[0] = tmp;
if(parse_debug):
print('port_4', list(p))
+
# { Module::port_t*tmp = p[5];
# tmp->name = lex_strings.make(p[2]);
# delete[]p[2];
if(parse_debug):
print('port_opt_2', list(p))
+
# { p[0] = None }
()
if(parse_debug):
print('port_name_1', list(p))
+
# { named_pexpr_t*tmp = new named_pexpr_t;
# tmp->name = lex_strings.make(p[2]);
# tmp->parm = p[4];
if(parse_debug):
print('port_name_2', list(p))
+
# { yyerror(@3, "error: invalid port connection expression.");
# named_pexpr_t*tmp = new named_pexpr_t;
# tmp->name = lex_strings.make(p[2]);
if(parse_debug):
print('port_name_3', list(p))
+
# { named_pexpr_t*tmp = new named_pexpr_t;
# tmp->name = lex_strings.make(p[2]);
# tmp->parm = 0;
if(parse_debug):
print('port_name_4', list(p))
+
# { named_pexpr_t*tmp = new named_pexpr_t;
# tmp->name = lex_strings.make(p[2]);
# tmp->parm = new PEIdent(lex_strings.make(p[2]), true);
if(parse_debug):
print('port_name_5', list(p))
+
# { named_pexpr_t*tmp = new named_pexpr_t;
# tmp->name = lex_strings.make("*");
# tmp->parm = 0;
if(parse_debug):
print('port_name_list_1', list(p))
+
# { list<named_pexpr_t>*tmp = p[1];
# tmp->push_back(*p[3]);
# delete p[3];
if(parse_debug):
print('port_name_list_2', list(p))
+
# { list<named_pexpr_t>*tmp = new list<named_pexpr_t>;
# tmp->push_back(*p[1]);
# delete p[1];
if(parse_debug):
print('port_reference_1', list(p))
+
# { Module::port_t*ptmp;
# perm_string name = lex_strings.make(p[1]);
# ptmp = pform_module_port_reference(name, @1.text, @1.first_line);
if(parse_debug):
print('port_reference_2', list(p))
+
# { index_component_t itmp;
# itmp.sel = index_component_t::SEL_PART;
# itmp.msb = p[3];
if(parse_debug):
print('port_reference_3', list(p))
+
# { index_component_t itmp;
# itmp.sel = index_component_t::SEL_BIT;
# itmp.msb = p[3];
if(parse_debug):
print('port_reference_4', list(p))
+
# { yyerror(@1, "error: invalid port bit select");
# Module::port_t*ptmp = new Module::port_t;
# PEIdent*wtmp = new PEIdent(lex_strings.make(p[1]));
if(parse_debug):
print('port_reference_list_2', list(p))
+
# { Module::port_t*tmp = p[1];
# append(tmp->expr, p[3]->expr);
# delete p[3];
if(parse_debug > 2):
print('dimensions_opt_1', list(p))
+
# { p[0] = None }
()
if(parse_debug):
print('dimensions_2', list(p))
+
# { list<pform_range_t> *tmp = p[1];
# if (p[2]) {
# tmp->splice(tmp->end(), *p[2]);
if(parse_debug):
print('register_variable_1', list(p))
+
# { perm_string name = lex_strings.make(p[1]);
# pform_makewire(@1, name, NetNet::REG,
# NetNet::NOT_A_PORT, IVL_VT_NO_TYPE, 0);
if(parse_debug):
print('register_variable_2', list(p))
+
# { if (pform_peek_scope()->var_init_needs_explicit_lifetime()
# && (var_lifetime == LexicalScope::INHERITED)) {
# cerr << @3 << ": warning: Static variable initialization requires "
if(parse_debug):
print('register_variable_list_1', list(p))
+
# { list<perm_string>*tmp = new list<perm_string>;
# tmp->push_back(lex_strings.make(p[1]));
# p[0] = tmp;
if(parse_debug):
print('register_variable_list_2', list(p))
+
# { list<perm_string>*tmp = p[1];
# tmp->push_back(lex_strings.make(p[3]));
# p[0] = tmp;
# pform_set_reg_idx(name, p[2]);
p[0] = [p[1], p[2]]
-
# }
()
print('net_variable_list_1', list(p))
p[0] = [p[1]]
+
# { list<perm_string>*tmp = new list<perm_string>;
# tmp->push_back(lex_strings.make(p[1]));
# p[0] = tmp;
print('net_variable_list_2', list(p))
p[0] = p[1]+[p[3]]
+
# { list<perm_string>*tmp = p[1];
# tmp->push_back(lex_strings.make(p[3]));
# p[0] = tmp;
if(parse_debug):
print('event_variable_1', list(p))
+
# { if (p[2]) {
# yyerror(@2, "sorry: event arrays are not supported.");
# delete p[2];
if(parse_debug):
print('event_variable_list_1', list(p))
+
# { p[0] = list_from_identifier(p[1]); }
()
if(parse_debug):
print('event_variable_list_2', list(p))
+
# { p[0] = list_from_identifier(p[1], p[3]); }
()
if(parse_debug):
print('specify_item_2', list(p))
+
# { pform_module_specify_path(p[1]);
# }
()
if(parse_debug):
print('specify_item_3', list(p))
+
# { pform_module_specify_path(p[1]);
# }
()
if(parse_debug):
print('specify_item_4', list(p))
+
# { PSpecPath*tmp = p[5];
# if (tmp) {
# tmp->conditional = true;
if(parse_debug):
print('specify_item_5', list(p))
+
# { PSpecPath*tmp = p[5];
# if (tmp) {
# tmp->conditional = true;
if(parse_debug):
print('specify_item_6', list(p))
+
# { PSpecPath*tmp = p[2];
# if (tmp) {
# tmp->conditional = true;
if(parse_debug):
print('specify_item_7', list(p))
+
# { yyerror(@1, "Sorry: ifnone with an edge-sensitive path is "
# "not supported.");
# yyerrok;
if(parse_debug):
print('specify_item_8', list(p))
+
# { delete p[7];
# delete p[9];
# }
if(parse_debug):
print('specify_item_9', list(p))
+
# { delete p[7];
# }
()
if(parse_debug):
print('specify_item_10', list(p))
+
# { delete p[7];
# delete p[9];
# }
if(parse_debug):
print('specify_item_11', list(p))
+
# { delete p[5];
# }
()
if(parse_debug):
print('specify_item_12', list(p))
+
# { delete p[7];
# }
()
if(parse_debug):
print('specify_item_13', list(p))
+
# { delete p[7];
# delete p[9];
# }
if(parse_debug):
print('specify_item_14', list(p))
+
# { delete p[7];
# }
()
if(parse_debug):
print('specify_item_15', list(p))
+
# { delete p[7];
# }
()
if(parse_debug):
print('specify_item_16', list(p))
+
# { delete p[7];
# delete p[9];
# }
if(parse_debug):
print('specify_item_17', list(p))
+
# { delete p[7];
# }
()
if(parse_debug):
print('specify_item_18', list(p))
+
# { delete p[7];
# }
()
if(parse_debug):
print('specify_item_19', list(p))
+
# { delete p[5];
# delete p[7];
# }
if(parse_debug):
print('specify_item_20', list(p))
+
# { delete p[5];
# }
()
if(parse_debug):
print('specify_item_21', list(p))
+
# { delete p[2];
# }
()
if(parse_debug):
print('specify_item_22', list(p))
+
# { delete p[2];
# }
()
if(parse_debug):
print('specify_item_23', list(p))
+
# { delete p[2];
# }
()
if(parse_debug):
print('specify_item_24', list(p))
+
# { delete p[2];
# }
()
if(parse_debug):
print('specify_item_list_opt_1', list(p))
+
# { }
()
if(parse_debug):
print('specify_item_list_opt_2', list(p))
+
# { }
()
if(parse_debug):
print('specify_edge_path_decl_1', list(p))
+
# { p[0] = pform_assign_path_delay(p[1], p[4]); }
()
if(parse_debug):
print('specify_edge_path_decl_2', list(p))
+
# { list<PExpr*>*tmp = new list<PExpr*>;
# tmp->push_back(p[3]);
# p[0] = pform_assign_path_delay(p[1], tmp);
if(parse_debug):
print('specify_edge_path_1', list(p))
+
# { int edge_flag = 0;
# p[0] = pform_make_specify_edge_path(@1, edge_flag, p[2], p[3], false, p[6], p[8]); }
()
if(parse_debug):
print('specify_edge_path_2', list(p))
+
# { int edge_flag = p[2]? 1 : -1;
# p[0] = pform_make_specify_edge_path(@1, edge_flag, p[3], p[4], false, p[7], p[9]);}
()
if(parse_debug):
print('specify_edge_path_3', list(p))
+
# { int edge_flag = 0;
# p[0] = pform_make_specify_edge_path(@1, edge_flag, p[2], p[3], true, p[6], p[8]); }
()
if(parse_debug):
print('specify_edge_path_4', list(p))
+
# { int edge_flag = p[2]? 1 : -1;
# p[0] = pform_make_specify_edge_path(@1, edge_flag, p[3], p[4], true, p[7], p[9]); }
()
if(parse_debug):
print('specify_simple_path_decl_1', list(p))
+
# { p[0] = pform_assign_path_delay(p[1], p[4]); }
()
if(parse_debug):
print('specify_simple_path_decl_2', list(p))
+
# { list<PExpr*>*tmp = new list<PExpr*>;
# tmp->push_back(p[3]);
# p[0] = pform_assign_path_delay(p[1], tmp);
if(parse_debug):
print('specify_simple_path_decl_3', list(p))
+
# { yyerror(@3, "Syntax error in delay value list.");
# yyerrok;
# p[0] = None
if(parse_debug):
print('specify_simple_path_1', list(p))
+
# { p[0] = pform_make_specify_path(@1, p[2], p[3], false, p[5]); }
()
if(parse_debug):
print('specify_simple_path_2', list(p))
+
# { p[0] = pform_make_specify_path(@1, p[2], p[3], true, p[5]); }
()
if(parse_debug):
print('specify_simple_path_3', list(p))
+
# { yyerror(@1, "Invalid simple path");
# yyerrok;
# }
if(parse_debug):
print('specify_path_identifiers_1', list(p))
+
# { list<perm_string>*tmp = new list<perm_string>;
# tmp->push_back(lex_strings.make(p[1]));
# p[0] = tmp;
if(parse_debug):
print('specify_path_identifiers_2', list(p))
+
# { if (gn_specify_blocks_flag) {
# yywarn(@4, "Bit selects are not currently supported "
# "in path declarations. The declaration "
if(parse_debug):
print('specify_path_identifiers_3', list(p))
+
# { if (gn_specify_blocks_flag) {
# yywarn(@4, "Part selects are not currently supported "
# "in path declarations. The declaration "
if(parse_debug):
print('specify_path_identifiers_4', list(p))
+
# { list<perm_string>*tmp = p[1];
# tmp->push_back(lex_strings.make(p[3]));
# p[0] = tmp;
if(parse_debug):
print('specify_path_identifiers_5', list(p))
+
# { if (gn_specify_blocks_flag) {
# yywarn(@4, "Bit selects are not currently supported "
# "in path declarations. The declaration "
if(parse_debug):
print('specify_path_identifiers_6', list(p))
+
# { if (gn_specify_blocks_flag) {
# yywarn(@4, "Part selects are not currently supported "
# "in path declarations. The declaration "
if(parse_debug):
print('specparam_1', list(p))
+
# { PExpr*tmp = p[3];
# pform_set_specparam(@1, lex_strings.make(p[1]),
# param_active_range, tmp);
if(parse_debug):
print('specparam_2', list(p))
+
# { PExpr*tmp = 0;
# switch (min_typ_max_flag) {
# case MIN:
if(parse_debug):
print('specparam_3', list(p))
+
# { delete[]p[1];
# delete p[3];
# }
if(parse_debug):
print('specparam_4', list(p))
+
# { delete[]p[1];
# delete p[4];
# delete p[6];
if(parse_debug):
print('specparam_decl_2', list(p))
+
# { param_active_range = 0; }
()
def p__embed0_specparam_decl(p):
'''_embed0_specparam_decl : '''
+
# { param_active_range = p[1]; }
()
if(parse_debug):
print('spec_polarity_1', list(p))
+
# { p[0] = '+'; }
()
if(parse_debug):
print('spec_polarity_2', list(p))
+
# { p[0] = '-'; }
()
if(parse_debug):
print('spec_polarity_3', list(p))
+
# { p[0] = None }
()
if(parse_debug):
print('spec_reference_event_1', list(p))
+
# { delete p[2]; }
()
if(parse_debug):
print('spec_reference_event_2', list(p))
+
# { delete p[2]; }
()
if(parse_debug):
print('spec_reference_event_3', list(p))
+
# { delete p[2];
# delete p[4];
# }
if(parse_debug):
print('spec_reference_event_4', list(p))
+
# { delete p[2];
# delete p[4];
# }
if(parse_debug):
print('spec_reference_event_5', list(p))
+
# { delete p[5]; }
()
if(parse_debug):
print('spec_reference_event_6', list(p))
+
# { delete p[5];
# delete p[7];
# }
if(parse_debug):
print('spec_reference_event_7', list(p))
+
# { delete p[1];
# delete p[3];
# }
if(parse_debug):
print('spec_reference_event_8', list(p))
+
# { delete p[1]; }
()
if(parse_debug):
print('spec_notifier_opt_1', list(p))
+
# { }
()
if(parse_debug):
print('spec_notifier_opt_2', list(p))
+
# { }
()
if(parse_debug):
print('spec_notifier_1', list(p))
+
# { args_after_notifier = 0; }
()
if(parse_debug):
print('spec_notifier_2', list(p))
+
# { args_after_notifier = 0; delete p[2]; }
()
if(parse_debug):
print('spec_notifier_3', list(p))
+
# { args_after_notifier += 1; }
()
if(parse_debug):
print('spec_notifier_4', list(p))
+
# { args_after_notifier += 1;
# if (args_after_notifier >= 3) {
# cerr << @3 << ": warning: timing checks are not supported "
if(parse_debug):
print('spec_notifier_5', list(p))
+
# { args_after_notifier = 0; delete[]p[1]; }
()
if(parse_debug):
print('statement_item_1', list(p))
+
# { PCAssign*tmp = new PCAssign(p[2], p[4]);
# FILE_NAME(tmp, @1);
# p[0] = tmp;
# }
()
+# TODO: read all statement items
+
def p_statement_item_2(p):
'''statement_item : K_deassign lpvalue ';' '''
if(parse_debug):
print('statement_item_2', list(p))
+
# { PDeassign*tmp = new PDeassign(p[2]);
# FILE_NAME(tmp, @1);
# p[0] = tmp;
if(parse_debug):
print('statement_item_3', list(p))
+
# { PForce*tmp = new PForce(p[2], p[4]);
# FILE_NAME(tmp, @1);
# p[0] = tmp;
if(parse_debug):
print('statement_item_4', list(p))
+
# { PRelease*tmp = new PRelease(p[2]);
# FILE_NAME(tmp, @1);
# p[0] = tmp;
if(parse_debug):
print('statement_item_5', list(p))
+
# { PBlock*tmp = new PBlock(PBlock::BL_SEQ);
# FILE_NAME(tmp, @1);
# p[0] = tmp;
p[0] = tmp
+
# { PBlock*tmp;
# if (p[3]) {
# pform_pop_scope();
p[0] = list(p)
+
# { pform_pop_scope();
# assert(! current_block_stack.empty());
# PBlock*tmp = current_block_stack.top();
if(parse_debug):
print('statement_item_8', list(p))
+
# { PBlock*tmp = new PBlock(p[2]);
# FILE_NAME(tmp, @1);
# p[0] = tmp;
if(parse_debug):
print('statement_item_9', list(p))
+
# { PBlock*tmp;
# if (p[3]) {
# pform_pop_scope();
if(parse_debug):
print('statement_item_10', list(p))
+
# { pform_pop_scope();
# assert(! current_block_stack.empty());
# PBlock*tmp = current_block_stack.top();
if(parse_debug):
print('statement_item_11', list(p))
+
# { PDisable*tmp = new PDisable(*p[2]);
# FILE_NAME(tmp, @1);
# delete p[2];
if(parse_debug):
print('statement_item_12', list(p))
+
# { pform_name_t tmp_name;
# PDisable*tmp = new PDisable(tmp_name);
# FILE_NAME(tmp, @1);
if(parse_debug):
print('statement_item_13', list(p))
+
# { PTrigger*tmp = new PTrigger(*p[2]);
# FILE_NAME(tmp, @1);
# delete p[2];
if(parse_debug):
print('statement_item_17', list(p))
+
# { PCase*tmp = new PCase(NetCase::EQ, p[3], p[5]);
# FILE_NAME(tmp, @1);
# p[0] = tmp;
if(parse_debug):
print('statement_item_18', list(p))
+
# { PCase*tmp = new PCase(NetCase::EQX, p[3], p[5]);
# FILE_NAME(tmp, @1);
# p[0] = tmp;
if(parse_debug):
print('statement_item_19', list(p))
+
# { PCase*tmp = new PCase(NetCase::EQZ, p[3], p[5]);
# FILE_NAME(tmp, @1);
# p[0] = tmp;
if(parse_debug):
print('statement_item_20', list(p))
+
# { yyerrok; }
()
if(parse_debug):
print('statement_item_21', list(p))
+
# { yyerrok; }
()
if(parse_debug):
print('statement_item_22', list(p))
+
# { yyerrok; }
()
if(parse_debug):
print('statement_item_23', list(p))
+ p[0] = absyn.cond_statement3(p[3], p[5], None)
+
+
# { PCondit*tmp = new PCondit(p[3], p[5], 0);
# FILE_NAME(tmp, @1);
# p[0] = tmp;
p[0] = absyn.cond_statement3(p[3], p[5], p[7])
-
# { PCondit*tmp = new PCondit(p[3], p[5], p[7]);
# FILE_NAME(tmp, @1);
# p[0] = tmp;
if(parse_debug):
print('statement_item_25', list(p))
+
# { yyerror(@1, "error: Malformed conditional expression.");
# p[0] = p[5];
# }
if(parse_debug):
print('statement_item_26', list(p))
+
# { yyerror(@1, "error: Malformed conditional expression.");
# p[0] = p[5];
# }
if(parse_debug):
print('statement_item_28', list(p))
+
# { p[0] = pform_compressed_assign_from_inc_dec(@1, p[1]); }
()
if(parse_debug):
print('statement_item_29', list(p))
+
# { PExpr*del = p[1]->front();
# assert(p[1]->size() == 1);
# delete p[1];
if(parse_debug):
print('statement_item_30', list(p))
+
# { PEventStatement*tmp = p[1];
# if (tmp == 0) {
# yyerror(@1, "error: Invalid event control.");
if(parse_debug):
print('statement_item_31', list(p))
+
# { PEventStatement*tmp = new PEventStatement;
# FILE_NAME(tmp, @1);
# tmp->set_statement(p[3]);
if(parse_debug):
print('statement_item_32', list(p))
+
# { PEventStatement*tmp = new PEventStatement;
# FILE_NAME(tmp, @1);
# tmp->set_statement(p[5]);
"""
p[0] = absyn.assign3(p[1], p[2], p[3])
+
# { PAssign*tmp = new PAssign(p[1],p[3]);
# FILE_NAME(tmp, @1);
# p[0] = tmp;
if(parse_debug):
print('statement_item_34', list(p))
+
# { yyerror(@2, "Syntax in assignment statement l-value.");
# yyerrok;
# p[0] = new PNoop;
if(parse_debug):
print('statement_item_35', list(p))
+
# { PAssignNB*tmp = new PAssignNB(p[1],p[3]);
# FILE_NAME(tmp, @1);
# p[0] = tmp;
if(parse_debug):
print('statement_item_36', list(p))
+
# { yyerror(@2, "Syntax in assignment statement l-value.");
# yyerrok;
# p[0] = new PNoop;
if(parse_debug):
print('statement_item_37', list(p))
+
# { PExpr*del = p[3]->front(); p[3]->pop_front();
# assert(p[3]->empty());
# PAssign*tmp = new PAssign(p[1],del,p[4]);
if(parse_debug):
print('statement_item_38', list(p))
+
# { PExpr*del = p[3]->front(); p[3]->pop_front();
# assert(p[3]->empty());
# PAssignNB*tmp = new PAssignNB(p[1],del,p[4]);
if(parse_debug):
print('statement_item_39', list(p))
+
# { PAssign*tmp = new PAssign(p[1],0,p[3],p[4]);
# FILE_NAME(tmp, @1);
# p[0] = tmp;
if(parse_debug):
print('statement_item_40', list(p))
+
# { PAssign*tmp = new PAssign(p[1],p[5],p[7],p[8]);
# FILE_NAME(tmp,@1);
# tmp->set_lineno(@1.first_line);
if(parse_debug):
print('statement_item_41', list(p))
+
# { PAssignNB*tmp = new PAssignNB(p[1],0,p[3],p[4]);
# FILE_NAME(tmp, @1);
# p[0] = tmp;
if(parse_debug):
print('statement_item_42', list(p))
+
# { PAssignNB*tmp = new PAssignNB(p[1],p[5],p[7],p[8]);
# FILE_NAME(tmp, @1);
# p[0] = tmp;
if(parse_debug):
print('statement_item_43', list(p))
+
# { PAssign*tmp = new PAssign(p[1],p[3]);
# FILE_NAME(tmp, @1);
# p[0] = tmp;
if(parse_debug):
print('statement_item_44', list(p))
+
# { PAssign*tmp = new PAssign(p[1],p[3]);
# FILE_NAME(tmp, @1);
# p[0] = tmp;
if(parse_debug):
print('statement_item_45', list(p))
+
# { PEventStatement*tmp;
# PEEvent*etmp = new PEEvent(PEEvent::POSITIVE, p[3]);
# tmp = new PEventStatement(etmp);
if(parse_debug):
print('statement_item_46', list(p))
+
# { PEventStatement*tmp = new PEventStatement((PEEvent*)0);
# FILE_NAME(tmp,@1);
# p[0] = tmp;
if(parse_debug):
print('statement_item_47', list(p))
+
# { PCallTask*tmp = new PCallTask(lex_strings.make(p[1]), *p[3]);
# FILE_NAME(tmp,@1);
# delete[]p[1];
if(parse_debug):
print('statement_item_48', list(p))
+
# { list<PExpr*>pt;
# PCallTask*tmp = new PCallTask(lex_strings.make(p[1]), pt);
# FILE_NAME(tmp,@1);
if(parse_debug):
print('statement_item_49', list(p))
+
# { PCallTask*tmp = pform_make_call_task(@1, *p[1], *p[3]);
# delete p[1];
# delete p[3];
if(parse_debug):
print('statement_item_50', list(p))
+
# { /* ....randomize with { <constraints> } */
# if (p[1] && peek_tail_name(*p[1]) == "randomize") {
# if (!gn_system_verilog())
if(parse_debug):
print('statement_item_51', list(p))
+
# { pform_name_t*t_name = p[1];
# while (! p[3]->empty()) {
# t_name->push_back(p[3]->front());
if(parse_debug):
print('statement_item_52', list(p))
+
# { list<PExpr*>pt;
# PCallTask*tmp = pform_make_call_task(@1, *p[1], pt);
# delete p[1];
if(parse_debug):
print('statement_item_53', list(p))
+
# { PChainConstructor*tmp = new PChainConstructor(*p[5]);
# FILE_NAME(tmp, @3);
# delete p[1];
if(parse_debug):
print('statement_item_54', list(p))
+
# { yyerror(@3, "error: Syntax error in task arguments.");
# list<PExpr*>pt;
# PCallTask*tmp = pform_make_call_task(@1, *p[1], pt);
if(parse_debug):
print('statement_item_55', list(p))
+
# { yyerror(@2, "error: malformed statement");
# yyerrok;
# p[0] = new PNoop;
def p__embed0_statement_item(p):
'''_embed0_statement_item : '''
+
# { PBlock*tmp = pform_push_block_scope(0, PBlock::BL_SEQ);
# FILE_NAME(tmp, @1);
# current_block_stack.push(tmp);
def p__embed1_statement_item(p):
'''_embed1_statement_item : '''
+
# { if (p[3]) {
# if (! gn_system_verilog()) {
# yyerror("error: Variable declaration in unnamed block "
def p__embed2_statement_item(p):
'''_embed2_statement_item : '''
+
# { PBlock*tmp = pform_push_block_scope(p[3], PBlock::BL_SEQ);
# FILE_NAME(tmp, @1);
# current_block_stack.push(tmp);
def p__embed3_statement_item(p):
'''_embed3_statement_item : '''
+
# { PBlock*tmp = pform_push_block_scope(0, PBlock::BL_PAR);
# FILE_NAME(tmp, @1);
# current_block_stack.push(tmp);
def p__embed4_statement_item(p):
'''_embed4_statement_item : '''
+
# { if (p[3]) {
# if (! gn_system_verilog()) {
# yyerror("error: Variable declaration in unnamed block "
def p__embed5_statement_item(p):
'''_embed5_statement_item : '''
+
# { PBlock*tmp = pform_push_block_scope(p[3], PBlock::BL_PAR);
# FILE_NAME(tmp, @1);
# current_block_stack.push(tmp);
if(parse_debug):
print('compressed_statement_1', list(p))
+
# { PAssign*tmp = new PAssign(p[1], '+', p[3]);
# FILE_NAME(tmp, @1);
# p[0] = tmp;
if(parse_debug):
print('compressed_statement_2', list(p))
+
# { PAssign*tmp = new PAssign(p[1], '-', p[3]);
# FILE_NAME(tmp, @1);
# p[0] = tmp;
if(parse_debug):
print('compressed_statement_3', list(p))
+
# { PAssign*tmp = new PAssign(p[1], '*', p[3]);
# FILE_NAME(tmp, @1);
# p[0] = tmp;
if(parse_debug):
print('compressed_statement_4', list(p))
+
# { PAssign*tmp = new PAssign(p[1], '/', p[3]);
# FILE_NAME(tmp, @1);
# p[0] = tmp;
if(parse_debug):
print('compressed_statement_5', list(p))
+
# { PAssign*tmp = new PAssign(p[1], '%', p[3]);
# FILE_NAME(tmp, @1);
# p[0] = tmp;
if(parse_debug):
print('compressed_statement_6', list(p))
+
# { PAssign*tmp = new PAssign(p[1], '&', p[3]);
# FILE_NAME(tmp, @1);
# p[0] = tmp;
if(parse_debug):
print('compressed_statement_7', list(p))
+
# { PAssign*tmp = new PAssign(p[1], '|', p[3]);
# FILE_NAME(tmp, @1);
# p[0] = tmp;
if(parse_debug):
print('compressed_statement_8', list(p))
+
# { PAssign*tmp = new PAssign(p[1], '^', p[3]);
# FILE_NAME(tmp, @1);
# p[0] = tmp;
if(parse_debug):
print('compressed_statement_9', list(p))
+
# { PAssign *tmp = new PAssign(p[1], 'l', p[3]);
# FILE_NAME(tmp, @1);
# p[0] = tmp;
if(parse_debug):
print('compressed_statement_10', list(p))
+
# { PAssign*tmp = new PAssign(p[1], 'r', p[3]);
# FILE_NAME(tmp, @1);
# p[0] = tmp;
if(parse_debug):
print('compressed_statement_11', list(p))
+
# { PAssign *tmp = new PAssign(p[1], 'R', p[3]);
# FILE_NAME(tmp, @1);
# p[0] = tmp;
if(parse_debug):
print('statement_or_null_list_opt_2', list(p))
+
# { p[0] = None }
()
tmp.add_statement(p[2])
p[0] = tmp
-
# { vector<Statement*>*tmp = p[1];
# if (p[2]) tmp->push_back(p[2]);
# p[0] = tmp;
tmp.add_statement(p[1])
p[0] = tmp
+
# { vector<Statement*>*tmp = new vector<Statement*>(0);
# if (p[1]) tmp->push_back(p[1]);
# p[0] = tmp;
if(parse_debug):
print('analog_statement_1', list(p))
+
# { p[0] = pform_contribution_statement(@2, p[1], p[3]); }
()
if(parse_debug):
print('task_item_1', list(p))
+
# { p[0] = new vector<pform_tf_port_t>(0); }
()
if(parse_debug):
print('task_item_list_1', list(p))
+
# { vector<pform_tf_port_t>*tmp = p[1];
# size_t s1 = tmp->size();
# tmp->resize(s1 + p[2]->size());
if(parse_debug):
print('task_item_list_opt_2', list(p))
+
# { p[0] = None }
()
if(parse_debug):
print('tf_port_list_opt_2', list(p))
+
# { p[0] = None }
()
if(parse_debug):
print('udp_body_1', list(p))
+
# { lex_end_table();
# p[0] = p[2];
# }
if(parse_debug):
print('udp_body_2', list(p))
+
# { lex_end_table();
# yyerror(@1, "error: Empty UDP table.");
# p[0] = None
if(parse_debug):
print('udp_body_3', list(p))
+
# { lex_end_table();
# yyerror(@2, "Errors in UDP table");
# yyerrok;
if(parse_debug):
print('udp_comb_entry_1', list(p))
+
# { char*tmp = new char[strlen(p[1])+3];
# strcpy(tmp, p[1]);
# char*tp = tmp+strlen(tmp);
if(parse_debug):
print('udp_comb_entry_list_1', list(p))
+
# { list<string>*tmp = new list<string>;
# tmp->push_back(p[1]);
# delete[]p[1];
if(parse_debug):
print('udp_comb_entry_list_2', list(p))
+
# { list<string>*tmp = p[1];
# tmp->push_back(p[2]);
# delete[]p[2];
if(parse_debug):
print('udp_sequ_entry_list_1', list(p))
+
# { list<string>*tmp = new list<string>;
# tmp->push_back(p[1]);
# delete[]p[1];
if(parse_debug):
print('udp_sequ_entry_list_2', list(p))
+
# { list<string>*tmp = p[1];
# tmp->push_back(p[2]);
# delete[]p[2];
if(parse_debug):
print('udp_sequ_entry_1', list(p))
+
# { char*tmp = new char[strlen(p[1])+5];
# strcpy(tmp, p[1]);
# char*tp = tmp+strlen(tmp);
if(parse_debug):
print('udp_initial_1', list(p))
+
# { PExpr*etmp = new PENumber(p[4]);
# PEIdent*itmp = new PEIdent(lex_strings.make(p[2]));
# PAssign*atmp = new PAssign(itmp, etmp);
if(parse_debug):
print('udp_init_opt_2', list(p))
+
# { p[0] = None }
()
if(parse_debug):
print('udp_input_list_1', list(p))
+
# { char*tmp = new char[2];
# tmp[0] = p[1];
# tmp[1] = 0;
if(parse_debug):
print('udp_input_list_2', list(p))
+
# { char*tmp = new char[strlen(p[1])+2];
# strcpy(tmp, p[1]);
# char*tp = tmp+strlen(tmp);
if(parse_debug):
print('udp_input_sym_1', list(p))
+
# { p[0] = '0'; }
()
if(parse_debug):
print('udp_input_sym_2', list(p))
+
# { p[0] = '1'; }
()
if(parse_debug):
print('udp_input_sym_3', list(p))
+
# { p[0] = 'x'; }
()
if(parse_debug):
print('udp_input_sym_4', list(p))
+
# { p[0] = '?'; }
()
if(parse_debug):
print('udp_input_sym_5', list(p))
+
# { p[0] = 'b'; }
()
if(parse_debug):
print('udp_input_sym_6', list(p))
+
# { p[0] = '*'; }
()
if(parse_debug):
print('udp_input_sym_7', list(p))
+
# { p[0] = '%'; }
()
if(parse_debug):
print('udp_input_sym_8', list(p))
+
# { p[0] = 'f'; }
()
if(parse_debug):
print('udp_input_sym_9', list(p))
+
# { p[0] = 'F'; }
()
if(parse_debug):
print('udp_input_sym_10', list(p))
+
# { p[0] = 'l'; }
()
if(parse_debug):
print('udp_input_sym_11', list(p))
+
# { p[0] = 'h'; }
()
if(parse_debug):
print('udp_input_sym_12', list(p))
+
# { p[0] = 'B'; }
()
if(parse_debug):
print('udp_input_sym_13', list(p))
+
# { p[0] = 'r'; }
()
if(parse_debug):
print('udp_input_sym_14', list(p))
+
# { p[0] = 'R'; }
()
if(parse_debug):
print('udp_input_sym_15', list(p))
+
# { p[0] = 'M'; }
()
if(parse_debug):
print('udp_input_sym_16', list(p))
+
# { p[0] = 'n'; }
()
if(parse_debug):
print('udp_input_sym_17', list(p))
+
# { p[0] = 'N'; }
()
if(parse_debug):
print('udp_input_sym_18', list(p))
+
# { p[0] = 'p'; }
()
if(parse_debug):
print('udp_input_sym_19', list(p))
+
# { p[0] = 'P'; }
()
if(parse_debug):
print('udp_input_sym_20', list(p))
+
# { p[0] = 'Q'; }
()
if(parse_debug):
print('udp_input_sym_21', list(p))
+
# { p[0] = 'q'; }
()
if(parse_debug):
print('udp_input_sym_22', list(p))
+
# { p[0] = '_'; }
()
if(parse_debug):
print('udp_input_sym_23', list(p))
+
# { p[0] = '+'; }
()
if(parse_debug):
print('udp_input_sym_24', list(p))
+
# { yyerror(@1, "internal error: Input digits parse as decimal number!"); p[0] = '0'; }
()
if(parse_debug):
print('udp_output_sym_1', list(p))
+
# { p[0] = '0'; }
()
if(parse_debug):
print('udp_output_sym_2', list(p))
+
# { p[0] = '1'; }
()
if(parse_debug):
print('udp_output_sym_3', list(p))
+
# { p[0] = 'x'; }
()
if(parse_debug):
print('udp_output_sym_4', list(p))
+
# { p[0] = '-'; }
()
if(parse_debug):
print('udp_output_sym_5', list(p))
+
# { yyerror(@1, "internal error: Output digits parse as decimal number!"); p[0] = '0'; }
()
if(parse_debug):
print('udp_port_decl_1', list(p))
+
# { p[0] = pform_make_udp_input_ports(p[2]); }
()
if(parse_debug):
print('udp_port_decl_2', list(p))
+
# { perm_string pname = lex_strings.make(p[2]);
# PWire*pp = new PWire(pname, NetNet::IMPLICIT, NetNet::POUTPUT, IVL_VT_LOGIC);
# vector<PWire*>*tmp = new vector<PWire*>(1);
if(parse_debug):
print('udp_port_decl_3', list(p))
+
# { perm_string pname = lex_strings.make(p[2]);
# PWire*pp = new PWire(pname, NetNet::REG, NetNet::PIMPLICIT, IVL_VT_LOGIC);
# vector<PWire*>*tmp = new vector<PWire*>(1);
if(parse_debug):
print('udp_port_decl_4', list(p))
+
# { perm_string pname = lex_strings.make(p[3]);
# PWire*pp = new PWire(pname, NetNet::REG, NetNet::POUTPUT, IVL_VT_LOGIC);
# vector<PWire*>*tmp = new vector<PWire*>(1);
if(parse_debug):
print('udp_port_decls_2', list(p))
+
# { vector<PWire*>*tmp = p[1];
# size_t s1 = p[1]->size();
# tmp->resize(s1+p[2]->size());
if(parse_debug):
print('udp_port_list_1', list(p))
+
# { list<perm_string>*tmp = new list<perm_string>;
# tmp->push_back(lex_strings.make(p[1]));
# delete[]p[1];
if(parse_debug):
print('udp_port_list_2', list(p))
+
# { list<perm_string>*tmp = p[1];
# tmp->push_back(lex_strings.make(p[3]));
# delete[]p[3];
if(parse_debug):
print('udp_initial_expr_opt_2', list(p))
+
# { p[0] = None }
()
if(parse_debug):
print('udp_input_declaration_list_1', list(p))
+
# { list<perm_string>*tmp = new list<perm_string>;
# tmp->push_back(lex_strings.make(p[2]));
# p[0] = tmp;
if(parse_debug):
print('udp_input_declaration_list_2', list(p))
+
# { list<perm_string>*tmp = p[1];
# tmp->push_back(lex_strings.make(p[4]));
# p[0] = tmp;
if(parse_debug):
print('udp_primitive_1', list(p))
+
# { perm_string tmp2 = lex_strings.make(p[2]);
# pform_make_udp(tmp2, p[4], p[7], p[9], p[8],
# @2.text, @2.first_line);
if(parse_debug):
print('udp_primitive_2', list(p))
+
# { perm_string tmp2 = lex_strings.make(p[2]);
# perm_string tmp6 = lex_strings.make(p[6]);
# pform_make_udp(tmp2, p[5], tmp6, p[7], p[9], p[12],