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-27
015         *********************************************************************/
016    
017         public class  IntegerDeclarationMiniNode extends AbstractMiniNode
018           implements DeclarationMiniNode
019         //////////////////////////////////////////////////////////////////////
020         //////////////////////////////////////////////////////////////////////
021         {
022    
023         protected NameSequenceMiniNode  nameSequenceMiniNode;
024    
025         //////////////////////////////////////////////////////////////////////
026         //////////////////////////////////////////////////////////////////////
027    
028         public  IntegerDeclarationMiniNode (
029           NameSequenceMiniNode  nameSequenceMiniNode )
030         //////////////////////////////////////////////////////////////////////
031         {
032           if ( nameSequenceMiniNode == null )
033           {
034             throw new IllegalArgumentException (
035               "null nameSequenceMiniNode" );
036           }
037    
038           this.nameSequenceMiniNode = nameSequenceMiniNode;
039         }
040    
041         //////////////////////////////////////////////////////////////////////
042         //////////////////////////////////////////////////////////////////////
043    
044         public NameSequenceMiniNode  getNameSequenceMiniNode ( )
045         //////////////////////////////////////////////////////////////////////
046         {
047           return nameSequenceMiniNode;
048         }
049    
050         //////////////////////////////////////////////////////////////////////
051         // MiniNode interface methods
052         //////////////////////////////////////////////////////////////////////
053    
054         public void  generate ( MiniNodeCodeVisitor  miniNodeCodeVisitor )
055         //////////////////////////////////////////////////////////////////////
056         {
057           miniNodeCodeVisitor.generateIntegerDeclaration ( this );
058         }
059         
060         public void  checkSemantics ( Stack  parentMiniNodeStack )
061           throws SemanticErrorException
062         //////////////////////////////////////////////////////////////////////
063         {
064           parentMiniNodeStack.push ( this );
065    
066           nameSequenceMiniNode.checkSemantics ( parentMiniNodeStack );
067    
068           parentMiniNodeStack.pop ( );
069         }
070    
071         //////////////////////////////////////////////////////////////////////
072         //////////////////////////////////////////////////////////////////////
073         }