⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 syst_grammar.y

📁 c到DHL的转换工具
💻 Y
📖 第 1 页 / 共 2 页
字号:
  | exp '.' RVALID '(' ')'                                                { if(setjmp(Env) != 0)                                               ERR("invalid")                                     else {                                         $$ = (~(*$1) == FALSE);                                     }                                     resetjmp();                                }      | IVALID '(' exp ')'                                                { if(setjmp(Env) != 0)                                               ERR("invalid")                                     else {                                         $$ = is_valid_int($3);                                     }                                     resetjmp();                                }      | exp '.' IVALID '(' ')'                                                { if(setjmp(Env) != 0)                                               ERR("invalid")                                     else {                                         $$ = is_valid_int($1);                                     }                                     resetjmp();                                }      | CONTAINED '(' exp exp ')'  {                                   if(setjmp(Env) != 0)                                        ERR("cannot perform is contained")                                   else {                                       $$ = is_contained($3, $4);                                   }                                     resetjmp();                               }    ; exp: INEQ                        { $$ = $1;                            }  | QVAR                          { if(setjmp(Env) != 0)                                               ERR("cannot find")                                    else {                                        $$ = $1->get_sc();                                                }                                    resetjmp();                                }  | QVAR '=' exp                  { $$ = $3;                                    if(setjmp(Env) != 0)                                               ERR("cannot set")                                    else {                                        $1->set($3);                                    }                                    resetjmp();                                }  | LVAR '=' exp                  { $$ = $3;                                    if(setjmp(Env) != 0)                                               ERR("cannot set")                                    else {                                        $1->set($3);                                    }                                }  | '[' ineqlist ']'              {                                   if(setjmp(Env) != 0)                                               ERR("cannot create inequality")                                    else {                                        $$ = mk_sc($2);                                    }                                   resetjmp();                               }  | ORDER '(' exp varlist ')'     {                                   if(setjmp(Env) != 0)                                               ERR("cannot order inequality")                                   else {                                       $$ = order($3, $4);                                   }                                   resetjmp();                               }   | exp '.' ORDER '(' varlist ')' {                                   if(setjmp(Env) != 0)                                               ERR("cannot order inequality")                                    else {                                        $$ = order($1, $5);                                  }                                   resetjmp();                               }  | RENAME '(' exp varlist ')'     {                                   if(setjmp(Env) != 0)                                               ERR("cannot rename inequality")                                   else {                                       $$ = rename($3, $4);                                   }                                   resetjmp();                               }   | exp '.' RENAME '(' varlist ')' {                                   if(setjmp(Env) != 0)                                               ERR("cannot rename inequality")                                    else {                                        $$ = rename($1, $5);                                    }                                   resetjmp();                               }  | PROJECT '(' exp ')'     {                                   if(setjmp(Env) != 0)                                               ERR("cannot project inequality")                                   else {                                       $$ = project($3, NULL);                                   }                                   resetjmp();                               }  | exp '.' PROJECT '(' ')' {                                   if(setjmp(Env) != 0)                                               ERR("cannot project inequality")                                    else {                                        $$ = project($1, NULL);                                  }                                   resetjmp();                               }  | PROJECT '(' exp LVAR ')'  {                                   if(setjmp(Env) != 0)                                               ERR("cannot project inequality")                                   else {                                       $$ = project($3, $4->nm());                                   }                                   resetjmp();                               }  | exp '.' PROJECT '(' LVAR ')' {                                   if(setjmp(Env) != 0)                                               ERR("cannot project inequality")                                    else {                                        $$ = project($1, $5->nm());                                  }                                   resetjmp();                               }  | SIMPLIFY '(' exp ')'     {                                   if(setjmp(Env) != 0)                                               ERR("cannot simplify inequality")                                   else {                                       $$ = simplify($3, NULL);                                   }                                   resetjmp();                               }  | exp '.' SIMPLIFY '(' ')' {                                   if(setjmp(Env) != 0)                                               ERR("cannot simplify inequality")                                    else {                                        $$ = simplify($1, NULL);                                  }                                   resetjmp();                               }  | SIMPLIFY '(' exp LVAR ')'  {                                   if(setjmp(Env) != 0)                                               ERR("cannot simplify inequality")                                   else {                                       $$ = simplify($3, $4->nm());                                   }                                   resetjmp();                               }  | exp '.' SIMPLIFY '(' LVAR ')' {                                   if(setjmp(Env) != 0)                                               ERR("cannot simplify inequality")                                    else {                                        $$ = simplify($1, $5->nm());                                  }                                   resetjmp();                               }  | '{' compose '}'               { $$ = $2;                            }; compose: exp                     { $$ = $1;                            }  | compose '\n' exp              {                                   if(setjmp(Env) != 0)                                               ERR("cannot compose multiple")                                    else {                                        $$ = named_symcoeff_ineq::and_($1, $3,                                                                     TRUE,                                                                     TRUE);                                    }                                   resetjmp();                               }  | compose ',' exp              {                                   if(setjmp(Env) != 0)                                               ERR("cannot compose multiple")                                    else {                                        $$ = named_symcoeff_ineq::and_($1, $3,                                                                     TRUE,                                                                     TRUE);                                    }                                   resetjmp();                               }; ineqlist: ineq1                  {                                     if(setjmp(Env) != 0)                                               ERR("cannot create coif")                                    else {                                        $$ = $1;                                    }                                   resetjmp();                               }  | ineq1 '\n'                    {                                     if(setjmp(Env) != 0)                                               ERR("cannot create coif")                                    else {                                        $$ = $1;                                    }                                   resetjmp();                               }  | ineq1 '\n' ineqlist           {                                   if(setjmp(Env) != 0)                                               ERR("cannot create coif")                                    else {                                        $3->append($1);                                        $$ = $3;                                    }                                   resetjmp();                               }; ineq1: coifn '>' '=' coifn           { DOCOIF1($$, $1, 0, $4);            }  | coifn '<' '=' coifn               { DOCOIF1($$, $4, 0, $1);            }  | coifn '>' coifn                   { DOCOIF1($$, $1, 1, $3);            }  | coifn '<' coifn                   { DOCOIF1($$, $3, 1, $1);            }  | coifn '>' '=' coifn '>' '=' coifn { DOCOIF2($$, $1, 0, $4, 0, $7);     }  | coifn '>' '=' coifn '>' coifn     { DOCOIF2($$, $1, 0, $4, 1, $6);     }  | coifn '>' coifn '>' '=' coifn     { DOCOIF2($$, $1, 1, $3, 0, $6);     }  | coifn '>' coifn '>' coifn         { DOCOIF2($$, $1, 1, $3, 1, $5);     }  | coifn '<' '=' coifn '<' '=' coifn { DOCOIF2($$, $7, 0, $4, 0, $1);     }  | coifn '<' '=' coifn '<' coifn     { DOCOIF2($$, $6, 1, $4, 0, $1);     }  | coifn '<' coifn '<' '=' coifn     { DOCOIF2($$, $6, 0, $3, 1, $1);     }  | coifn '<' coifn '<' coifn         { DOCOIF2($$, $5, 1, $3, 1, $1);     }  | coifn '=' '=' coifn %prec LEFTEQ  { DOCOIF3($$, $1, $4);               }   | coifn '=' coifn %prec LEFTEQ      { DOCOIF3($$, $1, $3);               } ;                                         coifn: coif1                     { $$ = $1;                              } | coifn '+' coif1                {                                    if(setjmp(Env) != 0)                                               ERR("cannot create coif")                                    else {                                        triplet & c1 = *$1;                                        triplet & c2 = *$3;                                        $$ = concat(&c1, &c2);                                    }                                   resetjmp();                               } | coifn '-' coif1               {                                    if(setjmp(Env) != 0)                                               ERR("cannot create coif")                                    else {                                        triplet & c1 = *$1;                                        triplet & c2 = *$3;                                        c2 *= -1;                                        $$ = concat(&c1, &c2);                                    }                                   resetjmp();                               }; coif1: snum                      { $$ = new triplet($1);                 } | snum '*' LVAR                  { $$ = new triplet($3->nm(), $1);       } | LVAR                           { $$ = new triplet($1->nm(),  1);       } | '-' LVAR                       { $$ = new triplet($2->nm(), -1);       }  | snum '*' LVAR '*' LVAR         { $$ = new triplet($5->nm(), $1, $3->nm()); } | LVAR '*' LVAR                  { $$ = new triplet($3->nm(),  1, $1->nm()); } | '-' LVAR '*' LVAR              { $$ = new triplet($4->nm(), -1, $2->nm()); } ; varlist: LVAR                    {                                    if(setjmp(Env) != 0)                                               ERR("cannot create coif")                                    else {                                        $$ = new triplet($1->nm());                                               }                                   resetjmp();                               }  | LVAR varlist                  {                                    if(setjmp(Env) != 0)                                              ERR("cannot create coif")                                   else {                                       triplet * c1 = new triplet($1->nm());                                       triplet * c2 = $2;                                       $$ = concat(c1, c2);                                   }                                   resetjmp();                               }; mergelist: exp                 {  if(setjmp(Env) != 0)                                              ERR("cannot merge")                                   else {                                       named_symcoeff_ineq_list * scl;                                       scl = new named_symcoeff_ineq_list;                                       scl->append($1);                                       $$ = scl;                                   }                                   resetjmp();                               } | mergelist exp                 {  if(setjmp(Env) != 0)                                              ERR("cannot merge")                                   else {                                       named_symcoeff_ineq_list * scl;                                       scl = $1;                                       scl->append($2);                                       $$ = scl;                                   }                                    resetjmp();                               };                                                                               /* End of grammar */     %%     

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -