Changeset 727


Ignore:
Timestamp:
May 11, 2003, 10:34:44 PM (18 years ago)
Author:
sveta
Message:
  • Correction for new asail-syntax (initialization of INT-var, CONST definition, logic condition !=).
File:
1 edited

Legend:

Unmodified
Added
Removed
  • to-imperative/trunk/compiler/rfp_asail_optim.rf

    r698 r727  
    6969$func Clear-Table s.table e.key = ;
    7070
    71 $func Label-In-Table t.label = (e.maybe-empty);
     71$func Label-In-Table e.label =  e.maybe-empty ;
    7272
    7373ASAIL-Optim  e.asail, e.asail: {
     
    8686          <ASAIL-Optim e.body> :: e.body,
    8787            {
    88               e.res-cond : 1 = e.body;
     88              e.res-cond : 1 = (LABEL () e.body);
    8989              (IF (e.res-cond) e.body);
    9090            };
     
    110110      <Optim-Expr () e.expr> :: e.expr,
    111111      (ASSIGN t.var e.expr);
     112    (INT t.var e.expr) =
     113       <Push> <Optim-Int e.expr> :: e.expr,
     114      (INT t.var e.expr);
    112115    (EXPR t.var e.expr) = <Optim-Ref e.expr> :: e.expr,
    113116      (EXPR t.var e.expr);
    114117    (DEREF t.var e.expr (e.pos)) =
    115       (DEREF t.var <Optim-Ref e.expr >
    116       (<Push> <Optim-Int e.pos>) );
     118      <Optim-Ref e.expr> :: e.expr,
     119      (DEREF t.var e.expr (<Push> <Optim-Int e.pos>));
    117120    (SUBEXPR t.var e.expr (e.pos) (e.len)) =
    118       (SUBEXPR t.var <Optim-Ref e.expr >
    119       (<Push> <Optim-Int e.pos>)
    120       (<Push> <Optim-Int e.len> ) ) ;
     121      <Optim-Ref e.expr> :: e.expr,
     122      (SUBEXPR t.var e.expr
     123        (<Push> <Optim-Int e.pos>)
     124        (<Push> <Optim-Int e.len> ) ) ;
    121125//  RETURN=RETURN;
    122126//  RETFAIL=RETFAIL;
     
    133137//  (CONSTEXPR e1) = (CONSTEXPR e1);
    134138//  (DECL-CONST t.name) = (DECL-CONST t.name);
     139//  (DECL-OBJ e.obj) = (DECL-OBJ e.obj);
    135140//  (DECL-FUNC e1) = (DECL-FUNC e1);
    136141//  (s.call t.name (e.exprs) (e.ress)) = (s.call t.name (e.exprs)(e.ress));
     
    206211Optim-Int-Args  {
    207212  /*empty*/ = /*empty*/;
     213  (s.int) e.rest = (s.int) <Optim-Int-Args e.rest>;
    208214  (e.arg) e.rest = <Push>,
    209215    <Optim-Int e.arg> :: e.res,
     
    365371    };
    366372  e.cond1  0 e.cond2 = 0;
    367   e.cond1  1  e.cond2 = <Optim-Cond (e.init) e.cond1 e.cond2 >;
     373  e.cond1 (0) e.cond2 = 0;
     374  e.cond1  1  e.cond2 = <Optim-Cond (e.init) e.cond1 e.cond2 >;
    368375  t.cond-term e.rest = t.cond-term : {
    369376    (CALL e.call) = <Optim-Cond (e.init (CALL e.call)) e.rest>;
     
    404411        <Optim-Cond () e.args> :: e.args,
    405412          <Optim-Cond-Log s.op e.args>;
    406       s.op : \{ "<"; ">"; "<="; ">="; "=="; } =
     413      s.op : \{ "<"; ">"; "<="; ">="; "=="; "!="; } =
    407414        <Optim-Int-Args e.args> :: e.args,
    408415          <Optim-Cond-Int s.op e.args>;
    409416      };
    410     };
     417     (s.int) = ;
     418     (e.expr-int) = (<Push> <Optim-Int e.expr-int>);     
     419   };
    411420};
    412421
     
    452461      0;
    453462      };
     463    "!=" = {
     464      <"/=" (s.1) (s.2) > = 1;
     465      0;
     466      };
    454467    "<" = {
    455468      <"<" (s.1) (s.2)> = 1;
     
    481494  e.args : (e.arg1)(e.arg1) = s.op:{
    482495    "==" = 1;
     496    "!=" = 0;
    483497    "<=" = 1;
    484498    ">=" = 1;
     
    536550      <Correct-Label e.body> :: e.body,
    537551      (IF (e.cond) e.body);
    538     (FOR (t.label) (e.cond) t.step e.body) =
    539       <Label-In-Table t.label> :: (e.maybe-empty),
     552    (FOR (e.label) (e.cond) t.step e.body) =
     553      <Label-In-Table e.label> :: e.maybe-empty,
    540554      <Correct-Label e.body> :: e.body,                                                                 
    541555      (FOR (e.maybe-empty) (e.cond) t.step e.body);
    542     (LABEL (t.label) e.body) =
    543       <Label-In-Table t.label> :: (e.maybe-empty),
     556    (LABEL (e.label) e.body) =
     557      <Label-In-Table e.label> :: e.maybe-empty,
    544558      <Correct-Label e.body> :: e.body,
    545559      (LABEL (e.maybe-empty) e.body) ;
     
    553567};
    554568
    555 Label-In-Table t.label = {
    556   <In-Table? &Used-Label  t.label> = (t.label);
    557    ();
    558 };
     569Label-In-Table {
     570  /*empty*/ = ;
     571  t.label = {
     572    <In-Table? &Used-Label  t.label> = t.label; ;
     573  };
     574};
Note: See TracChangeset for help on using the changeset viewer.