Changeset 1831


Ignore:
Timestamp:
Jan 19, 2006, 4:32:54 AM (15 years ago)
Author:
orlov
Message:
  • Fixed generation of Java constant expressions.
  • Improved Java output formatting.
Location:
to-imperative/trunk/compiler
Files:
2 edited

Legend:

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

    r1828 r1831  
    6464
    6565RFP-ASAIL-To-Java (e.ModuleName) (e.exports) e.asail =
     66  <Store &Free-Idx>,
    6667  <RFP-Clear-Table &Iter-Vars>,
    6768  {
     
    7778      {
    7879        <? &Entry-Name> : v.name =
    79           ('public static void main(java.lang.String[] args) {'
     80          ()
     81          ('public static void main (java.lang.String[] args) {'
    8082            (('try {' (v.name' (new Expr ());') '}')
    8183             ('catch (RefalException e) {' ('System.out.println ("$error: " + e);') '}')
     
    8587      <Store &Module-Name <Rfp2Java e.ModuleName>>,
    8688      (<Domain &Inputs>)
    87       ('public class '<? &Module-Name>' {'
     89      ('public class '<? &Module-Name>'\n{'
    8890        (v.java e.entry)
    8991       '}');
     
    98100        FUNC? = ('boolean') ('return true;');
    99101      } :: (e.return-type) e.return =
    100       <Store &Free-Idx>,
    101102      <Store &Return-Type e.return-type>,
    102103      <Store &Ress e.ress>,
     
    104105//      <RFP-Extract-Qualifiers t.name> :: (e.qualifiers) e.n,
    105106      <Store &Func-Name <Name-To-Java t.name>>,
     107      ()
    106108      ('static '<Access-Mode t.name>' 'e.return-type' '
    107109        <? &Func-Name>' ('<Var-Args-To-Java e.args e.ress>') throws RefalException')
     
    161163      {
    162164        <? &Ress> : e t.var e =
    163           e.a (<Rfp2Java t.var>'.assign('e.j-expr');');
     165          e.a (<Rfp2Java t.var>'.assign ('e.j-expr');');
    164166        e.a (<Rfp2Java t.var>' = 'e.j-expr';');
    165167      };
     
    380382};
    381383
    382 $func Const-Expr-Aux e.expr = (e.arrays) e.java-expr;
     384$func Const-Expr-Aux (e.accum) e.expr = (e.arrays) e.java-expr;
    383385
    384386Const-Expr-To-Java {
     
    392394      (e.arrays) (e1)      = e.arrays (e1);
    393395      (e.arrays) (e1) (e2) = e.arrays ('new Expr ('e1', 'e2')');
     396      (e.arrays) e.concat  =
     397        '_va_'<Free-Index> :: e.new-var,
     398        e.arrays
     399        ('static private final Expr[] 'e.new-var' = { '<Concat <Intersperse (', ') e.concat>>' };')
     400        ('Expr.concat ('e.new-var')');
    394401    };
    395402};
  • to-imperative/trunk/compiler/rfpc.rf

    r1825 r1831  
    137137      {
    138138        e.ext : \{ ' .rf'; ' .rfi'; } =
    139           <Verbose "parsing started" >,
     139          <Verbose e.filename ": parsing started" >,
    140140          <RFP-Lexer e.file> :: e.tokens,
    141141          <Store &RFP-Token-Stack e.tokens>,
    142142          <RFP-Parser> :: t.as,
    143           <Verbose "parsing finished">,
     143          <Verbose e.filename ": parsing finished">,
    144144          AS-REFAL t.as;
    145145        e.ext : ' .asr' =
     
    314314              {
    315315                e.inputs : e (e.java-module) e,
    316                   <Lookup &RFP-Includes <To-Chars e.java-module>> : {
     316                  <Lookup &RFP-Includes <To-Chars e.java-module>> : \{
    317317                    BOOT e = 'org.refal.plus.library.'e.java-module;
    318                     LOCAL e.path =
    319                       <Subst (&RFP-Dir-Separator) (('.')) e.path> e.java-module;
    320                 } :: e.java-module,
     318//                    LOCAL e.path =
     319//                      {
     320//                        e.path : '.' &RFP-Dir-Separator e.rest-path = e.rest-path;
     321//                        e.path;
     322//                      } :: e.path,
     323//                      <Subst (&RFP-Dir-Separator) (('.')) e.path> e.java-module;
     324                  } :: e.java-module,
    321325                  <PrintLN! s.channel 'import 'e.java-module';'>,
    322326                  $fail;;
     
    548552          e.indent : e.ind &Tab,
    549553          <PrintLN! s.channel e.ind e.label>;
     554        e1 : /*empty*/ =
     555          <PrintLN! s.channel>;
    550556        <CPP-Pretty-Print 1 s.channel (e.indent) e1>;
    551557      };
Note: See TracChangeset for help on using the changeset viewer.