Changeset 3911 for to-imperative


Ignore:
Timestamp:
Sep 12, 2008, 4:59:42 PM (12 years ago)
Author:
orlov
Message:
  • Constants initialization.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • to-imperative/trunk/compiler/refal/org/refal/plus/compiler/rfp_asail_tpp.rf

    r3877 r3911  
    108108                  } :: e.name,
    109109                  (e.init_consts
    110                     ('std::istringstream is'e.name'("('e.value')");')
    111                     ('is'e.name' >> 'e.name';')
     110                    (e.name' = 'e.value';')
    112111                  )
    113112                  (e.decl_consts e.decl)
     
    299298      } :: (e.qualifiers) e (s.name_producer e.name_arg),
    300299      <Put &Const_Exprs (t.name
    301         (<Const_Expr_To_CPP /*e.expr*/ e.comment>)
     300        (<Const_Expr_To_CPP e.expr /*e.comment*/>)
    302301        /*e.qualifiers*/ (e.linkage 'GExpr ' <Apply s.name_producer e.name_arg> ';'))>;
    303302    (OBJ s.linkage s.tag t.name) =
     
    472471
    473472
    474 $func Const_Expr_Aux e.expr = e.cpp_expr;
     473$func Const_Expr_Aux e.expr = s.len e.cpp_expr;
    475474
    476475Const_Expr_To_CPP {
    477476  /*empty*/ = 'empty';
    478   (SUBEXPR t.name s.pos s.len) = 'Expr (' <Rfp2Cpp t.name> ', ' s.pos ', ' s.len ')';
     477  (SUBEXPR t.name s.pos s.len) = <Rfp2Cpp t.name> '.subexpr(' s.pos ', ' s.len ')';
    479478                  //FIXME: It is needed to check that s.pos and s.len
    480479                  //       are in allowable bounds.
    481480                  //       Set this bounds by options.
    482481  e.expr =
    483     <Const_Expr_Aux () e.expr> : {
    484       ' + ' e.cpp_expr = e.cpp_expr;
    485       e.cpp_expr = e.cpp_expr;
    486     };
     482    <Const_Expr_Aux () e.expr> :: s.len e.cpp_expr,
     483    'GExpr('s.len')' e.cpp_expr;
     484//T/    <Const_Expr_Aux () e.expr> : {
     485//T/      ' + ' e.cpp_expr = e.cpp_expr;
     486//T/      e.cpp_expr = e.cpp_expr;
     487//T/    };
    487488};
    488489
     
    491492    <Const_Expr_Aux (e.accum <Symbol_To_CPP s.sym>) e.rest>;
    492493  e.accum : v =
    493     e.accum <Const_Expr_Aux () e.expr>;
     494    <Const_Expr_Aux () e.expr> :: s.len e.expr,
     495    <Add s.len <Length e.accum>> '.add("'e.accum'")' e.expr;
    494496//T/    {
    495497//T/      <CharsToBytes e.accum> : e s.c e,
     
    500502//T/    };
    501503  e.expr : t.item e.rest, t.item : {
     504    (PAREN (STATIC e.name)) =
     505      <Bind &Used_Consts ((STATIC e.name)) ()>,
     506      1 '.add('<Rfp2Cpp (STATIC e.name)>')';
    502507    (PAREN e.paren_expr) =
    503       '('<Const_Expr_To_CPP e.paren_expr>')';
     508      1 '.add('<Const_Expr_To_CPP e.paren_expr>')';
    504509//T/      ' + (' <Const_Expr_To_CPP e.paren_expr> ') ()';
    505     (REF t.name) =
    506       ' + ' <Name_To_CPP "DECL-OBJ" t.name>;
     510//T/    (REF t.name) =
     511//T/      ' + ' <Name_To_CPP "DECL-OBJ" t.name>;
    507512//      ' + Expr::create<ObjectRef>(' <Name-To-CPP t.name> ')';
    508     (STATIC e) =
    509       <Bind &Used_Consts (t.item) ()>,
    510       ' + ' '*' <Rfp2Cpp t.item>;
    511     (s.FUNC t.name), s.FUNC : \{ FUNC; "FUNC?"; TFUNC; } =
    512       ' + Expr::create_sym<rftype::Func> (' <Name_To_CPP "DECL-FUNC" t.name> ')';
     513//T/    (STATIC e) =
     514//T/      <Bind &Used_Consts (t.item) ()>,
     515//T/      1000 '.add('<Rfp2Cpp t.item>')';
     516//T/    (s.FUNC t.name), s.FUNC : \{ FUNC; "FUNC?"; TFUNC; } =
     517//T/      ' + Expr::create_sym<rftype::Func> (' <Name_To_CPP "DECL-FUNC" t.name> ')';
    513518    s.sym, {
    514519      <IsInt s.sym> =
    515         ' + Expr::create<' <Get &Int> '>("' s.sym '")';
     520//T/        ' + Expr::create<' <Get &Int> '>("' s.sym '")';
     521        1 '.add(' s.sym ')';
    516522      <IsWord s.sym> =
    517         ' + Expr::create<rftype::Word>("' <Symbol_To_CPP s.sym> '")';
     523//T/        ' + Expr::create<rftype::Word>("' <Symbol_To_CPP s.sym> '")';
     524        1 '.add(' <Symbol_To_CPP s.sym> ')';
    518525    };
    519   } :: e.cpp_item =
    520     e.cpp_item <Const_Expr_Aux () e.rest>;
    521   = /*empty*/;
     526  } :: s.len e.cpp_item =
     527    <Const_Expr_Aux () e.rest> :: s.len2 e.rest,
     528    <Add s.len s.len2> e.cpp_item e.rest;
     529  = 0;
    522530};
    523531
Note: See TracChangeset for help on using the changeset viewer.