AssignmentNode.st
changeset 140 1ef1d1395146
parent 135 aa4f7b8f121e
child 148 ef0e604209ec
equal deleted inserted replaced
139:65eaf1a009f5 140:1ef1d1395146
     9  other person.  No title to or ownership of the software is
     9  other person.  No title to or ownership of the software is
    10  hereby transferred.
    10  hereby transferred.
    11 "
    11 "
    12 
    12 
    13 ParseNode subclass:#AssignmentNode
    13 ParseNode subclass:#AssignmentNode
    14        instanceVariableNames:'variable expression'
    14 	 instanceVariableNames:'variable expression'
    15        classVariableNames:''
    15 	 classVariableNames:''
    16        poolDictionaries:''
    16 	 poolDictionaries:''
    17        category:'System-Compiler-Support'
    17 	 category:'System-Compiler-Support'
    18 !
    18 !
    19 
    19 
    20 !AssignmentNode class methodsFor:'documentation'!
    20 !AssignmentNode class methodsFor:'documentation'!
    21 
    21 
    22 copyright
    22 copyright
    31  other person.  No title to or ownership of the software is
    31  other person.  No title to or ownership of the software is
    32  hereby transferred.
    32  hereby transferred.
    33 "
    33 "
    34 !
    34 !
    35 
    35 
    36 version
       
    37     ^ '$Header: /cvs/stx/stx/libcomp/AssignmentNode.st,v 1.13 1995-11-11 15:29:49 cg Exp $'
       
    38 !
       
    39 
       
    40 documentation
    36 documentation
    41 "
    37 "
    42     node for parse-trees, representing assignments
    38     node for parse-trees, representing assignments
    43 "
    39 "
       
    40 !
       
    41 
       
    42 version
       
    43     ^ '$Header: /cvs/stx/stx/libcomp/AssignmentNode.st,v 1.14 1995-11-23 02:12:04 cg Exp $'
    44 ! !
    44 ! !
    45 
    45 
    46 !AssignmentNode class methodsFor:'instance creation'!
    46 !AssignmentNode class methodsFor:'instance creation'!
    47 
    47 
    48 variable:v expression:e
    48 variable:v expression:e
    49     ^ (self basicNew) variable:v expression:e
    49     ^ (self basicNew) variable:v expression:e
    50 ! !
    50 ! !
    51 
    51 
    52 !AssignmentNode methodsFor:'evaluating'!
    52 !AssignmentNode methodsFor:'accessing'!
    53 
    53 
    54 evaluate
    54 expression
    55     |value|
    55     ^ expression
    56     value := expression evaluate.
    56 !
    57     variable store:value.
       
    58     ^ value
       
    59 ! !
       
    60 
       
    61 !AssignmentNode methodsFor:'queries'!
       
    62 
       
    63 isAssignment
       
    64     "return true, if this is a node for an assignment"
       
    65 
       
    66     ^ true
       
    67 ! !
       
    68 
       
    69 !AssignmentNode methodsFor:'accessing'!
       
    70 
    57 
    71 variable:v expression:e
    58 variable:v expression:e
    72     variable := v.
    59     variable := v.
    73     expression := e
    60     expression := e
    74 !
       
    75 
       
    76 expression
       
    77     ^ expression
       
    78 ! !
    61 ! !
    79 
    62 
    80 !AssignmentNode methodsFor:'code generation'!
    63 !AssignmentNode methodsFor:'code generation'!
    81 
    64 
    82 checkIncDecOn:aStream
    65 checkIncDecOn:aStream
   124     ].
   107     ].
   125     expression codeOn:aStream inBlock:b for:aCompiler.
   108     expression codeOn:aStream inBlock:b for:aCompiler.
   126     variable codeStoreOn:aStream inBlock:b valueNeeded:true for:aCompiler
   109     variable codeStoreOn:aStream inBlock:b valueNeeded:true for:aCompiler
   127 ! !
   110 ! !
   128 
   111 
       
   112 !AssignmentNode methodsFor:'evaluating'!
       
   113 
       
   114 evaluate
       
   115     |value|
       
   116     value := expression evaluate.
       
   117     variable store:value.
       
   118     ^ value
       
   119 ! !
       
   120 
   129 !AssignmentNode methodsFor:'printing'!
   121 !AssignmentNode methodsFor:'printing'!
   130 
   122 
   131 printOn:aStream indent:i
   123 printOn:aStream indent:i
   132     variable printOn:aStream.
   124     variable printOn:aStream.
   133     aStream nextPutAll:' := '.
   125     aStream nextPutAll:' := '.
   134     expression printOn:aStream
   126     expression printOn:aStream
   135 ! !
   127 ! !
       
   128 
       
   129 !AssignmentNode methodsFor:'queries'!
       
   130 
       
   131 isAssignment
       
   132     "return true, if this is a node for an assignment"
       
   133 
       
   134     ^ true
       
   135 ! !
       
   136