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         }