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 }