001         package com.croftsoft.apps.compiler.mini.node;
002    
003         import java.util.*;
004    
005         /*********************************************************************
006         * Parse tree node for the Mini programming language.
007         *
008         * @see
009         *   MiniNode
010         *
011         * @author
012         *   <A HREF="http://www.alumni.caltech.edu/~croft/">David W. Croft</A>
013         * @version
014         *   1999-04-25
015         *********************************************************************/
016    
017         public class  AssignmentStatementMiniNode extends AbstractMiniNode
018           implements StatementMiniNode
019         //////////////////////////////////////////////////////////////////////
020         //////////////////////////////////////////////////////////////////////
021         {
022    
023         protected NameMiniNode        nameMiniNode;
024         protected ExpressionMiniNode  expressionMiniNode;
025    
026         //////////////////////////////////////////////////////////////////////
027         //////////////////////////////////////////////////////////////////////
028    
029         public  AssignmentStatementMiniNode (
030           NameMiniNode        nameMiniNode,
031           ExpressionMiniNode  expressionMiniNode )
032         //////////////////////////////////////////////////////////////////////
033         {
034           this.nameMiniNode       = nameMiniNode;
035           this.expressionMiniNode = expressionMiniNode;
036         }
037    
038         //////////////////////////////////////////////////////////////////////
039         //////////////////////////////////////////////////////////////////////
040    
041         public NameMiniNode  getNameMiniNode ( )
042         //////////////////////////////////////////////////////////////////////
043         {
044           return nameMiniNode;
045         }
046    
047         public ExpressionMiniNode  getExpressionMiniNode ( )
048         //////////////////////////////////////////////////////////////////////
049         {
050           return expressionMiniNode;
051         }
052    
053         //////////////////////////////////////////////////////////////////////
054         // MiniNode interface methods
055         //////////////////////////////////////////////////////////////////////
056    
057         public void  generate ( MiniNodeCodeVisitor  miniNodeCodeVisitor )
058         //////////////////////////////////////////////////////////////////////
059         {
060           miniNodeCodeVisitor.generateAssignmentStatement ( this );
061         }
062         
063         //////////////////////////////////////////////////////////////////////
064         //////////////////////////////////////////////////////////////////////
065    
066         public void  checkSemantics ( Stack  parentMiniNodeStack )
067           throws SemanticErrorException
068         //////////////////////////////////////////////////////////////////////
069         {
070           parentMiniNodeStack.push ( this );
071    
072           nameMiniNode.checkSemantics ( parentMiniNodeStack );
073           expressionMiniNode.checkSemantics ( parentMiniNodeStack );
074    
075           parentMiniNodeStack.pop ( );
076         }
077    
078         //////////////////////////////////////////////////////////////////////
079         //////////////////////////////////////////////////////////////////////
080         }