Changeset 2488


Ignore:
Timestamp:
Feb 27, 2007, 9:34:33 PM (14 years ago)
Author:
orlov
Message:
  • ASAIL simplifications: no INT, no EXPR, int-vars contain type-tag INT.
Location:
to-imperative/trunk/compiler
Files:
7 edited

Legend:

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

    r2455 r2488  
    3434    };
    3535    (IF t.cond e.body) = (IF t.cond <Simplify e.body>);
    36     (INT t.var e.expr) = (INT t.var <Simplify-Arithm (e.expr)>);
     36    (ASSIGN (INT t.var) e.expr) = (ASSIGN (INT t.var) <Simplify-Arithm (e.expr)>);
    3737    (e1) = (<Simplify e1>);
    3838    s1   = s1;
     
    137137      <Process-Var (e.decls) (e.subst) s.type t.var> :: e.d (e.decls) (e.subst),
    138138      e.d <Remove-Dupl-Decl (e.decls) (e.subst) e.rest>;
    139     t1 : (EXPR t.var e.expr) =
    140       <Process-Var (e.decls) (e.subst) Expr t.var> :: e.d (e.decls2) (e.subst2),
    141       {
    142         e.d : (DECL s t.new-var) =
    143           (EXPR t.new-var <Remove-Dupl-Decl (e.decls) (e.subst) e.expr>)
    144           <Remove-Dupl-Decl (e.decls2) (e.subst2) e.rest>;
    145         (ASSIGN t.var <Remove-Dupl-Decl (e.decls) (e.subst) e.expr>)
    146         <Remove-Dupl-Decl (e.decls2) (e.subst2) e.rest>;
    147       };
    148139    t1 : (s.split expr (e.len) t.var1 t.var2), s.split : \{ LSPLIT; RSPLIT; } =
    149140      <Remove-Dupl-Decl (e.decls) (e.subst) expr (e.len)> :: expr,
  • to-imperative/trunk/compiler/rfp_asail_cpp.rf

    r2474 r2488  
    3838$func Namespace-Control e.qualifiers = e.namespace-control;
    3939
    40 $func Expr-To-CPP (e.ASAIL-Expr-init) e.ASAIL-Expr-rest = e.ASAIL-Expr;
    41 
    4240$func Expr-Ref-To-CPP e.ASAIL-Expr-Ref = e.CPP-Expr-Ref;
    4341
     
    5149
    5250$func Symbol-To-CPP s.RFP-Symbol = e.CPP-String;
     51
     52$func QName-To-Cpp e.name = e.cpp-name;
    5353
    5454$func Name-To-CPP s.decl-type t.name = e.CPP-Name;
     
    125125      s.tag : \{ FUNC; FUNC?; },
    126126      <Store &Current-Func t.name>,
    127       { <? &Entry> : e t.name e = <Store &Entry-Name <Rfp2Cpp t.name>>;; },
     127      { <? &Entry> : e t.name e = <Store &Entry-Name <QName-To-Cpp <Concat t.name>>>;; },
    128128      {
    129129        \{
     
    188188      ('RF_rsplit (' <Expr-Ref-To-CPP e.expr> ', ' <Expr-Int-To-CPP e.min> ', '
    189189      <Rfp2Cpp t.var1> ', ' <Rfp2Cpp t.var2 > ');');
     190    (ASSIGN t.var e.expr), t.var : (INT e)  =
     191      (<Rfp2Cpp t.var> ' = ' <Expr-Int-To-CPP e.expr> ';');
    190192    (ASSIGN t.var e.expr) =
    191       (<Rfp2Cpp t.var> ' = ' <Expr-To-CPP () e.expr> ';');
     193      (<Rfp2Cpp t.var> ' = ' <Expr-Ref-To-CPP e.expr> ';');
     194    (DECL t.var), t.var : (INT e)  =
     195      ('int ' <Rfp2Cpp t.var> ';');
    192196    (DECL s.type t.var) =
    193197      ('Expr ' <Rfp2Cpp t.var> ';');
    194     (INT  t.var e.expr) =
    195       ('uintptr_t ' <Rfp2Cpp t.var> ' = ' <Expr-Int-To-CPP e.expr> ';');
    196     (EXPR t.var e.expr) =
    197       ('Expr ' <Rfp2Cpp t.var> ' (' <Expr-Ref-To-CPP e.expr> ');');
    198198    (DROP t.var) =
    199199      (<Rfp2Cpp t.var> '.drop ();');
     
    209209        (CONSTEXPR LOCAL (<To-Word <Intersperse ('_') e.n>>) () e.expr)>;
    210210    (CONSTEXPR s.linkage t.name (e.comment) e.expr) =
     211      { s.linkage : LOCAL = 'static ';; } :: e.linkage,
     212      {
     213        t.name : (STATIC e) = (<? &Module-Name>) t.name (t.name);
     214        <Extract-Qualifiers t.name> t.name;
     215      } :: (e.qualifiers) e.n t.name,
    211216      <Bind &Locals (DECL-OBJ t.name) ()>,
    212       { s.linkage : LOCAL = 'static ';; } :: e.linkage,
    213       {
    214         t.name : (STATIC e) = (<? &Module-Name>) t.name;
    215         <Extract-Qualifiers t.name>;
    216       } :: (e.qualifiers) e.n,
    217217      <Put &Const-Exprs (t.name (<Const-Expr-To-CPP e.expr>))>,
    218218      <Namespace-Control e.qualifiers>
     
    272272};
    273273
    274 /*
    275  * Determine type of e.expr - int or Refal.
    276  */
    277 Expr-To-CPP  (e.init) e.expr-all, e.expr-all : {
    278   /*empty*/ = <Expr-Ref-To-CPP e.init>;
    279 //  s.ObjectSymbol e.rest, {
    280 //    <Int? s.ObjectSymbol> = <Expr-Int-To-CPP e.init e.expr-all>;
    281 //    <Expr-Ref-To-CPP e.expr-all>;
    282 //  };   
    283   (PAREN e.expr) e.rest = <Expr-Ref-To-CPP e.init e.expr-all>;
    284   (EXPR e.expr) e.rest = <Expr-Ref-To-CPP e.init e.expr-all>;
    285   (DEREF e.expr) e.rest = <Expr-Ref-To-CPP e.init e.expr-all>;
    286   (SUBEXPR e.expr) e.rest = <Expr-Ref-To-CPP e.init e.expr-all>;
    287   (LENGTH e.expr) e.rest = <Expr-Int-To-CPP e.init e.expr-all> ;
    288   (MAX e.args) e.rest = <Expr-Int-To-CPP e.init e.expr-all>;         
    289   (MIN e.args) e.rest = <Expr-Int-To-CPP e.init e.expr-all>;
    290   (INFIX s.op e.args) e.rest = <Expr-Int-To-CPP e.init e.expr-all>;
    291   (s.var-tag (e.QualifiedName)) e.rest =
    292     <Expr-To-CPP (e.init (s.var-tag (e.QualifiedName))) e.rest>;
    293 };
    294 
    295274
    296275$func Term-Ref-To-CPP e = e;
     
    305284  (PAREN e.expr) =
    306285    <Expr-Ref-To-CPP e.expr> ' ()';
    307   (EXPR e.expr) =
    308     'Expr (' <Expr-Ref-To-CPP e.expr> ')';
    309286  (DEREF e.expr (e.pos)) =
    310287    'Expr (' <Expr-Ref-To-CPP e.expr> ', ' <Expr-Int-To-CPP e.pos> ')';
     
    491468    e.name : "org" "refal" "plus" "wrappers" e.cont =
    492469      <Bind &Used-Unavailable-Imports (<Lookup &Unavailable-Imports e.name>) ()>,
    493       <Rfp2Cpp <? &Module-Name> <To-Word <Intersperse ('_') e.cont>>>;
     470      <QName-To-Cpp <? &Module-Name> <To-Word <Intersperse ('_') e.cont>>>;
    494471    e.name : "refal" "plus" e.cont =
    495472      <Bind &Decls (s.decl-type ("refal" e.cont)) ()>,
    496       <Rfp2Cpp "refal" e.cont>;
     473      <QName-To-Cpp "refal" e.cont>;
    497474    <? &Current-Namespace> :: e.namespace,
    498475      <Bind &Decls (s.decl-type (e.name)) ()>,
    499476      {
    500477        e.name : e.namespace e.cont =
    501           <Rfp2Cpp e.cont>;
    502         <Rfp2Cpp (e.name)>;
     478          <QName-To-Cpp e.cont>;
     479        <QName-To-Cpp e.name>;
    503480      };
    504481  };
     482
     483QName-To-Cpp e.name = <Concat <Intersperse ('::') <Map! &Rfp2Cpp (<Paren e.name>)>>>;
    505484
    506485Open-Namespace e.name = ('namespace ' <Rfp2Cpp e.name> ' {');
  • to-imperative/trunk/compiler/rfp_asail_java.rf

    r2474 r2488  
    2424
    2525$func ASAIL-To-Java e.body = e.java-code;
    26 
    27 $func Expr-To-Java (e.ASAIL-Expr-init ) e.ASAIL-Expr-rest = e.aux-arrays (e.java-expr);
    2826
    2927$func Expr-Ref-To-Java e.ASAIL-Expr-Ref = e.aux-arrays (e.JAVA-Expr-Ref);
     
    210208      e.a <? s.acc>
    211209      ('Expr.SplitIterator 'e.new-var' = 'e.n'.rightSplit('e.min');');
     210    (DECL (INT t.var)) = ('int '<Rfp2Java t.var>';');
     211    (ASSIGN (INT t.var) e.expr) =
     212      <Box> :: s.acc,
     213      <Expr-Int-To-Java s.acc e.expr> :: e.expr,
     214      <? s.acc> (<Rfp2Java t.var>' = 'e.expr';');
    212215    (ASSIGN t.var e.expr) =
    213       <Expr-To-Java () e.expr> :: e.a (e.j-expr),
     216      <Expr-Ref-To-Java e.expr> :: e.a (e.j-expr),
    214217      {
    215218        <? &Ress> : e t.var e =
     
    227230          ('Expr 'e.j-var' = Expr.empty;');
    228231      };
    229     (INT t.var e.expr) =
    230       <Box> :: s.acc,
    231       <Expr-Int-To-Java s.acc e.expr> :: e.expr,
    232       <? s.acc> ('int '<Rfp2Java t.var>' = 'e.expr';');
    233     (EXPR t.var e.expr) =
    234       <Unbind &Result t.var>,
    235       <Expr-Ref-To-Java e.expr> :: e.a (e.j-expr),
    236       e.a ('Expr '<Rfp2Java t.var>' = 'e.j-expr';');
    237232    (DROP t.var) =
    238233      (<Var-To-Java t.var>'.drop ();');
     
    291286};
    292287
    293 /*
    294  * Determine type of e.expr - int or Refal.
    295  */
    296 Expr-To-Java (e.init) e.expr-all, e.expr-all : {
    297   /*empty*/ = <Expr-Ref-To-Java e.init>;
    298   (PAREN e.expr) e.rest = <Expr-Ref-To-Java e.init e.expr-all>;
    299   (EXPR e.expr) e.rest = <Expr-Ref-To-Java e.init e.expr-all>;
    300   (DEREF e.expr) e.rest = <Expr-Ref-To-Java e.init e.expr-all>;
    301   (SUBEXPR e.expr) e.rest = <Expr-Ref-To-Java e.init e.expr-all>;
    302   (LENGTH e.expr) e.rest = (<Expr-Int-To-Java XXX e.init e.expr-all>);
    303   (MAX e.args) e.rest = (<Expr-Int-To-Java XXX e.init e.expr-all>);
    304   (MIN e.args) e.rest = (<Expr-Int-To-Java XXX e.init e.expr-all>);
    305   (INFIX s.op e.args) e.rest = (<Expr-Int-To-Java XXX e.init e.expr-all>);
    306   (s.var-tag (e.QualifiedName)) e.rest =
    307     <Expr-To-Java (e.init (s.var-tag (e.QualifiedName))) e.rest>;
    308 };
    309288
    310289$func Term-Ref-To-Java s.acc term = e.term;
     
    372351    '(' <Infix-To-Java s.acc &Expr-Int-To-Java s.op e.args> ')';
    373352//  (REF t.name) = <Name-To-Java t.name>;
    374   (s.var-tag t.name) = <Rfp2Java (s.var-tag t.name)>;
     353  (INT t.var) = <Rfp2Java t.var>;
    375354  expr = '(' <Infix-To-Java s.acc &Expr-Int-To-Java "+" <Paren expr>> ')';
    376355};
  • to-imperative/trunk/compiler/rfp_asail_jbc.rf

    r2474 r2488  
    329329ASAIL-To-JBC {
    330330  e t.item e, /*<WriteLN> <WriteLN t.item>*/ t.item : {
     331    (DECL (INT t.var)) =
     332      <Bind-Var Int t.var> :: s;
    331333    (DECL s.type t.var) =
    332334      <Bind-Var s.type t.var> :: s.i,
     
    341343          <MVvisitVarInsn <MV> &ASTORE s.i>;
    342344      };
     345    (ASSIGN (INT t.var) e.expr) =
     346      <Lookup-Var t.var> :: s s.i,
     347      <Expr-Int-To-JBC e.expr>,
     348      <MVvisitVarInsn <MV> &ISTORE s.i>;
    343349    (ASSIGN t.var e.expr) =
    344350      <Lookup-Var t.var> :: s.type s.i,
     
    352358          <MVvisitVarInsn <MV> &ASTORE s.i>;
    353359      };
    354     (INT t.var e.expr) =
    355       <Bind-Var Int t.var> :: s.i,
    356       <Expr-Int-To-JBC e.expr>,
    357       <MVvisitVarInsn <MV> &ISTORE s.i>;
    358     (EXPR t.var e.expr) =
    359       <Bind-Var Expr t.var> :: s.i,
    360       <Expr-Ref-To-JBC e.expr>,
    361       <MVvisitVarInsn <MV> &ASTORE s.i>;
    362360    (IF-INT-CMP s.op (e.arg1) (e.arg2) e.body) =
    363361      <Push-Block-Table>,
     
    588586  (INFIX s.op e.args) =
    589587    <Infix-To-JBC &Expr-Int-To-JBC s.op e.args>;
    590   t.term, t.term : (s.var-tag e) = <Var-To-JBC t.term>;
     588  (INT t.var) = <Var-To-JBC t.var>;
    591589  e.expr = <Infix-To-JBC &Expr-Int-To-JBC "+" <Paren e.expr>>;
    592590};
  • to-imperative/trunk/compiler/rfp_clashes.rf

    r2455 r2488  
    280280    <Set-Var (Instantiated? True) t.var>,
    281281    <Vars-Decl Expr t.var> : e, // ???
    282     t.var <Define-Vars <Vars e.Re>> (EXPR <Vars-Print t.var> e.Re);
     282    t.var <Define-Vars <Vars e.Re>> (DECL Expr <Vars-Print t.var>) (ASSIGN <Vars-Print t.var> e.Re);
    283283};
    284284
  • to-imperative/trunk/compiler/rfp_compile.rf

    r2474 r2488  
    6464
    6565$func Comp-Func s.linkage s.tag t.name e.params-and-body = e.compiled-func;
    66 
    67 $func Set-Drops (e.declared-exprs) e.comp-func = (e.declared-exprs) e.result-func;
    6866
    6967$func Comp-Sentence e.Sentence = e.asail-sentence;
     
    202200    <Comp-Sentence Tail (e.fails) (e.arg) e.Sentence>
    203201  ) :: e.comp-func,
    204 *       <Set-Drops () <Gener-Var-Names e.comp-func>> :: t e.comp-func,
    205202  <Gener-Var-Names e.comp-func> :: e.comp-func,
    206203//!     <Post-Comp (e.res-vars) e.comp-func> :: t e.result,
     
    214211//  e.vars : /*empty*/,
    215212//  (e.func-decl e.var-decls e.func-body);
    216 
    217 Set-Drops (e.declared) e.comp-func =
    218   e.comp-func () (e.declared) $iter {
    219     e.comp-func : t.first e.rest, {
    220       t.first : \{
    221         (EXPR t.var e) = (DROP t.var) (t.first) t.var Init;
    222         (DEREF t.var e) = (DROP t.var) (t.first) t.var Init;
    223         (SUBEXPR t.var e) = (DROP t.var) (t.first) t.var Init;
    224         (DECL Expr t.var) = (DROP t.var) () t.var Decl;
    225         (DECL "int" t.var) = /*empty*/ () t.var Decl;
    226       } :: e.drop (e.constr) t.var s.init,
    227         {
    228           e.declared : e1 t.var s.old-init e2, s.old-init : {
    229             Init, {
    230               t.var : (VAR ("const" e)) =
    231                 e.rest (e.result-func) (e.declared);
    232               e.rest (e.result-func e.drop e.constr) (e.declared);
    233             };
    234             Decl, s.init : {
    235               Decl =
    236                 e.rest (e.result-func) (e.declared);
    237               Init =
    238                 t.first : (s.method t.var e.args),
    239                 e.rest (e.result-func (ASSIGN t.var (s.method e.args)))
    240                 (e1 e2 t.var s.init);
    241                 /*
    242                  * FIXME: if s.method is EXPR, it shouldn't be written.
    243                  */
    244             };
    245           };
    246           e.rest (e.result-func t.first) (e.declared t.var s.init);
    247         };
    248       t.first : (LABEL (t.label) e.expr) =
    249         <Set-Drops (e.declared) e.expr> :: (e.declared) e.expr,
    250         e.rest (e.result-func (LABEL (t.label) e.expr)) (e.declared);
    251       t.first : (e.expr) =
    252         <Set-Drops (e.declared) e.expr> :: t e.expr,
    253         e.rest (e.result-func (e.expr)) (e.declared);
    254       t.first : s.symbol =
    255         e.rest (e.result-func s.symbol) (e.declared);
    256     };
    257   } :: e.comp-func (e.result-func) (e.declared),
    258   e.comp-func : /*empty*/ =
    259   (e.declared) e.result-func;
    260 
    261213
    262214Comp-Sentence s.tail? (v.fails) (e.last-Re) e.Sentence, e.Sentence : {
     
    791743      <Gener-Var-Assign t.var e.Re> ();
    792744    <Get-Var Decl t.var> : s = (ASSIGN <Vars-Print t.var> e.Re) (<Vars e.Re>);
    793     <Vars-Decl Expr t.var> : e, (EXPR <Vars-Print t.var> e.Re) (<Vars e.Re>);
     745    <Vars-Decl Expr t.var> : e =
     746      (DECL Expr <Vars-Print t.var>) (ASSIGN <Vars-Print t.var> e.Re) (<Vars e.Re>);
    794747  };
    795748
     
    13281281          <Vars-Decl Expr t.Pt> : e,
    13291282            e.cond <CC-Eqs (e.fail) (e.assigns
    1330               (EXPR t.Pt (SUBEXPR e.Re (e.pos) (e.len)))) e.rest>;
     1283              (DECL Expr t.Pt) (ASSIGN t.Pt (SUBEXPR e.Re (e.pos) (e.len)))) e.rest>;
    13311284        };
    13321285    };
  • to-imperative/trunk/compiler/rfp_vars.rf

    r2455 r2488  
    208208  (VAR <Box 1 e.prefix t.var>);
    209209} :: t.int-var =
    210   t.int-var (INT t.int-var e.expr);
     210  (INT t.int-var) (DECL (INT t.int-var)) (ASSIGN (INT t.int-var) e.expr);
    211211
    212212
Note: See TracChangeset for help on using the changeset viewer.