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-26 015 *********************************************************************/ 016 017 public class ExpressionSequenceMiniNode extends AbstractMiniNode 018 ////////////////////////////////////////////////////////////////////// 019 ////////////////////////////////////////////////////////////////////// 020 { 021 022 protected List expressionMiniNodeList; 023 024 ////////////////////////////////////////////////////////////////////// 025 ////////////////////////////////////////////////////////////////////// 026 027 public ExpressionSequenceMiniNode ( 028 ExpressionSequenceMiniNode expressionSequenceMiniNode, 029 ExpressionMiniNode expressionMiniNode ) 030 ////////////////////////////////////////////////////////////////////// 031 { 032 if ( expressionSequenceMiniNode != null ) 033 { 034 expressionMiniNodeList 035 = expressionSequenceMiniNode.expressionMiniNodeList; 036 } 037 else 038 { 039 expressionMiniNodeList = new LinkedList ( ); 040 } 041 042 expressionMiniNodeList.add ( expressionMiniNode ); 043 } 044 045 public ExpressionSequenceMiniNode ( 046 ExpressionMiniNode expressionMiniNode ) 047 ////////////////////////////////////////////////////////////////////// 048 { 049 this ( null, expressionMiniNode ); 050 } 051 052 ////////////////////////////////////////////////////////////////////// 053 // Access methods 054 ////////////////////////////////////////////////////////////////////// 055 056 public List getExpressionMiniNodeList ( ) 057 ////////////////////////////////////////////////////////////////////// 058 { 059 return expressionMiniNodeList; 060 } 061 062 public int size ( ) 063 ////////////////////////////////////////////////////////////////////// 064 { 065 return expressionMiniNodeList.size ( ); 066 } 067 068 ////////////////////////////////////////////////////////////////////// 069 // MiniNode interface methods 070 ////////////////////////////////////////////////////////////////////// 071 072 public void generate ( MiniNodeCodeVisitor miniNodeCodeVisitor ) 073 ////////////////////////////////////////////////////////////////////// 074 { 075 miniNodeCodeVisitor.generateExpressionSequence ( this ); 076 } 077 078 public void checkSemantics ( Stack parentMiniNodeStack ) 079 throws SemanticErrorException 080 ////////////////////////////////////////////////////////////////////// 081 { 082 parentMiniNodeStack.push ( this ); 083 084 MiniNodeLib.checkSemantics ( 085 expressionMiniNodeList, parentMiniNodeStack ); 086 087 parentMiniNodeStack.pop ( ); 088 } 089 090 ////////////////////////////////////////////////////////////////////// 091 ////////////////////////////////////////////////////////////////////// 092 }