📄 oaverilogparser.ypp
字号:
config_inst_clause : YYINSTANCE config_inst_name // See config_declaration callback ; config_inst_name : topmodule_identifier config_instance_identifier_list { deletePos(1); } // See config_declaration callback ; config_instance_identifier_list : /* empty */ | config_instance_identifier_list '.' instance_identifier { deletePos(3); } // See config_declaration callback ; config_cell_clause : YYCELL | YYCELL library_identifier '.' cell_identifier { // See config_declaration callback deletePos(2); deletePos(4); } ; config_liblist_clause : YYLIBLIST '[' config_library_identifier_list ']' // See config_declaration callback ; config_library_identifier_list : /* empty */ | config_library_identifier_list library_identifier { // See config_declaration callback deletePos(2); } ; config_use_clause : YYUSE cell_identifier { deletePos(2); } | YYUSE library_identifier '.' cell_identifier { deletePos(2); deletePos(4); } | YYUSE cell_identifier YYCONFIG { deletePos(2); } | YYUSE library_identifier '.' cell_identifier YYCONFIG { deletePos(2); deletePos(4); } ; /* A.1.3 Module and primitive source text */ source_text : /* empty */ | source_text description ; description : module_declaration | udp_declaration ; module_declaration : attribute_instance_list module_keyword_module_identifier ';' end_module_footer { callback->endModule(); callback->setCurrentDesign(NULL); deletePos(1); } | attribute_instance_list module_keyword_module_identifier ';' module_item module_item_list end_module_footer { callback->endModule(); callback->setCurrentDesign(NULL); deletePos(1); } | attribute_instance_list module_keyword_module_identifier list_of_ports ';' attribute_instance_list end_module_footer { callback->endModule($3); callback->setCurrentDesign(NULL); deletePos(1); deletePos(3); deletePos(5); } | attribute_instance_list module_keyword_module_identifier module_parameter_port_list ';' attribute_instance_list end_module_footer { callback->endModule(); callback->setCurrentDesign(NULL); deletePos(1); deletePos(3); deletePos(5); } | attribute_instance_list module_keyword_module_identifier module_parameter_port_list ';' module_item module_item_list end_module_footer { callback->endModule(); callback->setCurrentDesign(NULL); deletePos(1); } | attribute_instance_list module_keyword_module_identifier list_of_ports ';' module_item module_item_list end_module_footer { callback->endModule($3); callback->setCurrentDesign(NULL); deletePos(1); deletePos(3); } | attribute_instance_list module_keyword_module_identifier module_parameter_port_list list_of_port_declarations ';' module_item_list end_module_footer { ParamList ports; for (NameListIter portIter = $4->begin(); portIter != $4->end(); portIter++) { ports.append(oaParam(**portIter, **portIter)); } callback->endModule(&ports); callback->setCurrentDesign(NULL); deletePos(1); deletePos(4); } | attribute_instance_list module_keyword_module_identifier module_parameter_port_list list_of_ports ';' module_item module_item_list end_module_footer { callback->endModule($4); callback->setCurrentDesign(NULL); deletePos(1); deletePos(4); } | attribute_instance_list module_keyword_module_identifier list_of_port_declarations ';' module_item_list end_module_footer { ParamList ports; for (NameListIter portIter = $3->begin(); portIter != $3->end(); portIter++) { ports.append(oaParam(**portIter, **portIter)); } callback->endModule(&ports); callback->setCurrentDesign(NULL); deletePos(1); deletePos(3); } ; end_module_footer : YYENDMODULE { delete currentMaster; currentMaster = NULL; delete currentParameters; currentParameters = NULL; } module_item_list : /* empty */ | module_item_list module_item ; module_keyword_module_identifier : module_keyword module_identifier { callback->beginModule(*$2); deletePos(2); } ;module_keyword : YYMODULE | YYMACROMODULE // see beginmodule callback ; /* A.1.4 Module parameters and ports */ module_parameter_port_list : YYPOUNDLPAREN YYPARAMETER list_of_param_assignments ')' { callback->paramDeclaration(*$3); deletePos(3); } | YYPOUNDLPAREN parameter_declaration parameter_declaration_list ')' { $2->append(*$3); callback->paramDeclaration(*$2); deletePos(2); deletePos(3); } ; port_list : /* empty */ { $$ = new ParamList; } | port_list ',' port { pushBackParamArray(*$1, *$3); deletePos(3); } // See port_list callback ; list_of_ports : '(' port port_list ')' { // This is where the order of the ports // is established. We should record this // order for later so we can create a // structure that stores the order. pushFrontParamArray(*$2, *$3); callback->portDeclList(*$3); deletePos(2); $$ = $3; } ; port_declaration_list : /* empty */ { $$ = new NameList; } | port_declaration_list port_declaration { $1->splice($1->end(), *$2); $2->clear(); deletePos(2); } ; list_of_port_declarations : '(' ')' { $$ = new NameList; callback->portDeclList(*$$); } | '(' port_declaration port_declaration_list ')' { $2->splice($2->end(), *$3); $3->clear(); callback->portDeclList(*$2); $$ = $2; deletePos(3); } ;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -