📄 grammar
字号:
Translation grammar in YACC formattrad : rem entity rem architecture remrem : /* Empty */ | remlistremlist : REM | REM remlistentity : ENTITY NAME IS PORT '(' rem portlist ')' ';' rem END NAME ';'portlist : s_list ':' dir type rem | s_list ':' dir type ';' rem portlistdir : IN | OUTtype : BIT | BITVECT '('vec_range ')' {$$=$3;} | NAME vec_range : NATURAL updown NATURAL | NATURALupdown : DOWNTO | TOarchitecture : ARCHITECTURE NAME OF NAME IS rem a_decl BEGN doindent a_body END NAME ';' unindent doindent : /* Empty */unindent : /* Empty */a_decl : /* Empty */ | a_decl SIGNAL s_list ':' type ';' rem | a_decl CONSTANT NAME ':' type ':' '=' STRING ';' rem | a_decl TYPE NAME IS '(' s_list ')' ';' rem | a_decl COMPONENT NAME PORT nolist '(' rem portlist ')' ';' rem END COMPONENT ';' yeslist rem nolist : /*Empty*/yeslist : /*Empty*/s_list : NAME | NAME ',' s_lista_body : rem | rem signal '<' '=' sigvalue doothers a_body | rem WITH expr SELECT rem yeswith signal '<' '=' with_list doothers a_body | rem NAME ':' NAME PORT MAP '(' doindent map_list ')' ';' unindent a_body | optname PROCESS '(' sign_list ')' p_decl BEGN doindent p_body END PROCESS oname ';' unindent a_body | optname PROCESS '(' sign_list ')' p_decl BEGN doindent rem IF edge THEN p_body END IF ';' END PROCESS oname ';' unindent a_body | optname PROCESS '(' sign_list ')' p_decl BEGN doindent rem IF exprc THEN doindent p_body unindent ELSIF edge THEN doindent p_body unindent END IF ';' END PROCESS oname ';' unindent a_bodyoname : /*Empty*/ | NAME optname : rem | rem NAME ':'edge : NAME '\'' EVENT AND exprc | exprc AND NAME '\'' EVENT | POSEDGE '(' NAME ')' | NEGEDGE '(' NAME ')'yeswith : /*Empty*/doothers : /*Empty*/with_list : with_item ';' | with_item ',' rem with_list | expr delay WHEN OTHERS ';'with_item : expr delay WHEN wlistp_decl : rem | rem VARIABLE s_list ':' type ';' p_declp_body : rem | rem signal ':' '=' expr ';' doothers p_body | rem signal '<' '=' sigvalue doothers p_body | rem IF exprc THEN doindent p_body unindent elsepart END IF ';' p_body | rem CASE signal IS rem cases END CASE ';' p_body | rem NULLV ';' p_bodyelsepart : /*Empty*/ | ELSIF exprc THEN doindent p_body unindent elsepart | ELSE doindent p_body unindentcases : WHEN wlist '=' '>' doindent p_body unindent cases | WHEN OTHERS '=' '>' doindent p_body unindentwlist : wvalue | wlist '|' wvaluewvalue : STRING | NAMEsign_list : signal | signal ',' sign_listsigvalue : expr delay ';' | expr delay WHEN exprc ';' | expr delay WHEN exprc ELSE nodelay sigvaluenodelay : /* empty */delay : /* empty */ | AFTER NATURAL UNITmap_list : rem map_item | rem map_item ',' map_listmap_item : signal | NAME '=' '>' signalsignal : NAME | NAME '('vec_range ')'expr : signal | STRING | '(' OTHERS '=' '>' STRING ')' | expr '&' expr | '-' expr %prec UMINUS | '+' expr %prec UPLUS | expr '+' expr | expr '-' expr | expr '*' expr | expr '/' expr | NOT expr | expr AND expr | expr OR expr | expr XOR expr | '(' expr ')'exprc : conf | '(' exprc ')' | exprc AND exprc %prec ANDL | exprc OR exprc %prec ORL | NOT exprc %prec NOTLconf : expr '=' expr %prec EQUAL | expr '>' expr | expr '>' '=' expr %prec BIGEQ | expr '<' expr | expr '<' '=' expr %prec LESSEQ | expr '/' '=' expr %prec NOTEQ
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -