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 }