Changeset 1068

Show
Ignore:
Timestamp:
12/06/07 11:00:13 (1 year ago)
Author:
sukyoungryu
Message:

Removed SubscriptAssign?.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/ProjectFortress/astgen/Fortress.ast

    r1048 r1068  
    839839            /** 
    840840             * subscripting expression 
    841              * SubscriptExpr ::= Primary [ ExprList? ] 
    842              *                 | Primary LeftEncloser ExprList? RightEncloser 
     841             * SubscriptExpr ::= Primary LeftEncloser ExprList? RightEncloser 
    843842             * e.g.) a[i] 
    844843             */ 
     
    11851184             */ 
    11861185            UnitArg(UnitExpr unit); 
    1187         _RewriteImplicitType();     
     1186        _RewriteImplicitType(); 
    11881187    /** 
    11891188     * static expression 
     
    17021701                    Bracketing(); 
    17031702                    /** 
    1704                      * subscripting operator 
     1703                     * subscripting and subscripted assignment operator 
    17051704                     * e.g.) a[i] 
    17061705                     */ 
    17071706                    SubscriptOp(); 
    1708                     /** 
    1709                      * subscripted assignment operator 
    1710                      * e.g.) a[i] := 1 
    1711                      */ 
    1712                     SubscriptAssign(); 
    17131707            /** 
    17141708             * internal name for anonymous function expressions 
  • trunk/ProjectFortress/src/com/sun/fortress/interpreter/evaluator/Evaluator.java

    r1065 r1068  
    141141import com.sun.fortress.nodes.StaticArg; 
    142142import com.sun.fortress.nodes.StringLiteral; 
    143 import com.sun.fortress.nodes.SubscriptAssign; 
    144143import com.sun.fortress.nodes.SubscriptExpr; 
    145144import com.sun.fortress.nodes.SubscriptOp; 
     
    11291128    } 
    11301129 
    1131     public FValue forSubscriptAssign(SubscriptAssign x) { 
    1132         // Didn't come here when it seemed like we should have. 
    1133         // See LHSEvaluator.forSubscriptExpr 
    1134         return NI("forSubscriptAssign"); 
    1135     } 
    1136  
    11371130    /* 
    11381131     * (non-Javadoc) 
  • trunk/ProjectFortress/src/com/sun/fortress/parser/Expression.rats

    r1038 r1068  
    9090   | FieldSelection 
    9191   | QualifiedName 
    92    SubscriptExpr ::= Primay [ (w ExprList)? w ] 
     92   SubscriptExpr ::= Primay LeftEncloser (w ExprList)? w RightEncloser 
    9393   FieldSelection ::= Primary . Id 
    9494 */ 
    9595LHS AssignLeft = 
    96     seed:PrimaryFront list:AssignLeftTail+ 
    97     { Expr left = (Expr)apply(list, seed); 
    98       if (left instanceof LHS) yyValue = (LHS)left; 
    99       else yyValue = null; 
    100    
    101   / a1:QualifiedName 
    102     { yyValue = new VarRef(createSpan(yyStart,yyCount), false, a1); }; 
     96    seed:PrimaryFront list:AssignLeftTail+ 
     97    { Expr left = (Expr)apply(list, seed); 
     98      if (left instanceof LHS) yyValue = (LHS)left; 
     99      else yyValue = null; 
     100   
     101  / a1:QualifiedName 
     102    { yyValue = new VarRef(createSpan(yyStart,yyCount), false, a1); }; 
    103103 
    104104constant transient Action<Expr> AssignLeftTail = 
    105       SubscriptAssign 
    106     / FieldSelectionAssign 
    107    
     105     SubscriptAssign 
     106   / FieldSelectionAssign 
     107   
    108108 
    109109constant inline Action<Expr> SubscriptAssign = 
    110     a1:opensquare a2:(w ExprList)? w a3:closesquare 
    111     { yyValue = new Action<Expr>() { 
    112           public Expr run(Expr base) { 
    113               List<Expr> es; 
    114               if (a2 == null) es = FortressUtil.emptyExprs(); 
    115               else            es = a2; 
    116               Span span = createSpan(yyStart,yyCount); 
    117               Op open  = NodeFactory.makeOp(createSpan(yyStart, yyStart+1), a1); 
    118               Op close = NodeFactory.makeOp(createSpan(yyCount-1,1),a3); 
    119               SubscriptOp op = new SubscriptOp(span, open, close); 
    120               return ExprFactory.makeSubscriptExpr(span,base,es,Option.some(op)); 
    121           }}; 
    122     }; 
     110     a1:LeftEncloser a2:(w ExprList)? w a3:RightEncloser 
     111     { yyValue = new Action<Expr>() { 
     112           public Expr run(Expr base) { 
     113             Span span = createSpan(yyStart,yyCount); 
     114             List<Expr> es; 
     115             if (a2 == null) es = FortressUtil.emptyExprs(); 
     116             else            es = a2; 
     117             SubscriptOp op = new SubscriptOp(FortressUtil.spanTwo(a1,a3),a1,a3); 
     118             return ExprFactory.makeSubscriptExpr(span,base,es,Option.some(op)); 
     119            }}; 
     120     }; 
    123121 
    124122constant inline Action<Expr> FieldSelectionAssign = 
     
    290288   | BaseExpr 
    291289   | LeftEncloser (w ExprList)? w RightEncloser 
    292    | Primary [ (w ExprList)? w ] 
    293290   | Primary LeftEncloser (w ExprList)? w RightEncloser 
    294291   | Primary . Id ([\ w StaticArgList w \])? TupleExpr 
     
    330327 
    331328constant inline Action<PureList<Expr>> SubscriptExpr = 
    332      a1:opensquare a2:(w ExprList)? w a3:closesquare 
    333      { yyValue = new Action<PureList<Expr>>() { 
    334            public PureList<Expr> run(PureList<Expr> base) { 
    335                Span span = createSpan(yyStart,yyCount); 
    336                Expr arr = FortressUtil.buildPrimary((PureList<Expr>)base); 
    337                List<Expr> es; 
    338                if (a2 == null) es = FortressUtil.emptyExprs(); 
    339                else            es = a2; 
    340                Op open  = NodeFactory.makeOp(createSpan(yyStart, yyStart+1), a1); 
    341                Op close = NodeFactory.makeOp(createSpan(yyCount-1,1),a3); 
    342                SubscriptOp op = new SubscriptOp(span, open, close); 
    343                return PureList.make((Expr)ExprFactory.makeSubscriptExpr(span, arr, es, Option.some(op))); 
    344            }}; 
    345      } 
    346    / a1:LeftEncloser a2:(w ExprList)? w a3:RightEncloser 
     329     a1:LeftEncloser a2:(w ExprList)? w a3:RightEncloser 
    347330     { yyValue = new Action<PureList<Expr>>() { 
    348331           public PureList<Expr> run(PureList<Expr> base) { 
  • trunk/ProjectFortress/src/com/sun/fortress/parser/MethodParam.rats

    r1038 r1068  
    6666               name = new Bracketing(span, opa2, opa4); 
    6767           } else { 
    68                if (opa5 == null) name = new SubscriptOp(span, opa2, opa4); 
    69                else              name = new SubscriptAssign(span, opa2, opa4); 
     68               name = new SubscriptOp(span, opa2, opa4); 
    7069           } 
    7170       } else 
  • trunk/ProjectFortress/static_tests/lib/FortressLibrary.tfs

    r1048 r1068  
    30713071    (AbsFnDecl @686:2~690:2 
    30723072     _contract=(Contract @"":0:0) 
    3073      _name=(SubscriptAssign @"FortressLibrary.fss":686:2~16 
     3073     _name=(SubscriptOp @"FortressLibrary.fss":686:2~16 
    30743074      _close=(Op @686:9 _text="]") 
    30753075      _open=(Op @686:5~6 _text="[")) 
     
    30913091    (AbsFnDecl @690:2~691:2 
    30923092     _contract=(Contract @"":0:0) 
    3093      _name=(SubscriptAssign @"FortressLibrary.fss":690:2~38 
     3093     _name=(SubscriptOp @"FortressLibrary.fss":690:2~38 
    30943094      _close=(Op @690:18 _text="]") 
    30953095      _open=(Op @690:5~6 _text="[")) 
     
    31273127    (AbsFnDecl @691:2~79 
    31283128     _contract=(Contract @"":0:0) 
    3129      _name=(SubscriptAssign @"FortressLibrary.fss":691:2~44 
     3129     _name=(SubscriptOp @"FortressLibrary.fss":691:2~44 
    31303130      _close=(Op @691:24 _text="]") 
    31313131      _open=(Op @691:5~6 _text="[")) 
     
    40054005    (AbsFnDecl @767:4~768:6 
    40064006     _contract=(Contract @"":0:0) 
    4007      _name=(SubscriptAssign @"FortressLibrary.fss":767:4~18 
     4007     _name=(SubscriptOp @"FortressLibrary.fss":767:4~18 
    40084008      _close=(Op @767:11 _text="]") 
    40094009      _open=(Op @767:7~8 _text="[")) 
     
    40434043    (AbsFnDecl @770:4~781:9 
    40444044     _contract=(Contract @"":0:0) 
    4045      _name=(SubscriptAssign @"FortressLibrary.fss":770:4~40 
     4045     _name=(SubscriptOp @"FortressLibrary.fss":770:4~40 
    40464046      _close=(Op @770:20 _text="]") 
    40474047      _open=(Op @770:7~8 _text="[")) 
     
    63496349    (AbsFnDecl @1056:2~58 
    63506350     _contract=(Contract @"":0:0) 
    6351      _name=(SubscriptAssign @"FortressLibrary.fss":1056:2~26 
     6351     _name=(SubscriptOp @"FortressLibrary.fss":1056:2~26 
    63526352      _close=(Op @1056:19 _text="]") 
    63536353      _open=(Op @1056:5~6 _text="[")) 
     
    96649664    (AbsFnDecl @1374:2~68 
    96659665     _contract=(Contract @"":0:0) 
    9666      _name=(SubscriptAssign @"FortressLibrary.fss":1374:2~37 
     9666     _name=(SubscriptOp @"FortressLibrary.fss":1374:2~37 
    96679667      _close=(Op @1374:28 _text="]") 
    96689668      _open=(Op @1374:5~6 _text="[")) 
  • trunk/ProjectFortress/test_library/FortressAst.fsi

    r1063 r1068  
    1919 
    2020   (* Fortress representation of Fortress AST nodes *) 
    21    trait Node  
     21   trait Node 
    2222      toString():String 
    2323   end 
     
    7373   (* TODO: Implement traitObjectAbsDeclOrDecls *) 
    7474 
    75    trait VarAbsDeclOrDecl extends AbsDeclOrDecl  
     75   trait VarAbsDeclOrDecl extends AbsDeclOrDecl 
    7676      lhs:List[\LValueBind\] 
    7777   end 
     
    154154 
    155155   trait TaggedUnitExpr extends Expr 
    156       val : Expr  
     156      val : Expr 
    157157      unitExpr : UnitExpr 
    158158   end 
     
    185185   object FnExpr(parenthesized:Boolean, name:SimpleName, staticParams:List[\StaticParam\], params:List[\Param\], returnType:Maybe[\Type\], whereClause:List[\WhereClause\], throwsClause:Maybe[\List[\TraitType\]\], body:Expr) extends { Expr, Applicable } end 
    186186 
    187    trait LetExpr extends Expr  
     187   trait LetExpr extends Expr 
    188188      body:List[\Expr\] 
    189189   end 
     
    192192 
    193193   object GeneratedExpr(expr:Expr, gens:List[\Generator\]) extends Expr end 
    194    
     194 
    195195   trait OpExpr extends Expr end 
    196196   object OprExpr(ops:List[\QualifiedOpName\], args:List[\Expr\]) extends OpExpr end 
     
    206206   object FieldRef(field:IdName) extends AbstractFieldRef end 
    207207 
    208    trait Juxt extends Primary  
     208   trait Juxt extends Primary 
    209209      exprs:List[\Expr\] 
    210210   end 
     
    221221   object VarRef(avar:QualifiedIdName) extends { BaseExpr, Lhs } end 
    222222 
    223    trait Literal extends BaseExpr  
     223   trait Literal extends BaseExpr 
    224224      text:String 
    225225   end 
     
    246246   object ArrayComprehension(List[\ArrayComprehensionClause\] clauses) extends Comprehension end 
    247247*) 
    248    trait GeneratedComprehension extends Comprehension  
     248   trait GeneratedComprehension extends Comprehension 
    249249      gens:List[\Generator\] 
    250250   end 
     
    255255   trait Type extends AbstractNode end 
    256256   object ArrowType(domain:Type, range:Type, throwsClause:Maybe[\List[\TraitType\]\]) extends Type end 
    257      
     257 
    258258   trait NonArrowType extends Type end 
    259259   trait TraitType extends NonArrowType end 
     
    262262   object MatrixType(element:Type, dimensions:List[\ExtentRange\]) extends TraitType end 
    263263   object InstantiatedType(name:QualifiedIdName, args:List[\StaticArg\]) extends TraitType end 
    264     
     264 
    265265   object TupleType(elements:List[\Type\], varargs:Maybe[\VarargsType\], keywords:List[\KeywordType\]) extends NonArrowType end 
    266266   object VoidType() extends NonArrowType end 
     
    286286     *) 
    287287   trait BoolExpr extends StaticExpr end 
    288    
     288 
    289289   (* TODO: rest *) 
    290290   (** 
     
    408408   object Bracketing(open:Op, close:Op) extends Enclosing end 
    409409   (** 
    410       * subscripting operator 
     410      * subscripting or subscripted assignment operator 
    411411      * e.g.) a[i] 
    412412      *) 
    413413   object SubscriptOp(open:Op, close:Op) extends Enclosing end 
    414    (** 
    415      * subscripted assignment operator 
    416      * e.g.) a[i] := 1 
    417      *) 
    418     object SubscriptAssign(open:Op, close:Op) extends Enclosing end 
    419414 
    420415   (* TODO: Implement AnonymousFnName *) 
  • trunk/ProjectFortress/test_library/FortressAst.fss

    r1064 r1068  
    2525  (* Fortress representation of Fortress AST nodes *) 
    2626 
    27    trait Node  
     27   trait Node 
    2828      toString():String = "Node" 
    2929   end 
     
    7979   (* TODO: Implement traitObjectAbsDeclOrDecls *) 
    8080 
    81    trait VarAbsDeclOrDecl extends AbsDeclOrDecl  
     81   trait VarAbsDeclOrDecl extends AbsDeclOrDecl 
    8282      lhs:List[\LValueBind\] 
    8383   end 
     
    160160 
    161161   trait TaggedUnitExpr extends Expr 
    162       val : Expr  
     162      val : Expr 
    163163      unitExpr : UnitExpr 
    164164   end 
     
    191191   object FnExpr(parenthesized:Boolean, name:SimpleName, staticParams:List[\StaticParam\], params:List[\Param\], returnType:Maybe[\Type\], whereClause:List[\WhereClause\], throwsClause:Maybe[\List[\TraitType\]\], body:Expr) extends { Expr, Applicable } end 
    192192 
    193    trait LetExpr extends Expr  
     193   trait LetExpr extends Expr 
    194194      body:List[\Expr\] 
    195195   end 
     
    198198 
    199199   object GeneratedExpr(expr:Expr, gens:List[\Generator\]) extends Expr end 
    200    
     200 
    201201   trait OpExpr extends Expr end 
    202202   object OprExpr(ops:List[\QualifiedOpName\], args:List[\Expr\]) extends OpExpr end 
     
    212212   object FieldRef(field:IdName) extends AbstractFieldRef end 
    213213 
    214    trait Juxt extends Primary  
     214   trait Juxt extends Primary 
    215215      exprs:List[\Expr\] 
    216216   end 
     
    227227   object VarRef(avar:QualifiedIdName) extends { BaseExpr, Lhs } end 
    228228 
    229    trait Literal extends BaseExpr  
     229   trait Literal extends BaseExpr 
    230230      text:String 
    231231   end 
     
    252252   object ArrayComprehension(List[\ArrayComprehensionClause\] clauses) extends Comprehension end 
    253253*) 
    254    trait GeneratedComprehension extends Comprehension  
     254   trait GeneratedComprehension extends Comprehension 
    255255      gens:List[\Generator\] 
    256256   end 
     
    261261   trait Type extends AbstractNode end 
    262262   object ArrowType(domain:Type, range:Type, throwsClause:Maybe[\List[\TraitType\]\]) extends Type end 
    263      
     263 
    264264   trait NonArrowType extends Type end 
    265265   trait TraitType extends NonArrowType end 
     
    268268   object MatrixType(element:Type, dimensions:List[\ExtentRange\]) extends TraitType end 
    269269   object InstantiatedType(name:QualifiedIdName, args:List[\StaticArg\]) extends TraitType end 
    270     
     270 
    271271   object TupleType(elements:List[\Type\], varargs:Maybe[\VarargsType\], keywords:List[\KeywordType\]) extends NonArrowType end 
    272272   object VoidType() extends NonArrowType end 
     
    292292     *) 
    293293   trait BoolExpr extends StaticExpr end 
    294    
     294 
    295295   (* TODO: rest *) 
    296296   (** 
     
    414414   object Bracketing(open:Op, close:Op) extends Enclosing end 
    415415   (** 
    416       * subscripting operator 
     416      * subscripting or subscripted assignment operator 
    417417      * e.g.) a[i] 
    418418      *) 
    419419   object SubscriptOp(open:Op, close:Op) extends Enclosing end 
    420    (** 
    421      * subscripted assignment operator 
    422      * e.g.) a[i] := 1 
    423      *) 
    424     object SubscriptAssign(open:Op, close:Op) extends Enclosing end 
    425420 
    426421   (* TODO: Implement AnonymousFnName *) 
  • trunk/ProjectFortress/tests/SubscriptedExpr.fss

    r904 r1068  
    2121 
    2222object O 
    23   opr(/i:ZZ32/) : String = "SubscriptedExpr: (//)" 
    24   opr[i:ZZ32]   : String = "SubscriptedExpr: []" 
     23  round: ZZ32[5] = array1[\ZZ32,5\]().fill(2) 
     24  flat : ZZ32[5] = array1[\ZZ32,5\]().fill(1) 
     25  opr(/i:ZZ32/): ZZ32 = round[i] 
     26  opr(/i:ZZ32/):=(v:ZZ32) = round[i] := v 
     27  opr[i:ZZ32]  : ZZ32 = flat[i] 
     28  opr[i:ZZ32]  :=(v:ZZ32) = flat[i] := v 
    2529end 
    2630 
    27 run(args:String...) = if O[0] = O(/0/) then 
    28                         println "FAIL!" 
    29                         println O[0] 
    30                         println O(/0/) 
    31                       else 
    32                         println O[0] 
    33                         println O(/0/) 
    34                         println "OK" 
    35                       end 
     31run(args:String...) = 
     32  if O[0] = O(/0/) then 
     33    println "FAIL!" 
     34    println O[0] 
     35    println O(/0/) 
     36  else 
     37    O(/2/) := 11 
     38    O[2] := 12 
     39    assert(O(/2/),11,"O(/2/) wrong") 
     40    assert(O[2],12,"O[2] wrong") 
     41  end 
     42 
    3643end