X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=parse_sv.py;h=6a153fffe282fa2aafa6f7a762e98809ef11656e;hb=ebec976370a56af022e9830e60c1dbc47dc1241c;hp=c1c0a9ca68e874ed4cafa0f897e9627abb0af71e;hpb=b41a016efd59e3ee5ae118eb4e50d7b832c83b6e;p=sv2nmigen.git diff --git a/parse_sv.py b/parse_sv.py index c1c0a9c..6a153ff 100644 --- a/parse_sv.py +++ b/parse_sv.py @@ -108,6 +108,14 @@ class DataType: self.signed = signed +class StatementList: + def __init__(self): + self.statements = [] + + def add_statement(self, s): + self.statements += [s] + + # -------------- RULES ---------------- () @@ -133,6 +141,7 @@ def p_source_text_2(p): def p__embed0_source_text(p): '''_embed0_source_text : ''' + # { pform_set_scope_timescale(yyloc); } () @@ -151,6 +160,7 @@ def p_assignment_pattern_1(p): if(parse_debug): print('assignment_pattern_1', list(p)) + # { PEAssignPattern*tmp = new PEAssignPattern(*p[2]); # FILE_NAME(tmp, @1); # delete p[2]; @@ -164,6 +174,7 @@ def p_assignment_pattern_2(p): if(parse_debug): print('assignment_pattern_2', list(p)) + # { PEAssignPattern*tmp = new PEAssignPattern; # FILE_NAME(tmp, @1); # p[0] = tmp; @@ -194,6 +205,7 @@ def p_class_declaration_1(p): 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."); @@ -206,6 +218,7 @@ def p_class_declaration_1(p): def p__embed0_class_declaration(p): '''_embed0_class_declaration : ''' + # { pform_start_class_declaration(@2, p[4], p[5].type, p[5].exprs, p[3]); } () @@ -213,6 +226,7 @@ def p__embed0_class_declaration(p): def p__embed1_class_declaration(p): '''_embed1_class_declaration : ''' + # { // Process a class. # pform_end_class_declaration(@9); # } @@ -242,6 +256,7 @@ def p_class_identifier_1(p): 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]); @@ -259,6 +274,7 @@ def p_class_identifier_2(p): if(parse_debug): print('class_identifier_2', list(p)) + # { class_type_t*tmp = dynamic_cast(p[1].type); # if (tmp == 0) { # yyerror(@1, "Type name \"%s\"is not a predeclared class name.", p[1].text); @@ -274,6 +290,7 @@ def p_class_declaration_endlabel_opt_1(p): if(parse_debug): print('class_declaration_endlabel_opt_1', list(p)) + # { class_type_t*tmp = dynamic_cast (p[2].type); # if (tmp == 0) { # yyerror(@2, "error: class declaration endlabel \"%s\" is not a class name\n", p[2].text); @@ -301,6 +318,7 @@ def p_class_declaration_endlabel_opt_3(p): if(parse_debug): print('class_declaration_endlabel_opt_3', list(p)) + # { p[0] = None } () @@ -310,6 +328,7 @@ def p_class_declaration_extends_opt_1(p): 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; @@ -322,6 +341,7 @@ def p_class_declaration_extends_opt_2(p): 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; @@ -334,6 +354,7 @@ def p_class_declaration_extends_opt_3(p): if(parse_debug): print('class_declaration_extends_opt_3', list(p)) + # { p[0].type = 0; p[0].exprs = 0; } () @@ -379,6 +400,7 @@ def p_class_item_1(p): 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); @@ -394,6 +416,7 @@ def p_class_item_2(p): if(parse_debug): print('class_item_2', list(p)) + # { pform_class_property(@2, p[1], p[2], p[3]); } () @@ -403,6 +426,7 @@ def p_class_item_3(p): if(parse_debug): print('class_item_3', list(p)) + # { pform_class_property(@1, p[2] | property_qualifier_t::make_const(), p[3], p[4]); } () @@ -412,6 +436,7 @@ def p_class_item_4(p): if(parse_debug): print('class_item_4', list(p)) + # { /* The task_declaration rule puts this into the class */ } () @@ -421,6 +446,7 @@ def p_class_item_5(p): if(parse_debug): print('class_item_5', list(p)) + # { /* The function_declaration rule puts this into the class */ } () @@ -430,6 +456,7 @@ def p_class_item_6(p): if(parse_debug): print('class_item_6', list(p)) + # { yyerror(@1, "sorry: External constructors are not yet supported."); } () @@ -439,6 +466,7 @@ def p_class_item_7(p): if(parse_debug): print('class_item_7', list(p)) + # { yyerror(@1, "sorry: External constructors are not yet supported."); } () @@ -448,6 +476,7 @@ def p_class_item_8(p): if(parse_debug): print('class_item_8', list(p)) + # { yyerror(@1, "sorry: External methods are not yet supported."); # delete[] p[5]; # } @@ -459,6 +488,7 @@ def p_class_item_9(p): if(parse_debug): print('class_item_9', list(p)) + # { yyerror(@1, "sorry: External methods are not yet supported."); # delete[] p[5]; # } @@ -470,6 +500,7 @@ def p_class_item_10(p): if(parse_debug): print('class_item_10', list(p)) + # { yyerror(@1, "sorry: External methods are not yet supported."); # delete[] p[4]; # } @@ -481,6 +512,7 @@ def p_class_item_11(p): if(parse_debug): print('class_item_11', list(p)) + # { yyerror(@1, "sorry: External methods are not yet supported."); # delete[] p[4]; # } @@ -501,6 +533,7 @@ def p_class_item_13(p): if(parse_debug): print('class_item_13', list(p)) + # { yyerror(@3, "error: Errors in variable names after data type."); # yyerrok; # } @@ -512,6 +545,7 @@ def p_class_item_14(p): if(parse_debug): print('class_item_14', list(p)) + # { yyerror(@3, "error: %s doesn't name a type.", p[2]); # yyerrok; # } @@ -523,6 +557,7 @@ def p_class_item_15(p): if(parse_debug): print('class_item_15', list(p)) + # { yyerror(@1, "error: I give up on this class constructor declaration."); # yyerrok; # } @@ -534,6 +569,7 @@ def p_class_item_16(p): if(parse_debug): print('class_item_16', list(p)) + # { yyerror(@2, "error: invalid class item."); # yyerrok; # } @@ -543,6 +579,7 @@ def p_class_item_16(p): def p__embed0_class_item(p): '''_embed0_class_item : ''' + # { assert(current_function==0); # current_function = pform_push_constructor_scope(@3); # } @@ -554,6 +591,7 @@ def p_class_item_qualifier_1(p): if(parse_debug): print('class_item_qualifier_1', list(p)) + # { p[0] = property_qualifier_t::make_static(); } () @@ -563,6 +601,7 @@ def p_class_item_qualifier_2(p): if(parse_debug): print('class_item_qualifier_2', list(p)) + # { p[0] = property_qualifier_t::make_protected(); } () @@ -572,6 +611,7 @@ def p_class_item_qualifier_3(p): if(parse_debug): print('class_item_qualifier_3', list(p)) + # { p[0] = property_qualifier_t::make_local(); } () @@ -581,6 +621,7 @@ def p_class_item_qualifier_list_1(p): if(parse_debug): print('class_item_qualifier_list_1', list(p)) + # { p[0] = p[1] | p[2]; } () @@ -610,6 +651,7 @@ def p_class_item_qualifier_opt_2(p): if(parse_debug): print('class_item_qualifier_opt_2', list(p)) + # { p[0] = property_qualifier_t::make_none(); } () @@ -619,6 +661,7 @@ def p_class_new_1(p): if(parse_debug): print('class_new_1', list(p)) + # { list*expr_list = p[3]; # strip_tail_items(expr_list); # PENewClass*tmp = new PENewClass(*expr_list); @@ -634,6 +677,7 @@ def p_class_new_2(p): if(parse_debug): print('class_new_2', list(p)) + # { PEIdent*tmpi = new PEIdent(*p[2]); # FILE_NAME(tmpi, @2); # PENewCopy*tmp = new PENewCopy(tmpi); @@ -649,6 +693,7 @@ def p_class_new_3(p): if(parse_debug): print('class_new_3', list(p)) + # { PENewClass*tmp = new PENewClass; # FILE_NAME(tmp, @1); # p[0] = tmp; @@ -661,6 +706,7 @@ def p_concurrent_assertion_item_1(p): if(parse_debug): print('concurrent_assertion_item_1', list(p)) + # { /* */ # if (gn_assertions_flag) { # yyerror(@2, "sorry: concurrent_assertion_item not supported." @@ -675,6 +721,7 @@ def p_concurrent_assertion_item_2(p): if(parse_debug): print('concurrent_assertion_item_2', list(p)) + # { yyerrok; # yyerror(@2, "error: Error in property_spec of concurrent assertion item."); # } @@ -731,6 +778,7 @@ def p_constraint_declaration_1(p): if(parse_debug): print('constraint_declaration_1', list(p)) + # { yyerror(@2, "sorry: Constraint declarations not supported."); } () @@ -740,6 +788,7 @@ def p_constraint_declaration_2(p): if(parse_debug): print('constraint_declaration_2', list(p)) + # { yyerror(@4, "error: Errors in the constraint block item list."); } () @@ -821,6 +870,7 @@ def p_constraint_prototype_1(p): if(parse_debug): print('constraint_prototype_1', list(p)) + # { yyerror(@2, "sorry: Constraint prototypes not supported."); } () @@ -848,6 +898,7 @@ def p_data_declaration_1(p): 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); @@ -872,6 +923,7 @@ def p_data_type_1(p): 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) { @@ -892,6 +944,7 @@ def p_data_type_2(p): 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; @@ -905,6 +958,7 @@ def p_data_type_3(p): print('data_type_3', list(p)) p[0] = p[1] + # { if (!p[1]->packed_flag) { # yyerror(@1, "sorry: Unpacked structs not supported."); # } @@ -928,6 +982,7 @@ def p_data_type_5(p): 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; @@ -940,6 +995,7 @@ def p_data_type_6(p): if(parse_debug): print('data_type_6', list(p)) + # { list*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; @@ -954,6 +1010,7 @@ def p_data_type_7(p): if(parse_debug): print('data_type_7', list(p)) + # { list*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(); @@ -967,6 +1024,7 @@ def p_data_type_8(p): 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); @@ -982,6 +1040,7 @@ def p_data_type_9(p): if(parse_debug): print('data_type_9', list(p)) + # { lex_in_package_scope(0); # p[0] = p[4].type; # delete[]p[4].text; @@ -994,6 +1053,7 @@ def p_data_type_10(p): if(parse_debug): print('data_type_10', list(p)) + # { string_type_t*tmp = new string_type_t; # FILE_NAME(tmp, @1); # p[0] = tmp; @@ -1004,6 +1064,7 @@ def p_data_type_10(p): def p__embed0_data_type(p): '''_embed0_data_type : ''' + # { lex_in_package_scope(p[1]); } () @@ -1023,6 +1084,7 @@ def p_data_type_or_implicit_2(p): 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); @@ -1037,6 +1099,7 @@ def p_data_type_or_implicit_3(p): 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); @@ -1050,6 +1113,7 @@ def p_data_type_or_implicit_4(p): if(parse_debug > 2): print('data_type_or_implicit_4', list(p)) + # { p[0] = None } () @@ -1069,6 +1133,7 @@ def p_data_type_or_implicit_or_void_2(p): 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; @@ -1144,6 +1209,7 @@ def p_description_8(p): 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]; @@ -1193,6 +1259,7 @@ def p_dynamic_array_new_1(p): if(parse_debug): print('dynamic_array_new_1', list(p)) + # { p[0] = new PENewArray(p[3], 0); # FILE_NAME(p[0], @1); # } @@ -1204,6 +1271,7 @@ def p_dynamic_array_new_2(p): if(parse_debug): print('dynamic_array_new_2', list(p)) + # { p[0] = new PENewArray(p[3], p[6]); # FILE_NAME(p[0], @1); # } @@ -1215,6 +1283,7 @@ def p_for_step_1(p): if(parse_debug): print('for_step_1', list(p)) + # { PAssign*tmp = new PAssign(p[1],p[3]); # FILE_NAME(tmp, @1); # p[0] = tmp; @@ -1227,6 +1296,7 @@ def p_for_step_2(p): if(parse_debug): print('for_step_2', list(p)) + # { p[0] = pform_compressed_assign_from_inc_dec(@1, p[1]); } () @@ -1246,6 +1316,7 @@ def p_function_declaration_1(p): 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) { @@ -1268,6 +1339,7 @@ def p_function_declaration_2(p): 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) { @@ -1290,6 +1362,7 @@ def p_function_declaration_3(p): 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) { @@ -1309,6 +1382,7 @@ def p_function_declaration_3(p): def p__embed0_function_declaration(p): '''_embed0_function_declaration : ''' + # { assert(current_function == 0); # current_function = pform_push_function_scope(@1, p[4], p[2]); # } @@ -1318,6 +1392,7 @@ def p__embed0_function_declaration(p): 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]); @@ -1331,6 +1406,7 @@ def p__embed1_function_declaration(p): def p__embed2_function_declaration(p): '''_embed2_function_declaration : ''' + # { assert(current_function == 0); # current_function = pform_push_function_scope(@1, p[4], p[2]); # } @@ -1340,6 +1416,7 @@ def p__embed2_function_declaration(p): 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]); @@ -1356,6 +1433,7 @@ def p__embed3_function_declaration(p): def p__embed4_function_declaration(p): '''_embed4_function_declaration : ''' + # { /* */ # if (current_function) { # pform_pop_scope(); @@ -1393,6 +1471,7 @@ def p_implicit_class_handle_1(p): if(parse_debug): print('implicit_class_handle_1', list(p)) + # { p[0] = pform_create_this(); } () @@ -1402,6 +1481,7 @@ def p_implicit_class_handle_2(p): if(parse_debug): print('implicit_class_handle_2', list(p)) + # { p[0] = pform_create_super(); } () @@ -1411,6 +1491,7 @@ def p_inc_or_dec_expression_1(p): 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; @@ -1423,6 +1504,7 @@ def p_inc_or_dec_expression_2(p): 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; @@ -1435,6 +1517,7 @@ def p_inc_or_dec_expression_3(p): 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; @@ -1447,6 +1530,7 @@ def p_inc_or_dec_expression_4(p): 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; @@ -1459,6 +1543,7 @@ def p_inside_expression_1(p): if(parse_debug): print('inside_expression_1', list(p)) + # { yyerror(@2, "sorry: \"inside\" expressions not supported yet."); # p[0] = None # } @@ -1500,6 +1585,7 @@ def p_integer_vector_type_4(p): if(parse_debug): print('integer_vector_type_4', list(p)) + # { p[0] = IVL_VT_BOOL; } () @@ -1509,6 +1595,7 @@ def p_join_keyword_1(p): if(parse_debug): print('join_keyword_1', list(p)) + # { p[0] = PBlock::BL_PAR; } () @@ -1518,6 +1605,7 @@ def p_join_keyword_2(p): if(parse_debug): print('join_keyword_2', list(p)) + # { p[0] = PBlock::BL_JOIN_NONE; } () @@ -1527,6 +1615,7 @@ def p_join_keyword_3(p): if(parse_debug): print('join_keyword_3', list(p)) + # { p[0] = PBlock::BL_JOIN_ANY; } () @@ -1536,6 +1625,7 @@ def p_jump_statement_1(p): if(parse_debug): print('jump_statement_1', list(p)) + # { yyerror(@1, "sorry: break statements not supported."); # p[0] = None # } @@ -1547,6 +1637,7 @@ def p_jump_statement_2(p): if(parse_debug): print('jump_statement_2', list(p)) + # { PReturn*tmp = new PReturn(0); # FILE_NAME(tmp, @1); # p[0] = tmp; @@ -1559,6 +1650,7 @@ def p_jump_statement_3(p): if(parse_debug): print('jump_statement_3', list(p)) + # { PReturn*tmp = new PReturn(p[2]); # FILE_NAME(tmp, @1); # p[0] = tmp; @@ -1571,6 +1663,7 @@ def p_lifetime_1(p): if(parse_debug): print('lifetime_1', list(p)) + # { p[0] = LexicalScope::AUTOMATIC; } () @@ -1580,6 +1673,7 @@ def p_lifetime_2(p): if(parse_debug): print('lifetime_2', list(p)) + # { p[0] = LexicalScope::STATIC; } () @@ -1599,6 +1693,7 @@ def p_lifetime_opt_2(p): if(parse_debug > 2): print('lifetime_opt_2', list(p)) + # { p[0] = LexicalScope::INHERITED; } () @@ -1608,6 +1703,7 @@ def p_loop_statement_1(p): 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; @@ -1620,6 +1716,7 @@ def p_loop_statement_2(p): 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]))); # @@ -1646,6 +1743,7 @@ def p_loop_statement_3(p): if(parse_debug): print('loop_statement_3', list(p)) + # { PForever*tmp = new PForever(p[2]); # FILE_NAME(tmp, @1); # p[0] = tmp; @@ -1658,6 +1756,7 @@ def p_loop_statement_4(p): if(parse_debug): print('loop_statement_4', list(p)) + # { PRepeat*tmp = new PRepeat(p[3], p[5]); # FILE_NAME(tmp, @1); # p[0] = tmp; @@ -1670,6 +1769,7 @@ def p_loop_statement_5(p): if(parse_debug): print('loop_statement_5', list(p)) + # { PWhile*tmp = new PWhile(p[3], p[5]); # FILE_NAME(tmp, @1); # p[0] = tmp; @@ -1682,6 +1782,7 @@ def p_loop_statement_6(p): if(parse_debug): print('loop_statement_6', list(p)) + # { PDoWhile*tmp = new PDoWhile(p[5], p[2]); # FILE_NAME(tmp, @1); # p[0] = tmp; @@ -1694,6 +1795,7 @@ def p_loop_statement_7(p): 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(); @@ -1712,6 +1814,7 @@ def p_loop_statement_8(p): if(parse_debug): print('loop_statement_8', list(p)) + # { p[0] = None # yyerror(@1, "error: Error in for loop step assignment."); # } @@ -1723,6 +1826,7 @@ def p_loop_statement_9(p): if(parse_debug): print('loop_statement_9', list(p)) + # { p[0] = None # yyerror(@1, "error: Error in for loop condition expression."); # } @@ -1734,6 +1838,7 @@ def p_loop_statement_10(p): if(parse_debug): print('loop_statement_10', list(p)) + # { p[0] = None # yyerror(@1, "error: Incomprehensible for loop."); # } @@ -1745,6 +1850,7 @@ def p_loop_statement_11(p): if(parse_debug): print('loop_statement_11', list(p)) + # { p[0] = None # yyerror(@1, "error: Error in while loop condition."); # } @@ -1756,6 +1862,7 @@ def p_loop_statement_12(p): if(parse_debug): print('loop_statement_12', list(p)) + # { p[0] = None # yyerror(@1, "error: Error in do/while loop condition."); # } @@ -1767,6 +1874,7 @@ def p_loop_statement_13(p): if(parse_debug): print('loop_statement_13', list(p)) + # { p[0] = None # yyerror(@4, "error: Errors in foreach loop variables list."); # } @@ -1776,6 +1884,7 @@ def p_loop_statement_13(p): 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); @@ -1796,6 +1905,7 @@ def p__embed0_loop_statement(p): 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); @@ -1815,6 +1925,7 @@ def p_list_of_variable_decl_assignments_1(p): if(parse_debug): print('list_of_variable_decl_assignments_1', list(p)) + # { list*tmp = new list; # tmp->push_back(p[1]); # p[0] = tmp; @@ -1827,6 +1938,7 @@ def p_list_of_variable_decl_assignments_2(p): if(parse_debug): print('list_of_variable_decl_assignments_2', list(p)) + # { list*tmp = p[1]; # tmp->push_back(p[3]); # p[0] = tmp; @@ -1839,6 +1951,7 @@ def p_variable_decl_assignment_1(p): 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]) { @@ -1856,6 +1969,7 @@ def p_variable_decl_assignment_2(p): 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]); @@ -1870,6 +1984,7 @@ def p_variable_decl_assignment_3(p): 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; @@ -1886,6 +2001,7 @@ def p_loop_variables_1(p): if(parse_debug): print('loop_variables_1', list(p)) + # { list*tmp = p[1]; # tmp->push_back(lex_strings.make(p[3])); # delete[]p[3]; @@ -1899,6 +2015,7 @@ def p_loop_variables_2(p): if(parse_debug): print('loop_variables_2', list(p)) + # { list*tmp = new list; # tmp->push_back(lex_strings.make(p[1])); # delete[]p[1]; @@ -1955,6 +2072,7 @@ def p_modport_declaration_1(p): def p__embed0_modport_declaration(p): '''_embed0_modport_declaration : ''' + # { if (!pform_in_interface()) # yyerror(@1, "error: modport declarations are only allowed " # "in interfaces."); @@ -1985,6 +2103,7 @@ def p_modport_item_1(p): if(parse_debug): print('modport_item_1', list(p)) + # { pform_end_modport_item(@1); } () @@ -1992,6 +2111,7 @@ def p_modport_item_1(p): def p__embed0_modport_item(p): '''_embed0_modport_item : ''' + # { pform_start_modport_item(@1, p[1]); } () @@ -2019,6 +2139,7 @@ def p_modport_ports_list_3(p): 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); @@ -2035,6 +2156,7 @@ def p_modport_ports_list_4(p): 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."); # } @@ -2046,6 +2168,7 @@ def p_modport_ports_list_5(p): 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); @@ -2062,6 +2185,7 @@ def p_modport_ports_list_6(p): if(parse_debug): print('modport_ports_list_6', list(p)) + # { yyerror(@2, "error: NULL port declarations are not allowed"); } () @@ -2071,6 +2195,7 @@ def p_modport_ports_declaration_1(p): 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); @@ -2085,6 +2210,7 @@ def p_modport_ports_declaration_2(p): 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); @@ -2099,6 +2225,7 @@ def p_modport_ports_declaration_3(p): 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."); @@ -2113,6 +2240,7 @@ def p_modport_ports_declaration_4(p): 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."); @@ -2126,6 +2254,7 @@ def p_modport_ports_declaration_5(p): 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."); @@ -2140,6 +2269,7 @@ def p_modport_simple_port_1(p): 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]; @@ -2190,6 +2320,7 @@ def p_non_integer_type_1(p): if(parse_debug): print('non_integer_type_1', list(p)) + # { p[0] = real_type_t::REAL; } () @@ -2199,6 +2330,7 @@ def p_non_integer_type_2(p): if(parse_debug): print('non_integer_type_2', list(p)) + # { p[0] = real_type_t::REAL; } () @@ -2208,6 +2340,7 @@ def p_non_integer_type_3(p): if(parse_debug): print('non_integer_type_3', list(p)) + # { p[0] = real_type_t::SHORTREAL; } () @@ -2217,6 +2350,7 @@ def p_number_1(p): if(parse_debug): print('number_1', list(p)) + # { p[0] = p[1]; based_size = 0;} () @@ -2228,6 +2362,7 @@ def p_number_2(p): num = Leaf(token.NUMBER, "%s" % (p[1])) p[0] = num + # { p[0] = p[1]; based_size = 0;} () @@ -2239,6 +2374,7 @@ def p_number_3(p): 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; } () @@ -2249,6 +2385,7 @@ def p_number_4(p): if(parse_debug): print('number_4', list(p)) + # { p[0] = p[1]; based_size = 0;} () @@ -2258,6 +2395,7 @@ def p_number_5(p): 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;} @@ -2287,6 +2425,7 @@ def p_package_declaration_1(p): 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]) { @@ -2303,6 +2442,7 @@ def p_package_declaration_1(p): def p__embed0_package_declaration(p): '''_embed0_package_declaration : ''' + # { pform_start_package_declaration(@1, p[3], p[2]); } () @@ -2310,6 +2450,7 @@ def p__embed0_package_declaration(p): def p__embed1_package_declaration(p): '''_embed1_package_declaration : ''' + # { pform_set_scope_timescale(@1); } () @@ -2355,6 +2496,7 @@ def p_package_import_declaration_1(p): if(parse_debug): print('package_import_declaration_1', list(p)) + # { } () @@ -2364,6 +2506,7 @@ def p_package_import_item_1(p): if(parse_debug): print('package_import_item_1', list(p)) + # { pform_package_import(@2, p[1], p[3]); # delete[]p[3]; # } @@ -2375,6 +2518,7 @@ def p_package_import_item_2(p): if(parse_debug): print('package_import_item_2', list(p)) + # { pform_package_import(@2, p[1], 0); # } () @@ -2511,6 +2655,7 @@ def p_port_direction_1(p): if(parse_debug): print('port_direction_1', list(p)) + # { p[0] = NetNet::PINPUT; } () @@ -2520,6 +2665,7 @@ def p_port_direction_2(p): if(parse_debug): print('port_direction_2', list(p)) + # { p[0] = NetNet::POUTPUT; } () @@ -2529,6 +2675,7 @@ def p_port_direction_3(p): if(parse_debug): print('port_direction_3', list(p)) + # { p[0] = NetNet::PINOUT; } () @@ -2538,6 +2685,7 @@ def p_port_direction_4(p): 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."); @@ -2562,6 +2710,7 @@ def p_port_direction_opt_2(p): if(parse_debug): print('port_direction_opt_2', list(p)) + # { p[0] = NetNet::PIMPLICIT; } () @@ -2580,6 +2729,7 @@ def p_procedural_assertion_statement_1(p): if(parse_debug): print('procedural_assertion_statement_1', list(p)) + # { yyerror(@1, "sorry: Simple immediate assertion statements not implemented."); # p[0] = None # } @@ -2591,6 +2741,7 @@ def p_procedural_assertion_statement_2(p): if(parse_debug): print('procedural_assertion_statement_2', list(p)) + # { yyerror(@1, "sorry: Simple immediate assertion statements not implemented."); # p[0] = None # } @@ -2602,6 +2753,7 @@ def p_procedural_assertion_statement_3(p): if(parse_debug): print('procedural_assertion_statement_3', list(p)) + # { yyerror(@1, "sorry: Simple immediate assertion statements not implemented."); # p[0] = None # } @@ -2641,6 +2793,7 @@ def p_property_qualifier_opt_2(p): if(parse_debug): print('property_qualifier_opt_2', list(p)) + # { p[0] = property_qualifier_t::make_none(); } () @@ -2650,6 +2803,7 @@ def p_property_qualifier_list_1(p): if(parse_debug): print('property_qualifier_list_1', list(p)) + # { p[0] = p[1] | p[2]; } () @@ -2696,6 +2850,7 @@ def p_random_qualifier_1(p): if(parse_debug): print('random_qualifier_1', list(p)) + # { p[0] = property_qualifier_t::make_rand(); } () @@ -2705,6 +2860,7 @@ def p_random_qualifier_2(p): if(parse_debug): print('random_qualifier_2', list(p)) + # { p[0] = property_qualifier_t::make_randc(); } () @@ -2752,6 +2908,7 @@ def p_simple_type_or_string_1(p): 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) { @@ -2771,6 +2928,7 @@ def p_simple_type_or_string_2(p): 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; @@ -2783,6 +2941,7 @@ def p_simple_type_or_string_3(p): 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; @@ -2795,6 +2954,7 @@ def p_simple_type_or_string_4(p): if(parse_debug): print('simple_type_or_string_4', list(p)) + # { list*pd = make_range_from_width(integer_width); # vector_type_t*tmp = new vector_type_t(IVL_VT_LOGIC, true, pd); # tmp->reg_flag = true; @@ -2809,6 +2969,7 @@ def p_simple_type_or_string_5(p): if(parse_debug): print('simple_type_or_string_5', list(p)) + # { list*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(); @@ -2822,6 +2983,7 @@ def p_simple_type_or_string_6(p): if(parse_debug): print('simple_type_or_string_6', list(p)) + # { p[0] = p[1].type; # delete[]p[1].text; # } @@ -2833,6 +2995,7 @@ def p_simple_type_or_string_7(p): 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; @@ -2845,6 +3008,7 @@ def p_simple_type_or_string_8(p): 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; @@ -2855,6 +3019,7 @@ def p_simple_type_or_string_8(p): def p__embed0_simple_type_or_string(p): '''_embed0_simple_type_or_string : ''' + # { lex_in_package_scope(p[1]); } () @@ -2865,7 +3030,8 @@ def p_statement_1(p): print('statement_1', list(p)) # { pform_bind_attributes(p[2]->attributes, p[1]); - # p[0] = p[2]; + p[0] = p[2] + # } () @@ -2885,6 +3051,9 @@ def p_statement_or_null_2(p): if(parse_debug): print('statement_or_null_2', list(p)) + raise(Exception("p_statement_or_null_2")) + + # { p[0] = None } () @@ -2939,6 +3108,7 @@ def p_streaming_concatenation_1(p): 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."); @@ -2956,6 +3126,7 @@ def p_task_declaration_1(p): 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 @@ -2981,6 +3152,7 @@ def p_task_declaration_2(p): 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 @@ -3006,6 +3178,7 @@ def p_task_declaration_3(p): 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 @@ -3031,6 +3204,7 @@ def p_task_declaration_4(p): 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 @@ -3054,6 +3228,7 @@ def p_task_declaration_4(p): def p__embed0_task_declaration(p): '''_embed0_task_declaration : ''' + # { assert(current_task == 0); # current_task = pform_push_task_scope(@1, p[3], p[2]); # } @@ -3063,6 +3238,7 @@ def p__embed0_task_declaration(p): 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); @@ -3079,6 +3255,7 @@ def p__embed1_task_declaration(p): def p__embed2_task_declaration(p): '''_embed2_task_declaration : ''' + # { assert(current_task == 0); # current_task = pform_push_task_scope(@1, p[3], p[2]); # } @@ -3088,6 +3265,7 @@ def p__embed2_task_declaration(p): 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); @@ -3101,6 +3279,7 @@ def p__embed3_task_declaration(p): def p__embed4_task_declaration(p): '''_embed4_task_declaration : ''' + # { assert(current_task == 0); # current_task = pform_push_task_scope(@1, p[3], p[2]); # } @@ -3110,6 +3289,7 @@ def p__embed4_task_declaration(p): 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); @@ -3130,6 +3310,7 @@ def p__embed5_task_declaration(p): def p__embed6_task_declaration(p): '''_embed6_task_declaration : ''' + # { # if (current_task) { # pform_pop_scope(); @@ -3144,6 +3325,7 @@ def p_tf_port_declaration_1(p): if(parse_debug): print('tf_port_declaration_1', list(p)) + # { vector*tmp = pform_make_task_ports(@1, p[1], # p[2] ? IVL_VT_LOGIC : # IVL_VT_NO_TYPE, @@ -3158,6 +3340,7 @@ def p_tf_port_declaration_2(p): if(parse_debug): print('tf_port_declaration_2', list(p)) + # { list*range_stub = make_range_from_width(integer_width); # vector*tmp = pform_make_task_ports(@1, p[1], IVL_VT_LOGIC, true, # range_stub, p[3], true); @@ -3171,6 +3354,7 @@ def p_tf_port_declaration_3(p): if(parse_debug): print('tf_port_declaration_3', list(p)) + # { list*range_stub = make_range_from_width(64); # vector*tmp = pform_make_task_ports(@1, p[1], IVL_VT_LOGIC, false, # range_stub, p[3]); @@ -3184,6 +3368,7 @@ def p_tf_port_declaration_4(p): if(parse_debug): print('tf_port_declaration_4', list(p)) + # { vector*tmp = pform_make_task_ports(@1, p[1], IVL_VT_REAL, true, # 0, p[3]); # p[0] = tmp; @@ -3196,6 +3381,7 @@ def p_tf_port_declaration_5(p): if(parse_debug): print('tf_port_declaration_5', list(p)) + # { vector*tmp = pform_make_task_ports(@1, p[1], IVL_VT_STRING, true, # 0, p[3]); # p[0] = tmp; @@ -3208,6 +3394,7 @@ def p_tf_port_item_1(p): if(parse_debug): print('tf_port_item_1', list(p)) + # { vector*tmp; # NetNet::PortType use_port_type = p[1]; # if ((use_port_type == NetNet::PIMPLICIT) && (gn_system_verilog() || (p[2] == 0))) @@ -3260,6 +3447,7 @@ def p_tf_port_item_2(p): 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 @@ -3272,6 +3460,7 @@ def p_tf_port_item_expr_opt_1(p): 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."); @@ -3286,6 +3475,7 @@ def p_tf_port_item_expr_opt_2(p): if(parse_debug): print('tf_port_item_expr_opt_2', list(p)) + # { p[0] = None } () @@ -3303,6 +3493,7 @@ def p_tf_port_list_1(p): 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; # } @@ -3314,6 +3505,7 @@ def p_tf_port_item_list_1(p): if(parse_debug): print('tf_port_item_list_1', list(p)) + # { vector*tmp; # if (p[1] && p[3]) { # size_t s1 = p[1]->size(); @@ -3347,6 +3539,7 @@ def p_tf_port_item_list_3(p): 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]; # } @@ -3358,6 +3551,7 @@ def p_tf_port_item_list_4(p): if(parse_debug): print('tf_port_item_list_4', list(p)) + # { yyerror(@2, "error: NULL port declarations are not allowed."); # p[0] = p[1]; # } @@ -3369,6 +3563,7 @@ def p_tf_port_item_list_5(p): if(parse_debug): print('tf_port_item_list_5', list(p)) + # { yyerror(@2, "error: ';' is an invalid port declaration separator."); # p[0] = p[1]; # } @@ -3380,6 +3575,7 @@ def p_timeunits_declaration_1(p): if(parse_debug): print('timeunits_declaration_1', list(p)) + # { pform_set_timeunit(p[2], allow_timeunit_decl); } () @@ -3389,6 +3585,7 @@ def p_timeunits_declaration_2(p): 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); @@ -3401,6 +3598,7 @@ def p_timeunits_declaration_3(p): if(parse_debug): print('timeunits_declaration_3', list(p)) + # { pform_set_timeprec(p[2], allow_timeprec_decl); } () @@ -3437,6 +3635,7 @@ def p_value_range_1(p): if(parse_debug): print('value_range_1', list(p)) + # { } () @@ -3446,6 +3645,7 @@ def p_value_range_2(p): if(parse_debug): print('value_range_2', list(p)) + # { } () @@ -3479,6 +3679,7 @@ def p_variable_dimension_2(p): if(parse_debug): print('variable_dimension_2', list(p)) + # { // SystemVerilog canonical range # if (!gn_system_verilog()) { # warn_count += 1; @@ -3500,6 +3701,7 @@ def p_variable_dimension_3(p): if(parse_debug): print('variable_dimension_3', list(p)) + # { list *tmp = new list; # pform_range_t index (0,0); # tmp->push_back(index); @@ -3513,6 +3715,7 @@ def p_variable_dimension_4(p): if(parse_debug): print('variable_dimension_4', list(p)) + # { // SystemVerilog queue # list *tmp = new list; # pform_range_t index (new PENull,0); @@ -3530,6 +3733,7 @@ def p_variable_lifetime_1(p): if(parse_debug): print('variable_lifetime_1', list(p)) + # { if (!gn_system_verilog()) { # yyerror(@1, "error: overriding the default variable lifetime " # "requires SystemVerilog."); @@ -3557,6 +3761,7 @@ def p_attribute_list_opt_2(p): if(parse_debug > 2): print('attribute_list_opt_2', list(p)) + # { p[0] = None } () @@ -3566,6 +3771,7 @@ def p_attribute_instance_list_1(p): if(parse_debug): print('attribute_instance_list_1', list(p)) + # { p[0] = None } () @@ -3595,6 +3801,7 @@ def p_attribute_instance_list_4(p): if(parse_debug): print('attribute_instance_list_4', list(p)) + # { list*tmp = p[1]; # if (tmp) { # tmp->splice(tmp->end(), *p[3]); @@ -3610,6 +3817,7 @@ def p_attribute_list_1(p): if(parse_debug): print('attribute_list_1', list(p)) + # { list*tmp = p[1]; # tmp->push_back(*p[3]); # delete p[3]; @@ -3623,6 +3831,7 @@ def p_attribute_list_2(p): if(parse_debug): print('attribute_list_2', list(p)) + # { list*tmp = new list; # tmp->push_back(*p[1]); # delete p[1]; @@ -3636,6 +3845,7 @@ def p_attribute_1(p): 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; @@ -3650,6 +3860,7 @@ def p_attribute_2(p): 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]); @@ -3665,6 +3876,7 @@ def p_block_item_decl_1(p): 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); # } () @@ -3675,6 +3887,7 @@ def p_block_item_decl_2(p): 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; # } @@ -3686,6 +3899,7 @@ def p_block_item_decl_3(p): 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); # } () @@ -3696,6 +3910,7 @@ def p_block_item_decl_4(p): 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; # } @@ -3707,6 +3922,7 @@ def p_block_item_decl_5(p): if(parse_debug): print('block_item_decl_5', list(p)) + # { if (p[2]) pform_make_events(p[2], @1.text, @1.first_line); # } () @@ -3744,6 +3960,7 @@ def p_block_item_decl_9(p): if(parse_debug): print('block_item_decl_9', list(p)) + # { yyerror(@1, "error: syntax error in integer variable list."); # yyerrok; # } @@ -3755,6 +3972,7 @@ def p_block_item_decl_10(p): if(parse_debug): print('block_item_decl_10', list(p)) + # { yyerror(@1, "error: syntax error in time variable list."); # yyerrok; # } @@ -3766,6 +3984,7 @@ def p_block_item_decl_11(p): if(parse_debug): print('block_item_decl_11', list(p)) + # { yyerror(@1, "error: syntax error in parameter list."); # yyerrok; # } @@ -3777,6 +3996,7 @@ def p_block_item_decl_12(p): if(parse_debug): print('block_item_decl_12', list(p)) + # { yyerror(@1, "error: syntax error localparam list."); # yyerrok; # } @@ -3826,6 +4046,7 @@ def p_type_declaration_1(p): 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]; @@ -3838,6 +4059,7 @@ def p_type_declaration_2(p): 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); @@ -3855,6 +4077,7 @@ def p_type_declaration_3(p): 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]); @@ -3871,6 +4094,7 @@ def p_type_declaration_4(p): if(parse_debug): print('type_declaration_4', list(p)) + # { yyerror(@1, "sorry: Enum forward declarations not supported yet."); } () @@ -3880,6 +4104,7 @@ def p_type_declaration_5(p): if(parse_debug): print('type_declaration_5', list(p)) + # { yyerror(@1, "sorry: Struct forward declarations not supported yet."); } () @@ -3889,6 +4114,7 @@ def p_type_declaration_6(p): if(parse_debug): print('type_declaration_6', list(p)) + # { yyerror(@1, "sorry: Union forward declarations not supported yet."); } () @@ -3898,6 +4124,7 @@ def p_type_declaration_7(p): 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]); @@ -3914,6 +4141,7 @@ def p_type_declaration_8(p): if(parse_debug): print('type_declaration_8', list(p)) + # { yyerror(@2, "error: Syntax error in typedef clause."); # yyerrok; # } @@ -3925,6 +4153,7 @@ def p_enum_data_type_1(p): 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]); @@ -3942,6 +4171,7 @@ def p_enum_data_type_2(p): 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]); @@ -3959,6 +4189,7 @@ def p_enum_data_type_3(p): 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]); @@ -3976,6 +4207,7 @@ def p_enum_data_type_4(p): 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]); @@ -3993,6 +4225,7 @@ def p_enum_data_type_5(p): 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]); @@ -4010,6 +4243,7 @@ def p_enum_data_type_6(p): 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]); @@ -4027,6 +4261,7 @@ def p_enum_name_list_1(p): if(parse_debug): print('enum_name_list_1', list(p)) + # { p[0] = p[1]; # } () @@ -4037,6 +4272,7 @@ def p_enum_name_list_2(p): if(parse_debug): print('enum_name_list_2', list(p)) + # { list*lst = p[1]; # lst->splice(lst->end(), *p[3]); # delete p[3]; @@ -4050,6 +4286,7 @@ def p_pos_neg_number_1(p): if(parse_debug): print('pos_neg_number_1', list(p)) + # { p[0] = p[1]; # } () @@ -4060,6 +4297,7 @@ def p_pos_neg_number_2(p): if(parse_debug): print('pos_neg_number_2', list(p)) + # { verinum tmp = -(*(p[2])); # *(p[2]) = tmp; # p[0] = p[2]; @@ -4072,6 +4310,7 @@ def p_enum_name_1(p): 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); @@ -4084,6 +4323,7 @@ def p_enum_name_2(p): 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]; @@ -4098,6 +4338,7 @@ def p_enum_name_3(p): 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)); @@ -4113,6 +4354,7 @@ def p_enum_name_4(p): 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]); @@ -4125,6 +4367,7 @@ def p_enum_name_5(p): 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]); @@ -4139,6 +4382,7 @@ def p_enum_name_6(p): 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]); @@ -4154,6 +4398,7 @@ def p_struct_data_type_1(p): 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]; @@ -4169,6 +4414,7 @@ def p_struct_data_type_2(p): 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]; @@ -4184,6 +4430,7 @@ def p_struct_data_type_3(p): 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; @@ -4200,6 +4447,7 @@ def p_struct_data_type_4(p): 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; @@ -4216,6 +4464,7 @@ def p_struct_union_member_list_1(p): if(parse_debug): print('struct_union_member_list_1', list(p)) + # { list*tmp = p[1]; # tmp->push_back(p[2]); # p[0] = tmp; @@ -4228,6 +4477,7 @@ def p_struct_union_member_list_2(p): if(parse_debug): print('struct_union_member_list_2', list(p)) + # { list*tmp = new list; # tmp->push_back(p[1]); # p[0] = tmp; @@ -4240,6 +4490,7 @@ def p_struct_union_member_1(p): 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]); @@ -4254,6 +4505,7 @@ def p_struct_union_member_2(p): if(parse_debug): print('struct_union_member_2', list(p)) + # { yyerror(@2, "Error in struct/union member."); # yyerrok; # p[0] = None @@ -4266,6 +4518,7 @@ def p_case_item_1(p): if(parse_debug): print('case_item_1', list(p)) + # { PCase::Item*tmp = new PCase::Item; # tmp->expr = *p[1]; # tmp->stat = p[3]; @@ -4280,6 +4533,7 @@ def p_case_item_2(p): if(parse_debug): print('case_item_2', list(p)) + # { PCase::Item*tmp = new PCase::Item; # tmp->stat = p[3]; # p[0] = tmp; @@ -4292,6 +4546,7 @@ def p_case_item_3(p): if(parse_debug): print('case_item_3', list(p)) + # { PCase::Item*tmp = new PCase::Item; # tmp->stat = p[2]; # p[0] = tmp; @@ -4304,6 +4559,7 @@ def p_case_item_4(p): if(parse_debug): print('case_item_4', list(p)) + # { yyerror(@2, "error: Incomprehensible case expression."); # yyerrok; # } @@ -4315,6 +4571,7 @@ def p_case_items_1(p): if(parse_debug): print('case_items_1', list(p)) + # { svector*tmp; # tmp = new svector(*p[1], p[2]); # delete p[1]; @@ -4328,6 +4585,7 @@ def p_case_items_2(p): if(parse_debug): print('case_items_2', list(p)) + # { svector*tmp = new svector(1); # (*tmp)[0] = p[1]; # p[0] = tmp; @@ -4385,6 +4643,7 @@ def p_defparam_assign_1(p): if(parse_debug): print('defparam_assign_1', list(p)) + # { pform_set_defparam(*p[1], p[3]); # delete p[1]; # } @@ -4405,6 +4664,7 @@ def p_defparam_assign_list_2(p): if(parse_debug): print('defparam_assign_list_2', list(p)) + # { yyerror(@1, "error: defparam may not include a range."); # delete p[1]; # } @@ -4425,6 +4685,7 @@ def p_delay1_1(p): if(parse_debug): print('delay1_1', list(p)) + # { list*tmp = new list; # tmp->push_back(p[2]); # p[0] = tmp; @@ -4437,6 +4698,7 @@ def p_delay1_2(p): if(parse_debug): print('delay1_2', list(p)) + # { list*tmp = new list; # tmp->push_back(p[3]); # p[0] = tmp; @@ -4449,6 +4711,7 @@ def p_delay3_1(p): if(parse_debug): print('delay3_1', list(p)) + # { list*tmp = new list; # tmp->push_back(p[2]); # p[0] = tmp; @@ -4461,6 +4724,7 @@ def p_delay3_2(p): if(parse_debug): print('delay3_2', list(p)) + # { list*tmp = new list; # tmp->push_back(p[3]); # p[0] = tmp; @@ -4473,6 +4737,7 @@ def p_delay3_3(p): if(parse_debug): print('delay3_3', list(p)) + # { list*tmp = new list; # tmp->push_back(p[3]); # tmp->push_back(p[5]); @@ -4486,6 +4751,7 @@ def p_delay3_4(p): if(parse_debug): print('delay3_4', list(p)) + # { list*tmp = new list; # tmp->push_back(p[3]); # tmp->push_back(p[5]); @@ -4510,6 +4776,7 @@ def p_delay3_opt_2(p): if(parse_debug > 2): print('delay3_opt_2', list(p)) + # { p[0] = None } () @@ -4519,6 +4786,7 @@ def p_delay_value_list_1(p): if(parse_debug): print('delay_value_list_1', list(p)) + # { list*tmp = new list; # tmp->push_back(p[1]); # p[0] = tmp; @@ -4531,6 +4799,7 @@ def p_delay_value_list_2(p): if(parse_debug): print('delay_value_list_2', list(p)) + # { list*tmp = p[1]; # tmp->push_back(p[3]); # p[0] = tmp; @@ -4543,6 +4812,7 @@ def p_delay_value_1(p): if(parse_debug): print('delay_value_1', list(p)) + # { PExpr*tmp = p[1]; # p[0] = tmp; # } @@ -4554,6 +4824,7 @@ def p_delay_value_2(p): if(parse_debug): print('delay_value_2', list(p)) + # { p[0] = pform_select_mtm_expr(p[1], p[3], p[5]); } () @@ -4563,6 +4834,7 @@ def p_delay_value_simple_1(p): if(parse_debug): print('delay_value_simple_1', list(p)) + # { verinum*tmp = p[1]; # if (tmp == 0) { # yyerror(@1, "internal error: delay."); @@ -4581,6 +4853,7 @@ def p_delay_value_simple_2(p): if(parse_debug): print('delay_value_simple_2', list(p)) + # { verireal*tmp = p[1]; # if (tmp == 0) { # yyerror(@1, "internal error: delay."); @@ -4598,6 +4871,7 @@ def p_delay_value_simple_3(p): 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; @@ -4611,6 +4885,7 @@ def p_delay_value_simple_4(p): if(parse_debug): print('delay_value_simple_4', list(p)) + # { int unit; # # based_size = 0; @@ -4653,6 +4928,7 @@ def p_discipline_declaration_1(p): if(parse_debug): print('discipline_declaration_1', list(p)) + # { pform_end_discipline(@1); delete[] p[2]; } () @@ -4660,6 +4936,7 @@ def p_discipline_declaration_1(p): def p__embed0_discipline_declaration(p): '''_embed0_discipline_declaration : ''' + # { pform_start_discipline(p[2]); } () @@ -4687,6 +4964,7 @@ def p_discipline_item_1(p): if(parse_debug): print('discipline_item_1', list(p)) + # { pform_discipline_domain(@1, IVL_DIS_DISCRETE); } () @@ -4696,6 +4974,7 @@ def p_discipline_item_2(p): if(parse_debug): print('discipline_item_2', list(p)) + # { pform_discipline_domain(@1, IVL_DIS_CONTINUOUS); } () @@ -4705,6 +4984,7 @@ def p_discipline_item_3(p): if(parse_debug): print('discipline_item_3', list(p)) + # { pform_discipline_potential(@1, p[2]); delete[] p[2]; } () @@ -4714,6 +4994,7 @@ def p_discipline_item_4(p): if(parse_debug): print('discipline_item_4', list(p)) + # { pform_discipline_flow(@1, p[2]); delete[] p[2]; } () @@ -4723,6 +5004,7 @@ def p_nature_declaration_1(p): if(parse_debug): print('nature_declaration_1', list(p)) + # { pform_end_nature(@1); delete[] p[2]; } () @@ -4730,6 +5012,7 @@ def p_nature_declaration_1(p): def p__embed0_nature_declaration(p): '''_embed0_nature_declaration : ''' + # { pform_start_nature(p[2]); } () @@ -4757,6 +5040,7 @@ def p_nature_item_1(p): if(parse_debug): print('nature_item_1', list(p)) + # { delete[] p[3]; } () @@ -4775,6 +5059,7 @@ def p_nature_item_3(p): if(parse_debug): print('nature_item_3', list(p)) + # { pform_nature_access(@1, p[3]); delete[] p[3]; } () @@ -4784,6 +5069,7 @@ def p_nature_item_4(p): if(parse_debug): print('nature_item_4', list(p)) + # { delete[] p[3]; } () @@ -4793,6 +5079,7 @@ def p_nature_item_5(p): if(parse_debug): print('nature_item_5', list(p)) + # { delete[] p[3]; } () @@ -4802,6 +5089,7 @@ def p_config_declaration_1(p): 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]; @@ -4859,6 +5147,7 @@ def p_config_rule_statement_2(p): if(parse_debug): print('config_rule_statement_2', list(p)) + # { delete p[2]; } () @@ -4868,6 +5157,7 @@ def p_config_rule_statement_3(p): if(parse_debug): print('config_rule_statement_3', list(p)) + # { delete p[2]; } () @@ -4913,6 +5203,7 @@ def p_lib_cell_id_1(p): if(parse_debug): print('lib_cell_id_1', list(p)) + # { delete[] p[1]; } () @@ -4922,6 +5213,7 @@ def p_lib_cell_id_2(p): if(parse_debug): print('lib_cell_id_2', list(p)) + # { delete[] p[1]; delete[] p[3]; } () @@ -4940,6 +5232,7 @@ def p_list_of_libraries_2(p): if(parse_debug): print('list_of_libraries_2', list(p)) + # { delete[] p[2]; } () @@ -4949,6 +5242,7 @@ def p_drive_strength_1(p): if(parse_debug): print('drive_strength_1', list(p)) + # { p[0].str0 = p[2].str0; # p[0].str1 = p[4].str1; # } @@ -4960,6 +5254,7 @@ def p_drive_strength_2(p): if(parse_debug): print('drive_strength_2', list(p)) + # { p[0].str0 = p[4].str0; # p[0].str1 = p[2].str1; # } @@ -4971,6 +5266,7 @@ def p_drive_strength_3(p): if(parse_debug): print('drive_strength_3', list(p)) + # { p[0].str0 = p[2].str0; # p[0].str1 = IVL_DR_HiZ; # } @@ -4982,6 +5278,7 @@ def p_drive_strength_4(p): if(parse_debug): print('drive_strength_4', list(p)) + # { p[0].str0 = IVL_DR_HiZ; # p[0].str1 = p[2].str1; # } @@ -4993,6 +5290,7 @@ def p_drive_strength_5(p): if(parse_debug): print('drive_strength_5', list(p)) + # { p[0].str0 = p[4].str0; # p[0].str1 = IVL_DR_HiZ; # } @@ -5004,6 +5302,7 @@ def p_drive_strength_6(p): if(parse_debug): print('drive_strength_6', list(p)) + # { p[0].str0 = IVL_DR_HiZ; # p[0].str1 = p[4].str1; # } @@ -5025,6 +5324,7 @@ def p_drive_strength_opt_2(p): if(parse_debug > 2): print('drive_strength_opt_2', list(p)) + # { p[0].str0 = IVL_DR_STRONG; p[0].str1 = IVL_DR_STRONG; } () @@ -5034,6 +5334,7 @@ def p_dr_strength0_1(p): if(parse_debug): print('dr_strength0_1', list(p)) + # { p[0].str0 = IVL_DR_SUPPLY; } () @@ -5043,6 +5344,7 @@ def p_dr_strength0_2(p): if(parse_debug): print('dr_strength0_2', list(p)) + # { p[0].str0 = IVL_DR_STRONG; } () @@ -5052,6 +5354,7 @@ def p_dr_strength0_3(p): if(parse_debug): print('dr_strength0_3', list(p)) + # { p[0].str0 = IVL_DR_PULL; } () @@ -5061,6 +5364,7 @@ def p_dr_strength0_4(p): if(parse_debug): print('dr_strength0_4', list(p)) + # { p[0].str0 = IVL_DR_WEAK; } () @@ -5070,6 +5374,7 @@ def p_dr_strength1_1(p): if(parse_debug): print('dr_strength1_1', list(p)) + # { p[0].str1 = IVL_DR_SUPPLY; } () @@ -5079,6 +5384,7 @@ def p_dr_strength1_2(p): if(parse_debug): print('dr_strength1_2', list(p)) + # { p[0].str1 = IVL_DR_STRONG; } () @@ -5088,6 +5394,7 @@ def p_dr_strength1_3(p): if(parse_debug): print('dr_strength1_3', list(p)) + # { p[0].str1 = IVL_DR_PULL; } () @@ -5097,6 +5404,7 @@ def p_dr_strength1_4(p): if(parse_debug): print('dr_strength1_4', list(p)) + # { p[0].str1 = IVL_DR_WEAK; } () @@ -5124,6 +5432,7 @@ def p_event_control_1(p): 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); @@ -5139,6 +5448,7 @@ def p_event_control_2(p): if(parse_debug): print('event_control_2', list(p)) + # { PEventStatement*tmp = new PEventStatement(*p[3]); # FILE_NAME(tmp, @1); # delete p[3]; @@ -5152,6 +5462,7 @@ def p_event_control_3(p): if(parse_debug): print('event_control_3', list(p)) + # { yyerror(@1, "error: Malformed event control expression."); # p[0] = None # } @@ -5173,6 +5484,7 @@ def p_event_expression_list_2(p): if(parse_debug): print('event_expression_list_2', list(p)) + # { svector*tmp = new svector(*p[1], *p[3]); # delete p[1]; # delete p[3]; @@ -5186,6 +5498,7 @@ def p_event_expression_list_3(p): if(parse_debug): print('event_expression_list_3', list(p)) + # { svector*tmp = new svector(*p[1], *p[3]); # delete p[1]; # delete p[3]; @@ -5199,6 +5512,7 @@ def p_event_expression_1(p): if(parse_debug): print('event_expression_1', list(p)) + # { PEEvent*tmp = new PEEvent(PEEvent::POSEDGE, p[2]); # FILE_NAME(tmp, @1); # svector*tl = new svector(1); @@ -5213,6 +5527,7 @@ def p_event_expression_2(p): if(parse_debug): print('event_expression_2', list(p)) + # { PEEvent*tmp = new PEEvent(PEEvent::NEGEDGE, p[2]); # FILE_NAME(tmp, @1); # svector*tl = new svector(1); @@ -5227,6 +5542,7 @@ def p_event_expression_3(p): if(parse_debug): print('event_expression_3', list(p)) + # { PEEvent*tmp = new PEEvent(PEEvent::ANYEDGE, p[1]); # FILE_NAME(tmp, @1); # svector*tl = new svector(1); @@ -5241,6 +5557,7 @@ def p_branch_probe_expression_1(p): if(parse_debug): print('branch_probe_expression_1', list(p)) + # { p[0] = pform_make_branch_probe_expression(@1, p[1], p[3], p[5]); } () @@ -5250,6 +5567,7 @@ def p_branch_probe_expression_2(p): if(parse_debug): print('branch_probe_expression_2', list(p)) + # { p[0] = pform_make_branch_probe_expression(@1, p[1], p[3]); } () @@ -5294,11 +5612,31 @@ def p_expression_4(p): () +def PEUnary(op, o1): + #Leaf(token.STRING, ' ') + try: + return Node(syms.atom, [op, o1]) + except: + return "error in PEUnary: "+str(op)+","+str(o1) + + +def PEBinary(op, o1, o2): + try: + return Node(syms.atom, [o1, Leaf(token.STRING, ' '), op, Leaf(token.STRING, ' '), o2]) + except: + return "error in PEBinary: "+str(op)+","+str(o1)+","+str(o2) + +# unary minus + + def p_expression_5(p): '''expression : '-' attribute_list_opt expr_primary %prec UNARY_PREC ''' if(parse_debug): print('expression_5', list(p)) + p[0] = PEUnary(Leaf(token.MINUS, '-'), p[3]) + + # { PEUnary*tmp = new PEUnary('-', p[3]); # FILE_NAME(tmp, @3); # p[0] = tmp; @@ -5311,6 +5649,9 @@ def p_expression_6(p): if(parse_debug): print('expression_6', list(p)) + p[0] = PEUnary(Leaf(token.TILDE, '~'), p[3]) + + # { PEUnary*tmp = new PEUnary('~', p[3]); # FILE_NAME(tmp, @3); # p[0] = tmp; @@ -5323,6 +5664,9 @@ def p_expression_7(p): if(parse_debug): print('expression_7', list(p)) + p[0] = PEUnary(Leaf(token.AMPER, '&'), p[3]) + + # { PEUnary*tmp = new PEUnary('&', p[3]); # FILE_NAME(tmp, @3); # p[0] = tmp; @@ -5335,6 +5679,9 @@ def p_expression_8(p): if(parse_debug): print('expression_8', list(p)) + p[0] = PEUnary(Leaf(token.STRING, '!'), p[3]) + + # { PEUnary*tmp = new PEUnary('!', p[3]); # FILE_NAME(tmp, @3); # p[0] = tmp; @@ -5347,6 +5694,9 @@ def p_expression_9(p): if(parse_debug): print('expression_9', list(p)) + p[0] = PEUnary(Leaf(token.STRING, '|'), p[3]) + + # { PEUnary*tmp = new PEUnary('|', p[3]); # FILE_NAME(tmp, @3); # p[0] = tmp; @@ -5359,6 +5709,9 @@ def p_expression_10(p): if(parse_debug): print('expression_10', list(p)) + p[0] = PEUnary(Leaf(token.STRING, '^'), p[3]) + + # { PEUnary*tmp = new PEUnary('^', p[3]); # FILE_NAME(tmp, @3); # p[0] = tmp; @@ -5371,6 +5724,7 @@ def p_expression_11(p): if(parse_debug): print('expression_11', list(p)) + # { yyerror(@1, "error: '~' '&' is not a valid expression. " # "Please use operator '~&' instead."); # p[0] = None @@ -5383,6 +5737,7 @@ def p_expression_12(p): if(parse_debug): print('expression_12', list(p)) + # { yyerror(@1, "error: '~' '|' is not a valid expression. " # "Please use operator '~|' instead."); # p[0] = None @@ -5395,6 +5750,7 @@ def p_expression_13(p): if(parse_debug): print('expression_13', list(p)) + # { yyerror(@1, "error: '~' '^' is not a valid expression. " # "Please use operator '~^' instead."); # p[0] = None @@ -5407,6 +5763,9 @@ def p_expression_14(p): if(parse_debug): print('expression_14', list(p)) + p[0] = PEUnary(Leaf(token.STRING, 'K_NAND'), p[3]) + + # { PEUnary*tmp = new PEUnary('A', p[3]); # FILE_NAME(tmp, @3); # p[0] = tmp; @@ -5419,6 +5778,9 @@ def p_expression_15(p): if(parse_debug): print('expression_15', list(p)) + p[0] = PEUnary(Leaf(token.STRING, 'K_NOR'), p[3]) + + # { PEUnary*tmp = new PEUnary('N', p[3]); # FILE_NAME(tmp, @3); # p[0] = tmp; @@ -5431,6 +5793,9 @@ def p_expression_16(p): if(parse_debug): print('expression_16', list(p)) + p[0] = PEUnary(Leaf(token.STRING, 'K_NXOR'), p[3]) + + # { PEUnary*tmp = new PEUnary('X', p[3]); # FILE_NAME(tmp, @3); # p[0] = tmp; @@ -5443,6 +5808,7 @@ def p_expression_17(p): if(parse_debug): print('expression_17', list(p)) + # { yyerror(@1, "error: Operand of unary ! " # "is not a primary expression."); # p[0] = None @@ -5455,6 +5821,7 @@ def p_expression_18(p): if(parse_debug): print('expression_18', list(p)) + # { yyerror(@1, "error: Operand of reduction ^ " # "is not a primary expression."); # p[0] = None @@ -5467,6 +5834,9 @@ def p_expression_19(p): if(parse_debug): print('expression_19', list(p)) + 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; @@ -5479,6 +5849,9 @@ def p_expression_20(p): if(parse_debug): print('expression_20', list(p)) + 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; @@ -5491,6 +5864,9 @@ def p_expression_21(p): if(parse_debug): print('expression_21', list(p)) + 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; @@ -5503,6 +5879,9 @@ def p_expression_22(p): if(parse_debug): print('expression_22', list(p)) + 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; @@ -5515,6 +5894,9 @@ def p_expression_23(p): if(parse_debug): print('expression_23', list(p)) + 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; @@ -5531,21 +5913,21 @@ def p_expression_24(p): # FILE_NAME(tmp, @2); # p[0] = tmp; # } + p[0] = PEBinary(Leaf(token.PLUS, '+'), p[1], p[4]) + + () def p_expression_25(p): '''expression : expression '-' attribute_list_opt expression ''' - if(parse_debug): + if(parse_debug > 2): print('expression_25', list(p)) # { PEBinary*tmp = new PEBinary('-', p[1], p[4]); # FILE_NAME(tmp, @2); # p[0] = tmp; # } - try: - p[0] = Node(syms.atom, [p[1], Leaf(token.MINUS, '-'), p[4]]) - except: - p[0] = "bad input in p_expression_25" + p[0] = PEBinary(Leaf(token.MINUS, '-'), p[1], p[4]) () @@ -5553,9 +5935,12 @@ def p_expression_25(p): def p_expression_26(p): '''expression : expression '&' attribute_list_opt expression ''' - if(parse_debug): + if(parse_debug > 2): print('expression_26', list(p)) + 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; @@ -5565,9 +5950,11 @@ def p_expression_26(p): def p_expression_27(p): '''expression : expression '|' attribute_list_opt expression ''' - if(parse_debug): + if(parse_debug > 2): print('expression_27', list(p)) + 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; @@ -5580,6 +5967,9 @@ def p_expression_28(p): if(parse_debug): print('expression_28', list(p)) + 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; @@ -5592,6 +5982,9 @@ def p_expression_29(p): if(parse_debug): print('expression_29', list(p)) + 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; @@ -5604,6 +5997,9 @@ def p_expression_30(p): if(parse_debug): print('expression_30', list(p)) + 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; @@ -5616,6 +6012,9 @@ def p_expression_31(p): if(parse_debug): print('expression_31', list(p)) + 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; @@ -5628,6 +6027,9 @@ def p_expression_32(p): if(parse_debug): print('expression_32', list(p)) + 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; @@ -5640,6 +6042,9 @@ def p_expression_33(p): if(parse_debug): print('expression_33', list(p)) + 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; @@ -5652,6 +6057,9 @@ def p_expression_34(p): if(parse_debug): print('expression_34', list(p)) + 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; @@ -5664,6 +6072,9 @@ def p_expression_35(p): if(parse_debug): print('expression_35', list(p)) + 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; @@ -5676,6 +6087,9 @@ def p_expression_36(p): if(parse_debug): print('expression_36', list(p)) + 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; @@ -5688,6 +6102,9 @@ def p_expression_37(p): if(parse_debug): print('expression_37', list(p)) + 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; @@ -5700,6 +6117,9 @@ def p_expression_38(p): if(parse_debug): print('expression_38', list(p)) + 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; @@ -5712,6 +6132,9 @@ def p_expression_39(p): if(parse_debug): print('expression_39', list(p)) + 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; @@ -5724,6 +6147,9 @@ def p_expression_40(p): if(parse_debug): print('expression_40', list(p)) + 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; @@ -5736,6 +6162,9 @@ def p_expression_41(p): if(parse_debug): print('expression_41', list(p)) + 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; @@ -5748,6 +6177,9 @@ def p_expression_42(p): if(parse_debug): print('expression_42', list(p)) + 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; @@ -5760,6 +6192,9 @@ def p_expression_43(p): if(parse_debug): print('expression_43', list(p)) + 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; @@ -5772,6 +6207,9 @@ def p_expression_44(p): if(parse_debug): print('expression_44', list(p)) + 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; @@ -5784,6 +6222,9 @@ def p_expression_45(p): if(parse_debug): print('expression_45', list(p)) + 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; @@ -5796,6 +6237,10 @@ def p_expression_46(p): if(parse_debug): print('expression_46', list(p)) + 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; @@ -5818,6 +6263,7 @@ def p_expr_mintypmax_2(p): if(parse_debug): print('expr_mintypmax_2', list(p)) + # { switch (min_typ_max_flag) { # case MIN: # p[0] = p[1]; @@ -5860,6 +6306,7 @@ def p_expression_list_with_nuls_1(p): if(parse_debug): print('expression_list_with_nuls_1', list(p)) + # { list*tmp = p[1]; # tmp->push_back(p[3]); # p[0] = tmp; @@ -5872,6 +6319,7 @@ def p_expression_list_with_nuls_2(p): if(parse_debug): print('expression_list_with_nuls_2', list(p)) + # { list*tmp = new list; # tmp->push_back(p[1]); # p[0] = tmp; @@ -5884,6 +6332,7 @@ def p_expression_list_with_nuls_3(p): if(parse_debug): print('expression_list_with_nuls_3', list(p)) + # { list*tmp = new list; # tmp->push_back(0); # p[0] = tmp; @@ -5896,6 +6345,7 @@ def p_expression_list_with_nuls_4(p): if(parse_debug): print('expression_list_with_nuls_4', list(p)) + # { list*tmp = p[1]; # tmp->push_back(0); # p[0] = tmp; @@ -5908,6 +6358,7 @@ def p_expression_list_proper_1(p): if(parse_debug): print('expression_list_proper_1', list(p)) + # { list*tmp = p[1]; # tmp->push_back(p[3]); # p[0] = tmp; @@ -5920,6 +6371,7 @@ def p_expression_list_proper_2(p): if(parse_debug): print('expression_list_proper_2', list(p)) + # { list*tmp = new list; # tmp->push_back(p[1]); # p[0] = tmp; @@ -5943,6 +6395,7 @@ def p_expr_primary_or_typename_2(p): 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; @@ -5957,6 +6410,7 @@ def p_expr_primary_1(p): print('expr_primary_1', list(p)) p[0] = p[1] + # { assert(p[1]); # PENumber*tmp = new PENumber(p[1]); # FILE_NAME(tmp, @1); @@ -5970,6 +6424,7 @@ def p_expr_primary_2(p): if(parse_debug): print('expr_primary_2', list(p)) + # { PEFNumber*tmp = new PEFNumber(p[1]); # FILE_NAME(tmp, @1); # p[0] = tmp; @@ -5982,6 +6437,7 @@ def p_expr_primary_3(p): if(parse_debug): print('expr_primary_3', list(p)) + # { PEString*tmp = new PEString(p[1]); # FILE_NAME(tmp, @1); # p[0] = tmp; @@ -5994,6 +6450,7 @@ def p_expr_primary_4(p): if(parse_debug): print('expr_primary_4', list(p)) + # { int unit; # # based_size = 0; @@ -6017,6 +6474,7 @@ def p_expr_primary_5(p): 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); @@ -6032,6 +6490,7 @@ def p_expr_primary_6(p): print('expr_primary_6', list(p)) p[0] = p[1] + # { PEIdent*tmp = pform_new_ident(*p[1]); # FILE_NAME(tmp, @1); # p[0] = tmp; @@ -6045,6 +6504,7 @@ def p_expr_primary_7(p): if(parse_debug): print('expr_primary_7', list(p)) + # { p[0] = pform_package_ident(@2, p[1], p[3]); # delete p[3]; # } @@ -6056,6 +6516,7 @@ def p_expr_primary_8(p): if(parse_debug): print('expr_primary_8', list(p)) + # { list*expr_list = p[3]; # strip_tail_items(expr_list); # PECallFunction*tmp = pform_make_call_function(@1, *p[1], *expr_list); @@ -6070,6 +6531,7 @@ def p_expr_primary_9(p): 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()); @@ -6090,6 +6552,7 @@ def p_expr_primary_10(p): 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); @@ -6104,6 +6567,7 @@ def p_expr_primary_11(p): 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); @@ -6118,6 +6582,7 @@ def p_expr_primary_12(p): if(parse_debug): print('expr_primary_12', list(p)) + # { perm_string tn = lex_strings.make(p[1]); # const vectorempty; # PECallFunction*tmp = new PECallFunction(tn, empty); @@ -6136,6 +6601,7 @@ def p_expr_primary_13(p): if(parse_debug): print('expr_primary_13', list(p)) + # { PEIdent*tmp = new PEIdent(*p[1]); # FILE_NAME(tmp,@1); # delete p[1]; @@ -6149,6 +6615,7 @@ def p_expr_primary_14(p): 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()); @@ -6168,6 +6635,7 @@ def p_expr_primary_15(p): 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); @@ -6181,6 +6649,7 @@ def p_expr_primary_16(p): 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); @@ -6194,6 +6663,7 @@ def p_expr_primary_17(p): 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); @@ -6207,6 +6677,7 @@ def p_expr_primary_18(p): 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); @@ -6220,6 +6691,7 @@ def p_expr_primary_19(p): 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); @@ -6233,6 +6705,7 @@ def p_expr_primary_20(p): 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); @@ -6246,6 +6719,7 @@ def p_expr_primary_21(p): 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); @@ -6259,6 +6733,7 @@ def p_expr_primary_22(p): 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); @@ -6272,6 +6747,7 @@ def p_expr_primary_23(p): 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); @@ -6285,6 +6761,7 @@ def p_expr_primary_24(p): 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); @@ -6298,6 +6775,7 @@ def p_expr_primary_25(p): 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); @@ -6311,6 +6789,7 @@ def p_expr_primary_26(p): 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); @@ -6324,6 +6803,7 @@ def p_expr_primary_27(p): 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); @@ -6337,6 +6817,7 @@ def p_expr_primary_28(p): 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); @@ -6350,6 +6831,7 @@ def p_expr_primary_29(p): 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); @@ -6363,6 +6845,7 @@ def p_expr_primary_30(p): 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); @@ -6376,6 +6859,7 @@ def p_expr_primary_31(p): 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); @@ -6389,6 +6873,7 @@ def p_expr_primary_32(p): 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); @@ -6402,6 +6887,7 @@ def p_expr_primary_33(p): 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); @@ -6415,6 +6901,7 @@ def p_expr_primary_34(p): 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); @@ -6428,6 +6915,7 @@ def p_expr_primary_35(p): 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); @@ -6441,6 +6929,7 @@ def p_expr_primary_36(p): if(parse_debug): print('expr_primary_36', list(p)) + # { PEUnary*tmp = new PEUnary('m', p[3]); # FILE_NAME(tmp,@1); # p[0] = tmp; @@ -6453,6 +6942,7 @@ def p_expr_primary_37(p): 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; @@ -6465,6 +6955,7 @@ def p_expr_primary_38(p): 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; @@ -6487,6 +6978,7 @@ def p_expr_primary_40(p): if(parse_debug): print('expr_primary_40', list(p)) + # { PEConcat*tmp = new PEConcat(*p[2]); # FILE_NAME(tmp, @1); # delete p[2]; @@ -6500,6 +6992,7 @@ def p_expr_primary_41(p): if(parse_debug): print('expr_primary_41', list(p)) + # { PExpr*rep = p[2]; # PEConcat*tmp = new PEConcat(*p[4], rep); # FILE_NAME(tmp, @1); @@ -6514,6 +7007,7 @@ def p_expr_primary_42(p): if(parse_debug): print('expr_primary_42', list(p)) + # { PExpr*rep = p[2]; # PEConcat*tmp = new PEConcat(*p[4], rep); # FILE_NAME(tmp, @1); @@ -6531,6 +7025,7 @@ def p_expr_primary_43(p): if(parse_debug): print('expr_primary_43', list(p)) + # { // This is the empty queue syntax. # if (gn_system_verilog()) { # list empty_list; @@ -6550,6 +7045,7 @@ def p_expr_primary_44(p): if(parse_debug): print('expr_primary_44', list(p)) + # { PExpr*base = p[4]; # if (gn_system_verilog()) { # PECastSize*tmp = new PECastSize(p[1], base); @@ -6568,6 +7064,7 @@ def p_expr_primary_45(p): if(parse_debug): print('expr_primary_45', list(p)) + # { PExpr*base = p[4]; # if (gn_system_verilog()) { # PECastType*tmp = new PECastType(p[1], base); @@ -6606,6 +7103,7 @@ def p_expr_primary_48(p): if(parse_debug): print('expr_primary_48', list(p)) + # { PENull*tmp = new PENull; # FILE_NAME(tmp, @1); # p[0] = tmp; @@ -6628,6 +7126,7 @@ def p_function_item_list_opt_2(p): if(parse_debug): print('function_item_list_opt_2', list(p)) + # { p[0] = None } () @@ -6647,6 +7146,7 @@ def p_function_item_list_2(p): if(parse_debug): print('function_item_list_2', list(p)) + # { /* */ # if (p[1] && p[2]) { # vector*tmp = p[1]; @@ -6680,6 +7180,7 @@ def p_function_item_2(p): if(parse_debug): print('function_item_2', list(p)) + # { p[0] = None } () @@ -6689,6 +7190,7 @@ def p_gate_instance_1(p): if(parse_debug): print('gate_instance_1', list(p)) + # { lgate*tmp = new lgate; # tmp->name = p[1]; # tmp->parms = p[3]; @@ -6705,6 +7207,7 @@ def p_gate_instance_2(p): if(parse_debug): print('gate_instance_2', list(p)) + # { lgate*tmp = new lgate; # list*rng = p[2]; # tmp->name = p[1]; @@ -6726,6 +7229,7 @@ def p_gate_instance_3(p): if(parse_debug): print('gate_instance_3', list(p)) + # { lgate*tmp = new lgate; # tmp->name = ""; # tmp->parms = p[2]; @@ -6741,6 +7245,7 @@ def p_gate_instance_4(p): if(parse_debug): print('gate_instance_4', list(p)) + # { lgate*tmp = new lgate; # list*rng = p[2]; # tmp->name = p[1]; @@ -6763,6 +7268,7 @@ def p_gate_instance_5(p): if(parse_debug): print('gate_instance_5', list(p)) + # { lgate*tmp = new lgate; # tmp->name = p[1]; # tmp->parms = 0; @@ -6780,6 +7286,7 @@ def p_gate_instance_6(p): if(parse_debug): print('gate_instance_6', list(p)) + # { lgate*tmp = new lgate; # list*rng = p[2]; # tmp->name = p[1]; @@ -6802,6 +7309,7 @@ def p_gate_instance_7(p): if(parse_debug): print('gate_instance_7', list(p)) + # { lgate*tmp = new lgate; # tmp->name = p[1]; # tmp->parms = 0; @@ -6821,6 +7329,7 @@ def p_gate_instance_8(p): if(parse_debug): print('gate_instance_8', list(p)) + # { lgate*tmp = new lgate; # tmp->name = p[1]; # tmp->parms = 0; @@ -6840,6 +7349,7 @@ def p_gate_instance_list_1(p): if(parse_debug): print('gate_instance_list_1', list(p)) + # { svector*tmp1 = p[1]; # lgate*tmp2 = p[3]; # svector*out = new svector (*tmp1, *tmp2); @@ -6855,6 +7365,7 @@ def p_gate_instance_list_2(p): if(parse_debug): print('gate_instance_list_2', list(p)) + # { svector*tmp = new svector(1); # (*tmp)[0] = *p[1]; # delete p[1]; @@ -6868,6 +7379,7 @@ def p_gatetype_1(p): if(parse_debug): print('gatetype_1', list(p)) + # { p[0] = PGBuiltin::AND; } () @@ -6877,6 +7389,7 @@ def p_gatetype_2(p): if(parse_debug): print('gatetype_2', list(p)) + # { p[0] = PGBuiltin::NAND; } () @@ -6886,6 +7399,7 @@ def p_gatetype_3(p): if(parse_debug): print('gatetype_3', list(p)) + # { p[0] = PGBuiltin::OR; } () @@ -6895,6 +7409,7 @@ def p_gatetype_4(p): if(parse_debug): print('gatetype_4', list(p)) + # { p[0] = PGBuiltin::NOR; } () @@ -6904,6 +7419,7 @@ def p_gatetype_5(p): if(parse_debug): print('gatetype_5', list(p)) + # { p[0] = PGBuiltin::XOR; } () @@ -6913,6 +7429,7 @@ def p_gatetype_6(p): if(parse_debug): print('gatetype_6', list(p)) + # { p[0] = PGBuiltin::XNOR; } () @@ -6922,6 +7439,7 @@ def p_gatetype_7(p): if(parse_debug): print('gatetype_7', list(p)) + # { p[0] = PGBuiltin::BUF; } () @@ -6931,6 +7449,7 @@ def p_gatetype_8(p): if(parse_debug): print('gatetype_8', list(p)) + # { p[0] = PGBuiltin::BUFIF0; } () @@ -6940,6 +7459,7 @@ def p_gatetype_9(p): if(parse_debug): print('gatetype_9', list(p)) + # { p[0] = PGBuiltin::BUFIF1; } () @@ -6949,6 +7469,7 @@ def p_gatetype_10(p): if(parse_debug): print('gatetype_10', list(p)) + # { p[0] = PGBuiltin::NOT; } () @@ -6958,6 +7479,7 @@ def p_gatetype_11(p): if(parse_debug): print('gatetype_11', list(p)) + # { p[0] = PGBuiltin::NOTIF0; } () @@ -6967,6 +7489,7 @@ def p_gatetype_12(p): if(parse_debug): print('gatetype_12', list(p)) + # { p[0] = PGBuiltin::NOTIF1; } () @@ -6976,6 +7499,7 @@ def p_switchtype_1(p): if(parse_debug): print('switchtype_1', list(p)) + # { p[0] = PGBuiltin::NMOS; } () @@ -6985,6 +7509,7 @@ def p_switchtype_2(p): if(parse_debug): print('switchtype_2', list(p)) + # { p[0] = PGBuiltin::RNMOS; } () @@ -6994,6 +7519,7 @@ def p_switchtype_3(p): if(parse_debug): print('switchtype_3', list(p)) + # { p[0] = PGBuiltin::PMOS; } () @@ -7003,6 +7529,7 @@ def p_switchtype_4(p): if(parse_debug): print('switchtype_4', list(p)) + # { p[0] = PGBuiltin::RPMOS; } () @@ -7012,6 +7539,7 @@ def p_switchtype_5(p): if(parse_debug): print('switchtype_5', list(p)) + # { p[0] = PGBuiltin::CMOS; } () @@ -7021,6 +7549,7 @@ def p_switchtype_6(p): if(parse_debug): print('switchtype_6', list(p)) + # { p[0] = PGBuiltin::RCMOS; } () @@ -7030,6 +7559,7 @@ def p_switchtype_7(p): if(parse_debug): print('switchtype_7', list(p)) + # { p[0] = PGBuiltin::TRAN; } () @@ -7039,6 +7569,7 @@ def p_switchtype_8(p): if(parse_debug): print('switchtype_8', list(p)) + # { p[0] = PGBuiltin::RTRAN; } () @@ -7048,6 +7579,7 @@ def p_switchtype_9(p): if(parse_debug): print('switchtype_9', list(p)) + # { p[0] = PGBuiltin::TRANIF0; } () @@ -7057,6 +7589,7 @@ def p_switchtype_10(p): if(parse_debug): print('switchtype_10', list(p)) + # { p[0] = PGBuiltin::TRANIF1; } () @@ -7066,6 +7599,7 @@ def p_switchtype_11(p): if(parse_debug): print('switchtype_11', list(p)) + # { p[0] = PGBuiltin::RTRANIF0; } () @@ -7075,6 +7609,7 @@ def p_switchtype_12(p): if(parse_debug): print('switchtype_12', list(p)) + # { p[0] = PGBuiltin::RTRANIF1; } () @@ -7086,6 +7621,7 @@ def p_hierarchy_identifier_1(p): 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]; @@ -7098,6 +7634,7 @@ def p_hierarchy_identifier_2(p): 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]; @@ -7111,6 +7648,7 @@ def p_hierarchy_identifier_3(p): 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; @@ -7127,6 +7665,7 @@ def p_hierarchy_identifier_4(p): 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()) { @@ -7148,6 +7687,7 @@ def p_hierarchy_identifier_5(p): 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; @@ -7165,6 +7705,7 @@ def p_hierarchy_identifier_6(p): 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; @@ -7182,6 +7723,7 @@ def p_hierarchy_identifier_7(p): 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; @@ -7199,6 +7741,7 @@ def p_list_of_identifiers_1(p): if(parse_debug): print('list_of_identifiers_1', list(p)) + # { p[0] = list_from_identifier(p[1]); } () @@ -7208,6 +7751,7 @@ def p_list_of_identifiers_2(p): if(parse_debug): print('list_of_identifiers_2', list(p)) + # { p[0] = list_from_identifier(p[1], p[3]); } () @@ -7217,6 +7761,7 @@ def p_list_of_port_identifiers_1(p): if(parse_debug): print('list_of_port_identifiers_1', list(p)) + # { p[0] = make_port_list(p[1], p[2], 0); } () @@ -7226,6 +7771,7 @@ def p_list_of_port_identifiers_2(p): if(parse_debug): print('list_of_port_identifiers_2', list(p)) + # { p[0] = make_port_list(p[1], p[3], p[4], 0); } () @@ -7235,6 +7781,7 @@ def p_list_of_variable_port_identifiers_1(p): if(parse_debug): print('list_of_variable_port_identifiers_1', list(p)) + # { p[0] = make_port_list(p[1], p[2], 0); } () @@ -7244,6 +7791,7 @@ def p_list_of_variable_port_identifiers_2(p): if(parse_debug): print('list_of_variable_port_identifiers_2', list(p)) + # { p[0] = make_port_list(p[1], p[2], p[4]); } () @@ -7253,6 +7801,7 @@ def p_list_of_variable_port_identifiers_3(p): if(parse_debug): print('list_of_variable_port_identifiers_3', list(p)) + # { p[0] = make_port_list(p[1], p[3], p[4], 0); } () @@ -7262,6 +7811,7 @@ def p_list_of_variable_port_identifiers_4(p): 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]); } () @@ -7271,6 +7821,7 @@ def p_list_of_ports_1(p): if(parse_debug): print('list_of_ports_1', list(p)) + # { vector*tmp # = new vector(1); # (*tmp)[0] = p[1]; @@ -7284,6 +7835,7 @@ def p_list_of_ports_2(p): if(parse_debug): print('list_of_ports_2', list(p)) + # { vector*tmp = p[1]; # tmp->push_back(p[3]); # p[0] = tmp; @@ -7297,6 +7849,7 @@ def p_list_of_port_declarations_1(p): print('list_of_port_declarations_1', list(p)) p[0] = [p[1]] + # { vector*tmp # = new vector(1); # (*tmp)[0] = p[1]; @@ -7314,6 +7867,7 @@ def p_list_of_port_declarations_2(p): p[1].append(p[3]) p[0] = p[1] + # { vector*tmp = p[1]; # tmp->push_back(p[3]); # p[0] = tmp; @@ -7326,6 +7880,7 @@ def p_list_of_port_declarations_3(p): 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, @@ -7351,6 +7906,7 @@ def p_list_of_port_declarations_4(p): if(parse_debug): print('list_of_port_declarations_4', list(p)) + # { # yyerror(@2, "error: NULL port declarations are not " # "allowed."); @@ -7363,6 +7919,7 @@ def p_list_of_port_declarations_5(p): if(parse_debug): print('list_of_port_declarations_5', list(p)) + # { # yyerror(@2, "error: ';' is an invalid port declaration " # "separator."); @@ -7377,6 +7934,7 @@ def p_port_declaration_1(p): 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]; @@ -7397,6 +7955,7 @@ def p_port_declaration_2(p): 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, @@ -7419,6 +7978,7 @@ def p_port_declaration_3(p): 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); @@ -7441,6 +8001,7 @@ def p_port_declaration_4(p): 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, @@ -7465,6 +8026,7 @@ def p_port_declaration_5(p): 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]; @@ -7508,6 +8070,7 @@ def p_port_declaration_6(p): 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, @@ -7530,6 +8093,7 @@ def p_port_declaration_7(p): 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]; @@ -7642,6 +8206,7 @@ def p_atom2_type_1(p): if(parse_debug): print('atom2_type_1', list(p)) + # { p[0] = 8; } () @@ -7651,6 +8216,7 @@ def p_atom2_type_2(p): if(parse_debug): print('atom2_type_2', list(p)) + # { p[0] = 16; } () @@ -7660,6 +8226,7 @@ def p_atom2_type_3(p): if(parse_debug): print('atom2_type_3', list(p)) + # { p[0] = 32; } () @@ -7669,6 +8236,7 @@ def p_atom2_type_4(p): if(parse_debug): print('atom2_type_4', list(p)) + # { p[0] = 64; } () @@ -7679,6 +8247,7 @@ def p_lpvalue_1(p): print('lpvalue_1', list(p)) p[0] = p[1] + # { PEIdent*tmp = pform_new_ident(*p[1]); # FILE_NAME(tmp, @1); # p[0] = tmp; @@ -7692,6 +8261,7 @@ def p_lpvalue_2(p): 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()); @@ -7711,6 +8281,7 @@ def p_lpvalue_3(p): if(parse_debug): print('lpvalue_3', list(p)) + # { PEConcat*tmp = new PEConcat(*p[2]); # FILE_NAME(tmp, @1); # delete p[2]; @@ -7724,6 +8295,7 @@ def p_lpvalue_4(p): if(parse_debug): print('lpvalue_4', list(p)) + # { yyerror(@1, "sorry: streaming concatenation not supported in l-values."); # p[0] = None # } @@ -7736,6 +8308,7 @@ def p_cont_assign_1(p): print('cont_assign_1', list(p)) absyn.cont_assign_1(p) + # { list*tmp = new list; # tmp->push_back(p[1]); # tmp->push_back(p[3]); @@ -7749,6 +8322,7 @@ def p_cont_assign_list_1(p): if(parse_debug): print('cont_assign_list_1', list(p)) + # { list*tmp = p[1]; # tmp->splice(tmp->end(), *p[3]); # delete p[3]; @@ -7781,6 +8355,7 @@ def p_module_1(p): def p__embed0_module(p): '''_embed0_module : ''' + # { pform_startmodule(@2, p[4], p[2]==K_program, p[2]==K_interface, p[3], p[1]); } () @@ -7788,6 +8363,7 @@ def p__embed0_module(p): def p__embed1_module(p): '''_embed1_module : ''' + # { pform_module_set_ports(p[8]); } () @@ -7795,6 +8371,7 @@ def p__embed1_module(p): def p__embed2_module(p): '''_embed2_module : ''' + # { pform_set_scope_timescale(@2); } () @@ -7802,6 +8379,7 @@ def p__embed2_module(p): 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 @@ -7845,6 +8423,7 @@ def p_module_start_1(p): if(parse_debug > 1): print('module_start_1', list(p)) + # { p[0] = K_module; } () @@ -7854,6 +8433,7 @@ def p_module_start_2(p): if(parse_debug): print('module_start_2', list(p)) + # { p[0] = K_module; } () @@ -7863,6 +8443,7 @@ def p_module_start_3(p): if(parse_debug): print('module_start_3', list(p)) + # { p[0] = K_program; } () @@ -7872,6 +8453,7 @@ def p_module_start_4(p): if(parse_debug): print('module_start_4', list(p)) + # { p[0] = K_interface; } () @@ -7881,6 +8463,7 @@ def p_module_end_1(p): if(parse_debug > 2): print('module_end_1', list(p)) + # { p[0] = K_module; } () @@ -7890,6 +8473,7 @@ def p_module_end_2(p): if(parse_debug): print('module_end_2', list(p)) + # { p[0] = K_program; } () @@ -7899,6 +8483,7 @@ def p_module_end_3(p): if(parse_debug): print('module_end_3', list(p)) + # { p[0] = K_interface; } () @@ -7918,6 +8503,7 @@ def p_endlabel_opt_2(p): if(parse_debug > 2): print('endlabel_opt_2', list(p)) + # { p[0] = None } () @@ -7927,6 +8513,7 @@ def p_module_attribute_foreign_1(p): if(parse_debug): print('module_attribute_foreign_1', list(p)) + # { p[0] = None } () @@ -7936,6 +8523,7 @@ def p_module_attribute_foreign_2(p): if(parse_debug > 2): print('module_attribute_foreign_2', list(p)) + # { p[0] = None } () @@ -7965,6 +8553,7 @@ def p_module_port_list_opt_3(p): if(parse_debug): print('module_port_list_opt_3', list(p)) + # { p[0] = None } () @@ -7974,6 +8563,7 @@ def p_module_port_list_opt_4(p): if(parse_debug): print('module_port_list_opt_4', list(p)) + # { yyerror(@2, "Errors in port declarations."); # yyerrok; # p[0] = None @@ -8051,6 +8641,7 @@ def p_module_item_2(p): 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); @@ -8071,6 +8662,7 @@ def p_module_item_3(p): 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) { @@ -8087,6 +8679,7 @@ def p_module_item_4(p): 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]; @@ -8099,6 +8692,7 @@ def p_module_item_5(p): 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); @@ -8119,6 +8713,7 @@ def p_module_item_6(p): 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); @@ -8139,6 +8734,7 @@ def p_module_item_7(p): 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]) { @@ -8155,6 +8751,7 @@ def p_module_item_8(p): if(parse_debug): print('module_item_8', list(p)) + # { yyerror(@1, "sorry: trireg nets not supported."); # delete p[3]; # delete p[4]; @@ -8167,6 +8764,7 @@ def p_module_item_9(p): if(parse_debug): print('module_item_9', list(p)) + # { pform_module_define_port(@2, p[5], p[2], p[3], p[4], p[1]); } () @@ -8176,6 +8774,7 @@ def p_module_item_10(p): 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]); # } @@ -8187,6 +8786,7 @@ def p_module_item_11(p): 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 (p[3])) { # if (dtype->implicit_flag) @@ -8205,6 +8805,7 @@ def p_module_item_12(p): 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 (p[3])) { # if (dtype->implicit_flag) @@ -8223,6 +8824,7 @@ def p_module_item_13(p): 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 (p[3])) { # if (dtype->implicit_flag) @@ -8257,6 +8859,7 @@ def p_module_item_14(p): 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]; @@ -8270,6 +8873,7 @@ def p_module_item_15(p): 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]; @@ -8283,6 +8887,7 @@ def p_module_item_16(p): 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]; @@ -8296,6 +8901,7 @@ def p_module_item_17(p): 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]; @@ -8309,6 +8915,7 @@ def p_module_item_18(p): if(parse_debug): print('module_item_18', list(p)) + # { pform_attach_discipline(@1, p[1], p[2]); } () @@ -8318,6 +8925,7 @@ def p_module_item_19(p): if(parse_debug): print('module_item_19', list(p)) + # { delete attributes_in_context; # attributes_in_context = 0; # } @@ -8338,6 +8946,7 @@ def p_module_item_21(p): if(parse_debug): print('module_item_21', list(p)) + # { pform_makegates(@2, p[2], str_strength, 0, p[3], p[1]); } () @@ -8347,6 +8956,7 @@ def p_module_item_22(p): if(parse_debug): print('module_item_22', list(p)) + # { pform_makegates(@2, p[2], str_strength, p[3], p[4], p[1]); } () @@ -8356,6 +8966,7 @@ def p_module_item_23(p): if(parse_debug): print('module_item_23', list(p)) + # { pform_makegates(@2, p[2], p[3], 0, p[4], p[1]); } () @@ -8365,6 +8976,7 @@ def p_module_item_24(p): if(parse_debug): print('module_item_24', list(p)) + # { pform_makegates(@2, p[2], p[3], p[4], p[5], p[1]); } () @@ -8374,6 +8986,7 @@ def p_module_item_25(p): if(parse_debug): print('module_item_25', list(p)) + # { pform_makegates(@2, p[2], str_strength, 0, p[3], p[1]); } () @@ -8383,6 +8996,7 @@ def p_module_item_26(p): if(parse_debug): print('module_item_26', list(p)) + # { pform_makegates(@2, p[2], str_strength, p[3], p[4], p[1]); } () @@ -8392,6 +9006,7 @@ def p_module_item_27(p): if(parse_debug): print('module_item_27', list(p)) + # { pform_makegates(@1, PGBuiltin::PULLUP, pull_strength, 0, p[2], 0); } () @@ -8401,6 +9016,7 @@ def p_module_item_28(p): if(parse_debug): print('module_item_28', list(p)) + # { pform_makegates(@1, PGBuiltin::PULLDOWN, pull_strength, 0, p[2], 0); } () @@ -8410,6 +9026,7 @@ def p_module_item_29(p): if(parse_debug): print('module_item_29', list(p)) + # { pform_makegates(@1, PGBuiltin::PULLUP, p[3], 0, p[5], 0); } () @@ -8419,6 +9036,7 @@ def p_module_item_30(p): if(parse_debug): print('module_item_30', list(p)) + # { pform_makegates(@1, PGBuiltin::PULLUP, p[3], 0, p[7], 0); } () @@ -8428,6 +9046,7 @@ def p_module_item_31(p): if(parse_debug): print('module_item_31', list(p)) + # { pform_makegates(@1, PGBuiltin::PULLUP, p[5], 0, p[7], 0); } () @@ -8437,6 +9056,7 @@ def p_module_item_32(p): if(parse_debug): print('module_item_32', list(p)) + # { pform_makegates(@1, PGBuiltin::PULLDOWN, p[3], 0, p[5], 0); } () @@ -8446,6 +9066,7 @@ def p_module_item_33(p): if(parse_debug): print('module_item_33', list(p)) + # { pform_makegates(@1, PGBuiltin::PULLDOWN, p[5], 0, p[7], 0); } () @@ -8455,6 +9076,7 @@ def p_module_item_34(p): if(parse_debug): print('module_item_34', list(p)) + # { pform_makegates(@1, PGBuiltin::PULLDOWN, p[3], 0, p[7], 0); } () @@ -8464,6 +9086,7 @@ def p_module_item_35(p): 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]; @@ -8476,6 +9099,7 @@ def p_module_item_36(p): if(parse_debug): print('module_item_36', list(p)) + # { yyerror(@2, "error: Invalid module instantiation"); # delete[]p[2]; # if (p[1]) delete p[1]; @@ -8488,6 +9112,7 @@ def p_module_item_37(p): 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); } () @@ -8497,6 +9122,7 @@ def p_module_item_38(p): 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); # } @@ -8508,6 +9134,9 @@ def p_module_item_39(p): if(parse_debug): print('module_item_39', list(p)) + absyn.always_comb(p[3], p[1]) + + # { PProcess*tmp = pform_make_behavior(IVL_PR_ALWAYS_COMB, p[3], p[1]); # FILE_NAME(tmp, @2); # } @@ -8519,6 +9148,7 @@ def p_module_item_40(p): 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); # } @@ -8530,6 +9160,7 @@ def p_module_item_41(p): 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); # } @@ -8541,6 +9172,7 @@ def p_module_item_42(p): 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); # } @@ -8552,6 +9184,7 @@ def p_module_item_43(p): 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); # } @@ -8563,6 +9196,7 @@ def p_module_item_44(p): if(parse_debug): print('module_item_44', list(p)) + # { pform_make_analog_behavior(@2, IVL_PR_ALWAYS, p[3]); } () @@ -8617,6 +9251,7 @@ def p_module_item_50(p): 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; @@ -8633,6 +9268,7 @@ def p_module_item_51(p): if(parse_debug): print('module_item_51', list(p)) + # { pform_genvars(@1, p[2]); } () @@ -8642,6 +9278,7 @@ def p_module_item_52(p): if(parse_debug): print('module_item_52', list(p)) + # { pform_endgenerate(); } () @@ -8651,6 +9288,7 @@ def p_module_item_53(p): if(parse_debug): print('module_item_53', list(p)) + # { pform_endgenerate(); } () @@ -8660,6 +9298,7 @@ def p_module_item_54(p): if(parse_debug): print('module_item_54', list(p)) + # { pform_endgenerate(); } () @@ -8669,6 +9308,7 @@ def p_module_item_55(p): if(parse_debug): print('module_item_55', list(p)) + # { pform_endgenerate(); } () @@ -8714,6 +9354,7 @@ def p_module_item_60(p): if(parse_debug): print('module_item_60', list(p)) + # { yyerror(@1, "error: syntax error in specify block"); # yyerrok; # } @@ -8725,6 +9366,7 @@ def p_module_item_61(p): if(parse_debug): print('module_item_61', list(p)) + # { yyerror(@2, "error: invalid module item."); # yyerrok; # } @@ -8736,6 +9378,7 @@ def p_module_item_62(p): if(parse_debug): print('module_item_62', list(p)) + # { yyerror(@1, "error: syntax error in left side " # "of continuous assignment."); # yyerrok; @@ -8748,6 +9391,7 @@ def p_module_item_63(p): if(parse_debug): print('module_item_63', list(p)) + # { yyerror(@1, "error: syntax error in " # "continuous assignment"); # yyerrok; @@ -8760,6 +9404,7 @@ def p_module_item_64(p): if(parse_debug): print('module_item_64', list(p)) + # { yyerror(@1, "error: I give up on this " # "function definition."); # if (p[4]) { @@ -8779,6 +9424,7 @@ def p_module_item_65(p): 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]); @@ -8793,6 +9439,7 @@ def p_module_item_66(p): if(parse_debug): print('module_item_66', list(p)) + # { yyerror(@1, "error: Malformed $attribute parameter list."); } () @@ -8800,6 +9447,7 @@ def p_module_item_66(p): def p__embed0_module_item(p): '''_embed0_module_item : ''' + # { attributes_in_context = p[1]; } () @@ -8807,6 +9455,7 @@ def p__embed0_module_item(p): def p__embed1_module_item(p): '''_embed1_module_item : ''' + # { if (pform_in_interface()) # yyerror(@1, "error: Parameter overrides are not allowed " # "in interfaces."); @@ -8817,6 +9466,7 @@ def p__embed1_module_item(p): def p__embed2_module_item(p): '''_embed2_module_item : ''' + # { pform_start_generate_for(@1, p[3], p[5], p[7], p[9], p[11]); } () @@ -8824,6 +9474,7 @@ def p__embed2_module_item(p): def p__embed3_module_item(p): '''_embed3_module_item : ''' + # { pform_start_generate_else(@1); } () @@ -8831,6 +9482,7 @@ def p__embed3_module_item(p): def p__embed4_module_item(p): '''_embed4_module_item : ''' + # { pform_start_generate_case(@1, p[3]); } () @@ -8838,6 +9490,7 @@ def p__embed4_module_item(p): def p__embed5_module_item(p): '''_embed5_module_item : ''' + # { if (pform_in_interface()) # yyerror(@1, "error: specparam declarations are not allowed " # "in interfaces."); @@ -8848,6 +9501,7 @@ def p__embed5_module_item(p): def p__embed6_module_item(p): '''_embed6_module_item : ''' + # { if (pform_in_interface()) # yyerror(@1, "error: specify blocks are not allowed " # "in interfaces."); @@ -8896,6 +9550,7 @@ def p_generate_if_1(p): if(parse_debug): print('generate_if_1', list(p)) + # { pform_start_generate_if(@1, p[3]); } () @@ -8923,6 +9578,7 @@ def p_generate_case_item_1(p): if(parse_debug): print('generate_case_item_1', list(p)) + # { pform_endgenerate(); } () @@ -8932,6 +9588,7 @@ def p_generate_case_item_2(p): if(parse_debug): print('generate_case_item_2', list(p)) + # { pform_endgenerate(); } () @@ -8939,6 +9596,7 @@ def p_generate_case_item_2(p): def p__embed0_generate_case_item(p): '''_embed0_generate_case_item : ''' + # { pform_generate_case_item(@1, p[1]); } () @@ -8946,6 +9604,7 @@ def p__embed0_generate_case_item(p): def p__embed1_generate_case_item(p): '''_embed1_generate_case_item : ''' + # { pform_generate_case_item(@1, 0); } () @@ -8964,6 +9623,7 @@ def p_generate_item_2(p): 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; @@ -8978,6 +9638,7 @@ def p_generate_item_3(p): 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; @@ -8991,6 +9652,7 @@ def p_generate_item_3(p): def p__embed0_generate_item(p): '''_embed0_generate_item : ''' + # { # pform_start_generate_nblock(@1, p[3]); # } @@ -9056,6 +9718,7 @@ def p_generate_block_3(p): 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) { @@ -9096,6 +9759,7 @@ def p_net_decl_assign_1(p): 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]); @@ -9111,6 +9775,7 @@ def p_net_decl_assigns_1(p): 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]; @@ -9124,6 +9789,7 @@ def p_net_decl_assigns_2(p): if(parse_debug): print('net_decl_assigns_2', list(p)) + # { p[0] = p[1]; # } () @@ -9134,6 +9800,7 @@ def p_bit_logic_1(p): if(parse_debug): print('bit_logic_1', list(p)) + # { p[0] = IVL_VT_LOGIC; } () @@ -9143,6 +9810,7 @@ def p_bit_logic_2(p): if(parse_debug): print('bit_logic_2', list(p)) + # { p[0] = IVL_VT_BOOL; /* Icarus misc */} () @@ -9152,6 +9820,7 @@ def p_bit_logic_3(p): if(parse_debug): print('bit_logic_3', list(p)) + # { p[0] = IVL_VT_BOOL; /* IEEE1800 / IEEE1364-2009 */} () @@ -9170,6 +9839,7 @@ def p_bit_logic_opt_2(p): if(parse_debug): print('bit_logic_opt_2', list(p)) + # { p[0] = IVL_VT_NO_TYPE; } () @@ -9190,6 +9860,7 @@ def p_net_type_2(p): if(parse_debug): print('net_type_2', list(p)) + # { p[0] = NetNet::TRI; } () @@ -9199,6 +9870,7 @@ def p_net_type_3(p): if(parse_debug): print('net_type_3', list(p)) + # { p[0] = NetNet::TRI1; } () @@ -9208,6 +9880,7 @@ def p_net_type_4(p): if(parse_debug): print('net_type_4', list(p)) + # { p[0] = NetNet::SUPPLY0; } () @@ -9217,6 +9890,7 @@ def p_net_type_5(p): if(parse_debug): print('net_type_5', list(p)) + # { p[0] = NetNet::WAND; } () @@ -9226,6 +9900,7 @@ def p_net_type_6(p): if(parse_debug): print('net_type_6', list(p)) + # { p[0] = NetNet::TRIAND; } () @@ -9235,6 +9910,7 @@ def p_net_type_7(p): if(parse_debug): print('net_type_7', list(p)) + # { p[0] = NetNet::TRI0; } () @@ -9244,6 +9920,7 @@ def p_net_type_8(p): if(parse_debug): print('net_type_8', list(p)) + # { p[0] = NetNet::SUPPLY1; } () @@ -9253,6 +9930,7 @@ def p_net_type_9(p): if(parse_debug): print('net_type_9', list(p)) + # { p[0] = NetNet::WOR; } () @@ -9262,6 +9940,7 @@ def p_net_type_10(p): if(parse_debug): print('net_type_10', list(p)) + # { p[0] = NetNet::TRIOR; } () @@ -9271,6 +9950,7 @@ def p_net_type_11(p): 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' " @@ -9284,6 +9964,7 @@ def p_net_type_12(p): if(parse_debug): print('net_type_12', list(p)) + # { p[0] = NetNet::UNRESOLVED_WIRE; } () @@ -9293,6 +9974,7 @@ def p_param_type_1(p): 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)) @@ -9308,6 +9990,7 @@ def p_param_type_2(p): 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; @@ -9320,6 +10003,7 @@ def p_param_type_3(p): 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; @@ -9332,6 +10016,7 @@ def p_param_type_4(p): if(parse_debug): print('param_type_4', list(p)) + # { param_active_range = 0; # param_active_signed = true; # param_active_type = IVL_VT_REAL; @@ -9344,6 +10029,7 @@ def p_param_type_5(p): 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; @@ -9356,6 +10042,7 @@ def p_param_type_6(p): 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; @@ -9407,6 +10094,7 @@ def p_parameter_assign_1(p): 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]); @@ -9420,6 +10108,7 @@ def p_localparam_assign_1(p): 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); @@ -9443,6 +10132,7 @@ def p_parameter_value_ranges_opt_2(p): if(parse_debug): print('parameter_value_ranges_opt_2', list(p)) + # { p[0] = None } () @@ -9452,6 +10142,7 @@ def p_parameter_value_ranges_1(p): if(parse_debug): print('parameter_value_ranges_1', list(p)) + # { p[0] = p[2]; p[0]->next = p[1]; } () @@ -9461,6 +10152,7 @@ def p_parameter_value_ranges_2(p): if(parse_debug): print('parameter_value_ranges_2', list(p)) + # { p[0] = p[1]; p[0]->next = 0; } () @@ -9470,6 +10162,7 @@ def p_parameter_value_range_1(p): if(parse_debug): print('parameter_value_range_1', list(p)) + # { p[0] = pform_parameter_value_range(p[1], false, p[3], false, p[5]); } () @@ -9479,6 +10172,7 @@ def p_parameter_value_range_2(p): if(parse_debug): print('parameter_value_range_2', list(p)) + # { p[0] = pform_parameter_value_range(p[1], false, p[3], true, p[5]); } () @@ -9488,6 +10182,7 @@ def p_parameter_value_range_3(p): if(parse_debug): print('parameter_value_range_3', list(p)) + # { p[0] = pform_parameter_value_range(p[1], true, p[3], false, p[5]); } () @@ -9497,6 +10192,7 @@ def p_parameter_value_range_4(p): if(parse_debug): print('parameter_value_range_4', list(p)) + # { p[0] = pform_parameter_value_range(p[1], true, p[3], true, p[5]); } () @@ -9506,6 +10202,7 @@ def p_parameter_value_range_5(p): if(parse_debug): print('parameter_value_range_5', list(p)) + # { p[0] = pform_parameter_value_range(true, false, p[2], false, p[2]); } () @@ -9525,6 +10222,7 @@ def p_value_range_expression_2(p): if(parse_debug): print('value_range_expression_2', list(p)) + # { p[0] = None } () @@ -9534,6 +10232,7 @@ def p_value_range_expression_3(p): if(parse_debug): print('value_range_expression_3', list(p)) + # { p[0] = None } () @@ -9543,6 +10242,7 @@ def p_value_range_expression_4(p): if(parse_debug): print('value_range_expression_4', list(p)) + # { p[0] = None } () @@ -9572,6 +10272,7 @@ def p_parameter_value_opt_1(p): 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; @@ -9585,6 +10286,7 @@ def p_parameter_value_opt_2(p): 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]; @@ -9598,6 +10300,7 @@ def p_parameter_value_opt_3(p): if(parse_debug): print('parameter_value_opt_3', list(p)) + # { assert(p[2]); # PENumber*tmp = new PENumber(p[2]); # FILE_NAME(tmp, @1); @@ -9617,6 +10320,7 @@ def p_parameter_value_opt_4(p): if(parse_debug): print('parameter_value_opt_4', list(p)) + # { assert(p[2]); # PEFNumber*tmp = new PEFNumber(p[2]); # FILE_NAME(tmp, @1); @@ -9635,6 +10339,7 @@ def p_parameter_value_opt_5(p): if(parse_debug): print('parameter_value_opt_5', list(p)) + # { yyerror(@1, "error: syntax error in parameter value " # "assignment list."); # p[0] = None @@ -9647,6 +10352,7 @@ def p_parameter_value_opt_6(p): if(parse_debug): print('parameter_value_opt_6', list(p)) + # { p[0] = None } () @@ -9656,6 +10362,7 @@ def p_parameter_value_byname_1(p): 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]; @@ -9670,6 +10377,7 @@ def p_parameter_value_byname_2(p): 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; @@ -9684,6 +10392,7 @@ def p_parameter_value_byname_list_1(p): if(parse_debug): print('parameter_value_byname_list_1', list(p)) + # { list*tmp = new list; # tmp->push_back(*p[1]); # delete p[1]; @@ -9697,6 +10406,7 @@ def p_parameter_value_byname_list_2(p): if(parse_debug): print('parameter_value_byname_list_2', list(p)) + # { list*tmp = p[1]; # tmp->push_back(*p[3]); # delete p[3]; @@ -9720,6 +10430,7 @@ def p_port_2(p): if(parse_debug): print('port_2', list(p)) + # { Module::port_t*tmp = p[4]; # tmp->name = lex_strings.make(p[2]); # delete[]p[2]; @@ -9733,6 +10444,7 @@ def p_port_3(p): if(parse_debug): print('port_3', list(p)) + # { Module::port_t*tmp = p[2]; # tmp->name = perm_string(); # p[0] = tmp; @@ -9745,6 +10457,7 @@ def p_port_4(p): if(parse_debug): print('port_4', list(p)) + # { Module::port_t*tmp = p[5]; # tmp->name = lex_strings.make(p[2]); # delete[]p[2]; @@ -9768,6 +10481,7 @@ def p_port_opt_2(p): if(parse_debug): print('port_opt_2', list(p)) + # { p[0] = None } () @@ -9777,6 +10491,7 @@ def p_port_name_1(p): 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]; @@ -9791,6 +10506,7 @@ def p_port_name_2(p): 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]); @@ -9806,6 +10522,7 @@ def p_port_name_3(p): 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; @@ -9820,6 +10537,7 @@ def p_port_name_4(p): 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); @@ -9835,6 +10553,7 @@ def p_port_name_5(p): 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; @@ -9848,6 +10567,7 @@ def p_port_name_list_1(p): if(parse_debug): print('port_name_list_1', list(p)) + # { list*tmp = p[1]; # tmp->push_back(*p[3]); # delete p[3]; @@ -9861,6 +10581,7 @@ def p_port_name_list_2(p): if(parse_debug): print('port_name_list_2', list(p)) + # { list*tmp = new list; # tmp->push_back(*p[1]); # delete p[1]; @@ -9874,6 +10595,7 @@ def p_port_reference_1(p): 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); @@ -9888,6 +10610,7 @@ def p_port_reference_2(p): if(parse_debug): print('port_reference_2', list(p)) + # { index_component_t itmp; # itmp.sel = index_component_t::SEL_PART; # itmp.msb = p[3]; @@ -9917,6 +10640,7 @@ def p_port_reference_3(p): if(parse_debug): print('port_reference_3', list(p)) + # { index_component_t itmp; # itmp.sel = index_component_t::SEL_BIT; # itmp.msb = p[3]; @@ -9945,6 +10669,7 @@ def p_port_reference_4(p): 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])); @@ -9972,6 +10697,7 @@ def p_port_reference_list_2(p): 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]; @@ -9985,6 +10711,7 @@ def p_dimensions_opt_1(p): if(parse_debug > 2): print('dimensions_opt_1', list(p)) + # { p[0] = None } () @@ -10014,6 +10741,7 @@ def p_dimensions_2(p): if(parse_debug): print('dimensions_2', list(p)) + # { list *tmp = p[1]; # if (p[2]) { # tmp->splice(tmp->end(), *p[2]); @@ -10029,6 +10757,7 @@ def p_register_variable_1(p): 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); @@ -10043,6 +10772,7 @@ def p_register_variable_2(p): 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 " @@ -10064,6 +10794,7 @@ def p_register_variable_list_1(p): if(parse_debug): print('register_variable_list_1', list(p)) + # { list*tmp = new list; # tmp->push_back(lex_strings.make(p[1])); # p[0] = tmp; @@ -10077,6 +10808,7 @@ def p_register_variable_list_2(p): if(parse_debug): print('register_variable_list_2', list(p)) + # { list*tmp = p[1]; # tmp->push_back(lex_strings.make(p[3])); # p[0] = tmp; @@ -10098,7 +10830,6 @@ def p_net_variable_1(p): # pform_set_reg_idx(name, p[2]); p[0] = [p[1], p[2]] - # } () @@ -10109,6 +10840,7 @@ def p_net_variable_list_1(p): print('net_variable_list_1', list(p)) p[0] = [p[1]] + # { list*tmp = new list; # tmp->push_back(lex_strings.make(p[1])); # p[0] = tmp; @@ -10123,6 +10855,7 @@ def p_net_variable_list_2(p): print('net_variable_list_2', list(p)) p[0] = p[1]+[p[3]] + # { list*tmp = p[1]; # tmp->push_back(lex_strings.make(p[3])); # p[0] = tmp; @@ -10136,6 +10869,7 @@ def p_event_variable_1(p): if(parse_debug): print('event_variable_1', list(p)) + # { if (p[2]) { # yyerror(@2, "sorry: event arrays are not supported."); # delete p[2]; @@ -10150,6 +10884,7 @@ def p_event_variable_list_1(p): if(parse_debug): print('event_variable_list_1', list(p)) + # { p[0] = list_from_identifier(p[1]); } () @@ -10159,6 +10894,7 @@ def p_event_variable_list_2(p): if(parse_debug): print('event_variable_list_2', list(p)) + # { p[0] = list_from_identifier(p[1], p[3]); } () @@ -10177,6 +10913,7 @@ def p_specify_item_2(p): if(parse_debug): print('specify_item_2', list(p)) + # { pform_module_specify_path(p[1]); # } () @@ -10187,6 +10924,7 @@ def p_specify_item_3(p): if(parse_debug): print('specify_item_3', list(p)) + # { pform_module_specify_path(p[1]); # } () @@ -10197,6 +10935,7 @@ def p_specify_item_4(p): if(parse_debug): print('specify_item_4', list(p)) + # { PSpecPath*tmp = p[5]; # if (tmp) { # tmp->conditional = true; @@ -10212,6 +10951,7 @@ def p_specify_item_5(p): if(parse_debug): print('specify_item_5', list(p)) + # { PSpecPath*tmp = p[5]; # if (tmp) { # tmp->conditional = true; @@ -10227,6 +10967,7 @@ def p_specify_item_6(p): if(parse_debug): print('specify_item_6', list(p)) + # { PSpecPath*tmp = p[2]; # if (tmp) { # tmp->conditional = true; @@ -10242,6 +10983,7 @@ def p_specify_item_7(p): if(parse_debug): print('specify_item_7', list(p)) + # { yyerror(@1, "Sorry: ifnone with an edge-sensitive path is " # "not supported."); # yyerrok; @@ -10254,6 +10996,7 @@ def p_specify_item_8(p): if(parse_debug): print('specify_item_8', list(p)) + # { delete p[7]; # delete p[9]; # } @@ -10265,6 +11008,7 @@ def p_specify_item_9(p): if(parse_debug): print('specify_item_9', list(p)) + # { delete p[7]; # } () @@ -10275,6 +11019,7 @@ def p_specify_item_10(p): if(parse_debug): print('specify_item_10', list(p)) + # { delete p[7]; # delete p[9]; # } @@ -10286,6 +11031,7 @@ def p_specify_item_11(p): if(parse_debug): print('specify_item_11', list(p)) + # { delete p[5]; # } () @@ -10296,6 +11042,7 @@ def p_specify_item_12(p): if(parse_debug): print('specify_item_12', list(p)) + # { delete p[7]; # } () @@ -10306,6 +11053,7 @@ def p_specify_item_13(p): if(parse_debug): print('specify_item_13', list(p)) + # { delete p[7]; # delete p[9]; # } @@ -10317,6 +11065,7 @@ def p_specify_item_14(p): if(parse_debug): print('specify_item_14', list(p)) + # { delete p[7]; # } () @@ -10327,6 +11076,7 @@ def p_specify_item_15(p): if(parse_debug): print('specify_item_15', list(p)) + # { delete p[7]; # } () @@ -10337,6 +11087,7 @@ def p_specify_item_16(p): if(parse_debug): print('specify_item_16', list(p)) + # { delete p[7]; # delete p[9]; # } @@ -10348,6 +11099,7 @@ def p_specify_item_17(p): if(parse_debug): print('specify_item_17', list(p)) + # { delete p[7]; # } () @@ -10358,6 +11110,7 @@ def p_specify_item_18(p): if(parse_debug): print('specify_item_18', list(p)) + # { delete p[7]; # } () @@ -10368,6 +11121,7 @@ def p_specify_item_19(p): if(parse_debug): print('specify_item_19', list(p)) + # { delete p[5]; # delete p[7]; # } @@ -10379,6 +11133,7 @@ def p_specify_item_20(p): if(parse_debug): print('specify_item_20', list(p)) + # { delete p[5]; # } () @@ -10389,6 +11144,7 @@ def p_specify_item_21(p): if(parse_debug): print('specify_item_21', list(p)) + # { delete p[2]; # } () @@ -10399,6 +11155,7 @@ def p_specify_item_22(p): if(parse_debug): print('specify_item_22', list(p)) + # { delete p[2]; # } () @@ -10409,6 +11166,7 @@ def p_specify_item_23(p): if(parse_debug): print('specify_item_23', list(p)) + # { delete p[2]; # } () @@ -10419,6 +11177,7 @@ def p_specify_item_24(p): if(parse_debug): print('specify_item_24', list(p)) + # { delete p[2]; # } () @@ -10447,6 +11206,7 @@ def p_specify_item_list_opt_1(p): if(parse_debug): print('specify_item_list_opt_1', list(p)) + # { } () @@ -10456,6 +11216,7 @@ def p_specify_item_list_opt_2(p): if(parse_debug): print('specify_item_list_opt_2', list(p)) + # { } () @@ -10465,6 +11226,7 @@ def p_specify_edge_path_decl_1(p): if(parse_debug): print('specify_edge_path_decl_1', list(p)) + # { p[0] = pform_assign_path_delay(p[1], p[4]); } () @@ -10474,6 +11236,7 @@ def p_specify_edge_path_decl_2(p): if(parse_debug): print('specify_edge_path_decl_2', list(p)) + # { list*tmp = new list; # tmp->push_back(p[3]); # p[0] = pform_assign_path_delay(p[1], tmp); @@ -10506,6 +11269,7 @@ def p_specify_edge_path_1(p): 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]); } () @@ -10516,6 +11280,7 @@ def p_specify_edge_path_2(p): 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]);} () @@ -10526,6 +11291,7 @@ def p_specify_edge_path_3(p): 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]); } () @@ -10536,6 +11302,7 @@ def p_specify_edge_path_4(p): 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]); } () @@ -10573,6 +11340,7 @@ def p_specify_simple_path_decl_1(p): if(parse_debug): print('specify_simple_path_decl_1', list(p)) + # { p[0] = pform_assign_path_delay(p[1], p[4]); } () @@ -10582,6 +11350,7 @@ def p_specify_simple_path_decl_2(p): if(parse_debug): print('specify_simple_path_decl_2', list(p)) + # { list*tmp = new list; # tmp->push_back(p[3]); # p[0] = pform_assign_path_delay(p[1], tmp); @@ -10594,6 +11363,7 @@ def p_specify_simple_path_decl_3(p): if(parse_debug): print('specify_simple_path_decl_3', list(p)) + # { yyerror(@3, "Syntax error in delay value list."); # yyerrok; # p[0] = None @@ -10606,6 +11376,7 @@ def p_specify_simple_path_1(p): if(parse_debug): print('specify_simple_path_1', list(p)) + # { p[0] = pform_make_specify_path(@1, p[2], p[3], false, p[5]); } () @@ -10615,6 +11386,7 @@ def p_specify_simple_path_2(p): if(parse_debug): print('specify_simple_path_2', list(p)) + # { p[0] = pform_make_specify_path(@1, p[2], p[3], true, p[5]); } () @@ -10624,6 +11396,7 @@ def p_specify_simple_path_3(p): if(parse_debug): print('specify_simple_path_3', list(p)) + # { yyerror(@1, "Invalid simple path"); # yyerrok; # } @@ -10635,6 +11408,7 @@ def p_specify_path_identifiers_1(p): if(parse_debug): print('specify_path_identifiers_1', list(p)) + # { list*tmp = new list; # tmp->push_back(lex_strings.make(p[1])); # p[0] = tmp; @@ -10648,6 +11422,7 @@ def p_specify_path_identifiers_2(p): 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 " @@ -10666,6 +11441,7 @@ def p_specify_path_identifiers_3(p): 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 " @@ -10684,6 +11460,7 @@ def p_specify_path_identifiers_4(p): if(parse_debug): print('specify_path_identifiers_4', list(p)) + # { list*tmp = p[1]; # tmp->push_back(lex_strings.make(p[3])); # p[0] = tmp; @@ -10697,6 +11474,7 @@ def p_specify_path_identifiers_5(p): 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 " @@ -10715,6 +11493,7 @@ def p_specify_path_identifiers_6(p): 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 " @@ -10733,6 +11512,7 @@ def p_specparam_1(p): 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); @@ -10746,6 +11526,7 @@ def p_specparam_2(p): if(parse_debug): print('specparam_2', list(p)) + # { PExpr*tmp = 0; # switch (min_typ_max_flag) { # case MIN: @@ -10792,6 +11573,7 @@ def p_specparam_3(p): if(parse_debug): print('specparam_3', list(p)) + # { delete[]p[1]; # delete p[3]; # } @@ -10803,6 +11585,7 @@ def p_specparam_4(p): if(parse_debug): print('specparam_4', list(p)) + # { delete[]p[1]; # delete p[4]; # delete p[6]; @@ -10842,6 +11625,7 @@ def p_specparam_decl_2(p): if(parse_debug): print('specparam_decl_2', list(p)) + # { param_active_range = 0; } () @@ -10849,6 +11633,7 @@ def p_specparam_decl_2(p): def p__embed0_specparam_decl(p): '''_embed0_specparam_decl : ''' + # { param_active_range = p[1]; } () @@ -10858,6 +11643,7 @@ def p_spec_polarity_1(p): if(parse_debug): print('spec_polarity_1', list(p)) + # { p[0] = '+'; } () @@ -10867,6 +11653,7 @@ def p_spec_polarity_2(p): if(parse_debug): print('spec_polarity_2', list(p)) + # { p[0] = '-'; } () @@ -10876,6 +11663,7 @@ def p_spec_polarity_3(p): if(parse_debug): print('spec_polarity_3', list(p)) + # { p[0] = None } () @@ -10885,6 +11673,7 @@ def p_spec_reference_event_1(p): if(parse_debug): print('spec_reference_event_1', list(p)) + # { delete p[2]; } () @@ -10894,6 +11683,7 @@ def p_spec_reference_event_2(p): if(parse_debug): print('spec_reference_event_2', list(p)) + # { delete p[2]; } () @@ -10903,6 +11693,7 @@ def p_spec_reference_event_3(p): if(parse_debug): print('spec_reference_event_3', list(p)) + # { delete p[2]; # delete p[4]; # } @@ -10914,6 +11705,7 @@ def p_spec_reference_event_4(p): if(parse_debug): print('spec_reference_event_4', list(p)) + # { delete p[2]; # delete p[4]; # } @@ -10925,6 +11717,7 @@ def p_spec_reference_event_5(p): if(parse_debug): print('spec_reference_event_5', list(p)) + # { delete p[5]; } () @@ -10934,6 +11727,7 @@ def p_spec_reference_event_6(p): if(parse_debug): print('spec_reference_event_6', list(p)) + # { delete p[5]; # delete p[7]; # } @@ -10945,6 +11739,7 @@ def p_spec_reference_event_7(p): if(parse_debug): print('spec_reference_event_7', list(p)) + # { delete p[1]; # delete p[3]; # } @@ -10956,6 +11751,7 @@ def p_spec_reference_event_8(p): if(parse_debug): print('spec_reference_event_8', list(p)) + # { delete p[1]; } () @@ -10983,6 +11779,7 @@ def p_spec_notifier_opt_1(p): if(parse_debug): print('spec_notifier_opt_1', list(p)) + # { } () @@ -10992,6 +11789,7 @@ def p_spec_notifier_opt_2(p): if(parse_debug): print('spec_notifier_opt_2', list(p)) + # { } () @@ -11001,6 +11799,7 @@ def p_spec_notifier_1(p): if(parse_debug): print('spec_notifier_1', list(p)) + # { args_after_notifier = 0; } () @@ -11010,6 +11809,7 @@ def p_spec_notifier_2(p): if(parse_debug): print('spec_notifier_2', list(p)) + # { args_after_notifier = 0; delete p[2]; } () @@ -11019,6 +11819,7 @@ def p_spec_notifier_3(p): if(parse_debug): print('spec_notifier_3', list(p)) + # { args_after_notifier += 1; } () @@ -11028,6 +11829,7 @@ def p_spec_notifier_4(p): 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 " @@ -11043,6 +11845,7 @@ def p_spec_notifier_5(p): if(parse_debug): print('spec_notifier_5', list(p)) + # { args_after_notifier = 0; delete[]p[1]; } () @@ -11052,18 +11855,22 @@ def p_statement_item_1(p): 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; @@ -11076,6 +11883,7 @@ def p_statement_item_3(p): if(parse_debug): print('statement_item_3', list(p)) + # { PForce*tmp = new PForce(p[2], p[4]); # FILE_NAME(tmp, @1); # p[0] = tmp; @@ -11088,6 +11896,7 @@ def p_statement_item_4(p): if(parse_debug): print('statement_item_4', list(p)) + # { PRelease*tmp = new PRelease(p[2]); # FILE_NAME(tmp, @1); # p[0] = tmp; @@ -11100,6 +11909,7 @@ def p_statement_item_5(p): if(parse_debug): print('statement_item_5', list(p)) + # { PBlock*tmp = new PBlock(PBlock::BL_SEQ); # FILE_NAME(tmp, @1); # p[0] = tmp; @@ -11112,6 +11922,15 @@ def p_statement_item_6(p): if(parse_debug): print('statement_item_6', list(p)) + tmp = None + if(p[3]): + throw(Exception("assert(! current_block_stack.empty());")) + else: + tmp = p[5] + + p[0] = tmp + + # { PBlock*tmp; # if (p[3]) { # pform_pop_scope(); @@ -11134,6 +11953,9 @@ def p_statement_item_7(p): if(parse_debug): print('statement_item_7', list(p)) + p[0] = list(p) + + # { pform_pop_scope(); # assert(! current_block_stack.empty()); # PBlock*tmp = current_block_stack.top(); @@ -11161,6 +11983,7 @@ def p_statement_item_8(p): if(parse_debug): print('statement_item_8', list(p)) + # { PBlock*tmp = new PBlock(p[2]); # FILE_NAME(tmp, @1); # p[0] = tmp; @@ -11173,6 +11996,7 @@ def p_statement_item_9(p): if(parse_debug): print('statement_item_9', list(p)) + # { PBlock*tmp; # if (p[3]) { # pform_pop_scope(); @@ -11196,6 +12020,7 @@ def p_statement_item_10(p): if(parse_debug): print('statement_item_10', list(p)) + # { pform_pop_scope(); # assert(! current_block_stack.empty()); # PBlock*tmp = current_block_stack.top(); @@ -11224,6 +12049,7 @@ def p_statement_item_11(p): if(parse_debug): print('statement_item_11', list(p)) + # { PDisable*tmp = new PDisable(*p[2]); # FILE_NAME(tmp, @1); # delete p[2]; @@ -11237,6 +12063,7 @@ def p_statement_item_12(p): if(parse_debug): print('statement_item_12', list(p)) + # { pform_name_t tmp_name; # PDisable*tmp = new PDisable(tmp_name); # FILE_NAME(tmp, @1); @@ -11250,6 +12077,7 @@ def p_statement_item_13(p): if(parse_debug): print('statement_item_13', list(p)) + # { PTrigger*tmp = new PTrigger(*p[2]); # FILE_NAME(tmp, @1); # delete p[2]; @@ -11293,6 +12121,7 @@ def p_statement_item_17(p): 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; @@ -11305,6 +12134,7 @@ def p_statement_item_18(p): 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; @@ -11317,6 +12147,7 @@ def p_statement_item_19(p): 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; @@ -11329,6 +12160,7 @@ def p_statement_item_20(p): if(parse_debug): print('statement_item_20', list(p)) + # { yyerrok; } () @@ -11338,6 +12170,7 @@ def p_statement_item_21(p): if(parse_debug): print('statement_item_21', list(p)) + # { yyerrok; } () @@ -11347,6 +12180,7 @@ def p_statement_item_22(p): if(parse_debug): print('statement_item_22', list(p)) + # { yyerrok; } () @@ -11356,6 +12190,9 @@ def p_statement_item_23(p): 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; @@ -11368,6 +12205,8 @@ def p_statement_item_24(p): if(parse_debug): print('statement_item_24', list(p)) + 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; @@ -11380,6 +12219,7 @@ def p_statement_item_25(p): if(parse_debug): print('statement_item_25', list(p)) + # { yyerror(@1, "error: Malformed conditional expression."); # p[0] = p[5]; # } @@ -11391,6 +12231,7 @@ def p_statement_item_26(p): if(parse_debug): print('statement_item_26', list(p)) + # { yyerror(@1, "error: Malformed conditional expression."); # p[0] = p[5]; # } @@ -11412,6 +12253,7 @@ def p_statement_item_28(p): if(parse_debug): print('statement_item_28', list(p)) + # { p[0] = pform_compressed_assign_from_inc_dec(@1, p[1]); } () @@ -11421,6 +12263,7 @@ def p_statement_item_29(p): if(parse_debug): print('statement_item_29', list(p)) + # { PExpr*del = p[1]->front(); # assert(p[1]->size() == 1); # delete p[1]; @@ -11436,6 +12279,7 @@ def p_statement_item_30(p): if(parse_debug): print('statement_item_30', list(p)) + # { PEventStatement*tmp = p[1]; # if (tmp == 0) { # yyerror(@1, "error: Invalid event control."); @@ -11453,6 +12297,7 @@ def p_statement_item_31(p): if(parse_debug): print('statement_item_31', list(p)) + # { PEventStatement*tmp = new PEventStatement; # FILE_NAME(tmp, @1); # tmp->set_statement(p[3]); @@ -11466,6 +12311,7 @@ def p_statement_item_32(p): if(parse_debug): print('statement_item_32', list(p)) + # { PEventStatement*tmp = new PEventStatement; # FILE_NAME(tmp, @1); # tmp->set_statement(p[5]); @@ -11476,6 +12322,7 @@ def p_statement_item_32(p): def p_statement_item_33(p): '''statement_item : lpvalue '=' expression ';' ''' + """ if(parse_debug): print('statement_item33', list(p)) if p[3]: @@ -11489,6 +12336,9 @@ def p_statement_item_33(p): if(parse_debug): print("expr (python):'%s'" % expr) p[0] = expr + """ + p[0] = absyn.assign3(p[1], p[2], p[3]) + # { PAssign*tmp = new PAssign(p[1],p[3]); # FILE_NAME(tmp, @1); @@ -11502,6 +12352,7 @@ def p_statement_item_34(p): if(parse_debug): print('statement_item_34', list(p)) + # { yyerror(@2, "Syntax in assignment statement l-value."); # yyerrok; # p[0] = new PNoop; @@ -11514,6 +12365,7 @@ def p_statement_item_35(p): if(parse_debug): print('statement_item_35', list(p)) + # { PAssignNB*tmp = new PAssignNB(p[1],p[3]); # FILE_NAME(tmp, @1); # p[0] = tmp; @@ -11526,6 +12378,7 @@ def p_statement_item_36(p): if(parse_debug): print('statement_item_36', list(p)) + # { yyerror(@2, "Syntax in assignment statement l-value."); # yyerrok; # p[0] = new PNoop; @@ -11538,6 +12391,7 @@ def p_statement_item_37(p): 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]); @@ -11552,6 +12406,7 @@ def p_statement_item_38(p): 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]); @@ -11566,6 +12421,7 @@ def p_statement_item_39(p): 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; @@ -11578,6 +12434,7 @@ def p_statement_item_40(p): 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); @@ -11591,6 +12448,7 @@ def p_statement_item_41(p): 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; @@ -11603,6 +12461,7 @@ def p_statement_item_42(p): 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; @@ -11615,6 +12474,7 @@ def p_statement_item_43(p): if(parse_debug): print('statement_item_43', list(p)) + # { PAssign*tmp = new PAssign(p[1],p[3]); # FILE_NAME(tmp, @1); # p[0] = tmp; @@ -11627,6 +12487,7 @@ def p_statement_item_44(p): if(parse_debug): print('statement_item_44', list(p)) + # { PAssign*tmp = new PAssign(p[1],p[3]); # FILE_NAME(tmp, @1); # p[0] = tmp; @@ -11639,6 +12500,7 @@ def p_statement_item_45(p): if(parse_debug): print('statement_item_45', list(p)) + # { PEventStatement*tmp; # PEEvent*etmp = new PEEvent(PEEvent::POSITIVE, p[3]); # tmp = new PEventStatement(etmp); @@ -11654,6 +12516,7 @@ def p_statement_item_46(p): if(parse_debug): print('statement_item_46', list(p)) + # { PEventStatement*tmp = new PEventStatement((PEEvent*)0); # FILE_NAME(tmp,@1); # p[0] = tmp; @@ -11666,6 +12529,7 @@ def p_statement_item_47(p): 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]; @@ -11680,6 +12544,7 @@ def p_statement_item_48(p): if(parse_debug): print('statement_item_48', list(p)) + # { listpt; # PCallTask*tmp = new PCallTask(lex_strings.make(p[1]), pt); # FILE_NAME(tmp,@1); @@ -11694,6 +12559,7 @@ def p_statement_item_49(p): 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]; @@ -11707,6 +12573,7 @@ def p_statement_item_50(p): if(parse_debug): print('statement_item_50', list(p)) + # { /* ....randomize with { } */ # if (p[1] && peek_tail_name(*p[1]) == "randomize") { # if (!gn_system_verilog()) @@ -11730,6 +12597,7 @@ def p_statement_item_51(p): 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()); @@ -11750,6 +12618,7 @@ def p_statement_item_52(p): if(parse_debug): print('statement_item_52', list(p)) + # { listpt; # PCallTask*tmp = pform_make_call_task(@1, *p[1], pt); # delete p[1]; @@ -11763,6 +12632,7 @@ def p_statement_item_53(p): if(parse_debug): print('statement_item_53', list(p)) + # { PChainConstructor*tmp = new PChainConstructor(*p[5]); # FILE_NAME(tmp, @3); # delete p[1]; @@ -11776,6 +12646,7 @@ def p_statement_item_54(p): if(parse_debug): print('statement_item_54', list(p)) + # { yyerror(@3, "error: Syntax error in task arguments."); # listpt; # PCallTask*tmp = pform_make_call_task(@1, *p[1], pt); @@ -11790,6 +12661,7 @@ def p_statement_item_55(p): if(parse_debug): print('statement_item_55', list(p)) + # { yyerror(@2, "error: malformed statement"); # yyerrok; # p[0] = new PNoop; @@ -11800,6 +12672,7 @@ def p_statement_item_55(p): 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); @@ -11810,6 +12683,7 @@ def p__embed0_statement_item(p): def p__embed1_statement_item(p): '''_embed1_statement_item : ''' + # { if (p[3]) { # if (! gn_system_verilog()) { # yyerror("error: Variable declaration in unnamed block " @@ -11830,6 +12704,7 @@ def p__embed1_statement_item(p): 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); @@ -11840,6 +12715,7 @@ def p__embed2_statement_item(p): 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); @@ -11850,6 +12726,7 @@ def p__embed3_statement_item(p): def p__embed4_statement_item(p): '''_embed4_statement_item : ''' + # { if (p[3]) { # if (! gn_system_verilog()) { # yyerror("error: Variable declaration in unnamed block " @@ -11870,6 +12747,7 @@ def p__embed4_statement_item(p): 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); @@ -11882,6 +12760,7 @@ def p_compressed_statement_1(p): if(parse_debug): print('compressed_statement_1', list(p)) + # { PAssign*tmp = new PAssign(p[1], '+', p[3]); # FILE_NAME(tmp, @1); # p[0] = tmp; @@ -11894,6 +12773,7 @@ def p_compressed_statement_2(p): if(parse_debug): print('compressed_statement_2', list(p)) + # { PAssign*tmp = new PAssign(p[1], '-', p[3]); # FILE_NAME(tmp, @1); # p[0] = tmp; @@ -11906,6 +12786,7 @@ def p_compressed_statement_3(p): if(parse_debug): print('compressed_statement_3', list(p)) + # { PAssign*tmp = new PAssign(p[1], '*', p[3]); # FILE_NAME(tmp, @1); # p[0] = tmp; @@ -11918,6 +12799,7 @@ def p_compressed_statement_4(p): if(parse_debug): print('compressed_statement_4', list(p)) + # { PAssign*tmp = new PAssign(p[1], '/', p[3]); # FILE_NAME(tmp, @1); # p[0] = tmp; @@ -11930,6 +12812,7 @@ def p_compressed_statement_5(p): if(parse_debug): print('compressed_statement_5', list(p)) + # { PAssign*tmp = new PAssign(p[1], '%', p[3]); # FILE_NAME(tmp, @1); # p[0] = tmp; @@ -11942,6 +12825,7 @@ def p_compressed_statement_6(p): if(parse_debug): print('compressed_statement_6', list(p)) + # { PAssign*tmp = new PAssign(p[1], '&', p[3]); # FILE_NAME(tmp, @1); # p[0] = tmp; @@ -11954,6 +12838,7 @@ def p_compressed_statement_7(p): if(parse_debug): print('compressed_statement_7', list(p)) + # { PAssign*tmp = new PAssign(p[1], '|', p[3]); # FILE_NAME(tmp, @1); # p[0] = tmp; @@ -11966,6 +12851,7 @@ def p_compressed_statement_8(p): if(parse_debug): print('compressed_statement_8', list(p)) + # { PAssign*tmp = new PAssign(p[1], '^', p[3]); # FILE_NAME(tmp, @1); # p[0] = tmp; @@ -11978,6 +12864,7 @@ def p_compressed_statement_9(p): 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; @@ -11990,6 +12877,7 @@ def p_compressed_statement_10(p): 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; @@ -12002,6 +12890,7 @@ def p_compressed_statement_11(p): 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; @@ -12024,6 +12913,7 @@ def p_statement_or_null_list_opt_2(p): if(parse_debug): print('statement_or_null_list_opt_2', list(p)) + # { p[0] = None } () @@ -12032,6 +12922,14 @@ def p_statement_or_null_list_1(p): '''statement_or_null_list : statement_or_null_list statement_or_null ''' if(parse_debug): print('statement_or_null_list_1', list(p)) + print(p[1]) + + tmp = p[1] + if(tmp is None): + tmp = StatementList() + if (p[2]): + tmp.add_statement(p[2]) + p[0] = tmp # { vector*tmp = p[1]; # if (p[2]) tmp->push_back(p[2]); @@ -12045,6 +12943,12 @@ def p_statement_or_null_list_2(p): if(parse_debug): print('statement_or_null_list_2', list(p)) + tmp = StatementList() + if (p[1]): + tmp.add_statement(p[1]) + p[0] = tmp + + # { vector*tmp = new vector(0); # if (p[1]) tmp->push_back(p[1]); # p[0] = tmp; @@ -12057,6 +12961,7 @@ def p_analog_statement_1(p): if(parse_debug): print('analog_statement_1', list(p)) + # { p[0] = pform_contribution_statement(@2, p[1], p[3]); } () @@ -12066,6 +12971,7 @@ def p_task_item_1(p): if(parse_debug): print('task_item_1', list(p)) + # { p[0] = new vector(0); } () @@ -12085,6 +12991,7 @@ def p_task_item_list_1(p): if(parse_debug): print('task_item_list_1', list(p)) + # { vector*tmp = p[1]; # size_t s1 = tmp->size(); # tmp->resize(s1 + p[2]->size()); @@ -12121,6 +13028,7 @@ def p_task_item_list_opt_2(p): if(parse_debug): print('task_item_list_opt_2', list(p)) + # { p[0] = None } () @@ -12140,6 +13048,7 @@ def p_tf_port_list_opt_2(p): if(parse_debug): print('tf_port_list_opt_2', list(p)) + # { p[0] = None } () @@ -12149,6 +13058,7 @@ def p_udp_body_1(p): if(parse_debug): print('udp_body_1', list(p)) + # { lex_end_table(); # p[0] = p[2]; # } @@ -12160,6 +13070,7 @@ def p_udp_body_2(p): if(parse_debug): print('udp_body_2', list(p)) + # { lex_end_table(); # yyerror(@1, "error: Empty UDP table."); # p[0] = None @@ -12172,6 +13083,7 @@ def p_udp_body_3(p): if(parse_debug): print('udp_body_3', list(p)) + # { lex_end_table(); # yyerror(@2, "Errors in UDP table"); # yyerrok; @@ -12203,6 +13115,7 @@ def p_udp_comb_entry_1(p): 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); @@ -12220,6 +13133,7 @@ def p_udp_comb_entry_list_1(p): if(parse_debug): print('udp_comb_entry_list_1', list(p)) + # { list*tmp = new list; # tmp->push_back(p[1]); # delete[]p[1]; @@ -12233,6 +13147,7 @@ def p_udp_comb_entry_list_2(p): if(parse_debug): print('udp_comb_entry_list_2', list(p)) + # { list*tmp = p[1]; # tmp->push_back(p[2]); # delete[]p[2]; @@ -12246,6 +13161,7 @@ def p_udp_sequ_entry_list_1(p): if(parse_debug): print('udp_sequ_entry_list_1', list(p)) + # { list*tmp = new list; # tmp->push_back(p[1]); # delete[]p[1]; @@ -12259,6 +13175,7 @@ def p_udp_sequ_entry_list_2(p): if(parse_debug): print('udp_sequ_entry_list_2', list(p)) + # { list*tmp = p[1]; # tmp->push_back(p[2]); # delete[]p[2]; @@ -12272,6 +13189,7 @@ def p_udp_sequ_entry_1(p): 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); @@ -12290,6 +13208,7 @@ def p_udp_initial_1(p): 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); @@ -12315,6 +13234,7 @@ def p_udp_init_opt_2(p): if(parse_debug): print('udp_init_opt_2', list(p)) + # { p[0] = None } () @@ -12324,6 +13244,7 @@ def p_udp_input_list_1(p): if(parse_debug): print('udp_input_list_1', list(p)) + # { char*tmp = new char[2]; # tmp[0] = p[1]; # tmp[1] = 0; @@ -12337,6 +13258,7 @@ def p_udp_input_list_2(p): 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); @@ -12353,6 +13275,7 @@ def p_udp_input_sym_1(p): if(parse_debug): print('udp_input_sym_1', list(p)) + # { p[0] = '0'; } () @@ -12362,6 +13285,7 @@ def p_udp_input_sym_2(p): if(parse_debug): print('udp_input_sym_2', list(p)) + # { p[0] = '1'; } () @@ -12371,6 +13295,7 @@ def p_udp_input_sym_3(p): if(parse_debug): print('udp_input_sym_3', list(p)) + # { p[0] = 'x'; } () @@ -12380,6 +13305,7 @@ def p_udp_input_sym_4(p): if(parse_debug): print('udp_input_sym_4', list(p)) + # { p[0] = '?'; } () @@ -12389,6 +13315,7 @@ def p_udp_input_sym_5(p): if(parse_debug): print('udp_input_sym_5', list(p)) + # { p[0] = 'b'; } () @@ -12398,6 +13325,7 @@ def p_udp_input_sym_6(p): if(parse_debug): print('udp_input_sym_6', list(p)) + # { p[0] = '*'; } () @@ -12407,6 +13335,7 @@ def p_udp_input_sym_7(p): if(parse_debug): print('udp_input_sym_7', list(p)) + # { p[0] = '%'; } () @@ -12416,6 +13345,7 @@ def p_udp_input_sym_8(p): if(parse_debug): print('udp_input_sym_8', list(p)) + # { p[0] = 'f'; } () @@ -12425,6 +13355,7 @@ def p_udp_input_sym_9(p): if(parse_debug): print('udp_input_sym_9', list(p)) + # { p[0] = 'F'; } () @@ -12434,6 +13365,7 @@ def p_udp_input_sym_10(p): if(parse_debug): print('udp_input_sym_10', list(p)) + # { p[0] = 'l'; } () @@ -12443,6 +13375,7 @@ def p_udp_input_sym_11(p): if(parse_debug): print('udp_input_sym_11', list(p)) + # { p[0] = 'h'; } () @@ -12452,6 +13385,7 @@ def p_udp_input_sym_12(p): if(parse_debug): print('udp_input_sym_12', list(p)) + # { p[0] = 'B'; } () @@ -12461,6 +13395,7 @@ def p_udp_input_sym_13(p): if(parse_debug): print('udp_input_sym_13', list(p)) + # { p[0] = 'r'; } () @@ -12470,6 +13405,7 @@ def p_udp_input_sym_14(p): if(parse_debug): print('udp_input_sym_14', list(p)) + # { p[0] = 'R'; } () @@ -12479,6 +13415,7 @@ def p_udp_input_sym_15(p): if(parse_debug): print('udp_input_sym_15', list(p)) + # { p[0] = 'M'; } () @@ -12488,6 +13425,7 @@ def p_udp_input_sym_16(p): if(parse_debug): print('udp_input_sym_16', list(p)) + # { p[0] = 'n'; } () @@ -12497,6 +13435,7 @@ def p_udp_input_sym_17(p): if(parse_debug): print('udp_input_sym_17', list(p)) + # { p[0] = 'N'; } () @@ -12506,6 +13445,7 @@ def p_udp_input_sym_18(p): if(parse_debug): print('udp_input_sym_18', list(p)) + # { p[0] = 'p'; } () @@ -12515,6 +13455,7 @@ def p_udp_input_sym_19(p): if(parse_debug): print('udp_input_sym_19', list(p)) + # { p[0] = 'P'; } () @@ -12524,6 +13465,7 @@ def p_udp_input_sym_20(p): if(parse_debug): print('udp_input_sym_20', list(p)) + # { p[0] = 'Q'; } () @@ -12533,6 +13475,7 @@ def p_udp_input_sym_21(p): if(parse_debug): print('udp_input_sym_21', list(p)) + # { p[0] = 'q'; } () @@ -12542,6 +13485,7 @@ def p_udp_input_sym_22(p): if(parse_debug): print('udp_input_sym_22', list(p)) + # { p[0] = '_'; } () @@ -12551,6 +13495,7 @@ def p_udp_input_sym_23(p): if(parse_debug): print('udp_input_sym_23', list(p)) + # { p[0] = '+'; } () @@ -12560,6 +13505,7 @@ def p_udp_input_sym_24(p): if(parse_debug): print('udp_input_sym_24', list(p)) + # { yyerror(@1, "internal error: Input digits parse as decimal number!"); p[0] = '0'; } () @@ -12569,6 +13515,7 @@ def p_udp_output_sym_1(p): if(parse_debug): print('udp_output_sym_1', list(p)) + # { p[0] = '0'; } () @@ -12578,6 +13525,7 @@ def p_udp_output_sym_2(p): if(parse_debug): print('udp_output_sym_2', list(p)) + # { p[0] = '1'; } () @@ -12587,6 +13535,7 @@ def p_udp_output_sym_3(p): if(parse_debug): print('udp_output_sym_3', list(p)) + # { p[0] = 'x'; } () @@ -12596,6 +13545,7 @@ def p_udp_output_sym_4(p): if(parse_debug): print('udp_output_sym_4', list(p)) + # { p[0] = '-'; } () @@ -12605,6 +13555,7 @@ def p_udp_output_sym_5(p): if(parse_debug): print('udp_output_sym_5', list(p)) + # { yyerror(@1, "internal error: Output digits parse as decimal number!"); p[0] = '0'; } () @@ -12614,6 +13565,7 @@ def p_udp_port_decl_1(p): if(parse_debug): print('udp_port_decl_1', list(p)) + # { p[0] = pform_make_udp_input_ports(p[2]); } () @@ -12623,6 +13575,7 @@ def p_udp_port_decl_2(p): 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*tmp = new vector(1); @@ -12638,6 +13591,7 @@ def p_udp_port_decl_3(p): 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*tmp = new vector(1); @@ -12653,6 +13607,7 @@ def p_udp_port_decl_4(p): 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*tmp = new vector(1); @@ -12678,6 +13633,7 @@ def p_udp_port_decls_2(p): if(parse_debug): print('udp_port_decls_2', list(p)) + # { vector*tmp = p[1]; # size_t s1 = p[1]->size(); # tmp->resize(s1+p[2]->size()); @@ -12694,6 +13650,7 @@ def p_udp_port_list_1(p): if(parse_debug): print('udp_port_list_1', list(p)) + # { list*tmp = new list; # tmp->push_back(lex_strings.make(p[1])); # delete[]p[1]; @@ -12707,6 +13664,7 @@ def p_udp_port_list_2(p): if(parse_debug): print('udp_port_list_2', list(p)) + # { list*tmp = p[1]; # tmp->push_back(lex_strings.make(p[3])); # delete[]p[3]; @@ -12750,6 +13708,7 @@ def p_udp_initial_expr_opt_2(p): if(parse_debug): print('udp_initial_expr_opt_2', list(p)) + # { p[0] = None } () @@ -12759,6 +13718,7 @@ def p_udp_input_declaration_list_1(p): if(parse_debug): print('udp_input_declaration_list_1', list(p)) + # { list*tmp = new list; # tmp->push_back(lex_strings.make(p[2])); # p[0] = tmp; @@ -12772,6 +13732,7 @@ def p_udp_input_declaration_list_2(p): if(parse_debug): print('udp_input_declaration_list_2', list(p)) + # { list*tmp = p[1]; # tmp->push_back(lex_strings.make(p[4])); # p[0] = tmp; @@ -12785,6 +13746,7 @@ def p_udp_primitive_1(p): 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); @@ -12809,6 +13771,7 @@ def p_udp_primitive_2(p): 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],