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 }