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 OutputStatementMiniNode extends AbstractMiniNode 018 implements StatementMiniNode 019 ////////////////////////////////////////////////////////////////////// 020 ////////////////////////////////////////////////////////////////////// 021 { 022 023 protected ExpressionSequenceMiniNode expressionSequenceMiniNode; 024 025 ////////////////////////////////////////////////////////////////////// 026 ////////////////////////////////////////////////////////////////////// 027 028 public OutputStatementMiniNode ( 029 ExpressionSequenceMiniNode expressionSequenceMiniNode ) 030 ////////////////////////////////////////////////////////////////////// 031 { 032 this.expressionSequenceMiniNode = expressionSequenceMiniNode; 033 } 034 035 ////////////////////////////////////////////////////////////////////// 036 ////////////////////////////////////////////////////////////////////// 037 038 public ExpressionSequenceMiniNode getExpressionSequenceMiniNode ( ) 039 ////////////////////////////////////////////////////////////////////// 040 { 041 return expressionSequenceMiniNode; 042 } 043 044 ////////////////////////////////////////////////////////////////////// 045 // MiniNode interface methods 046 ////////////////////////////////////////////////////////////////////// 047 048 public void generate ( MiniNodeCodeVisitor miniNodeCodeVisitor ) 049 ////////////////////////////////////////////////////////////////////// 050 { 051 miniNodeCodeVisitor.generateOutputStatement ( this ); 052 } 053 054 public void checkSemantics ( Stack parentMiniNodeStack ) 055 throws SemanticErrorException 056 ////////////////////////////////////////////////////////////////////// 057 { 058 parentMiniNodeStack.push ( this ); 059 060 expressionSequenceMiniNode.checkSemantics ( parentMiniNodeStack ); 061 062 parentMiniNodeStack.pop ( ); 063 } 064 065 ////////////////////////////////////////////////////////////////////// 066 ////////////////////////////////////////////////////////////////////// 067 }