blockmininode.java

来自「CroftSoft Code Library是一个开源的可移植的纯Java游戏库」· Java 代码 · 共 89 行

JAVA
89
字号
     package com.croftsoft.apps.compiler.mini.node;

     import java.util.*;

     /*********************************************************************
     * Parse tree node for the Mini programming language.
     *
     * @see
     *   MiniNode
     *
     * @author
     *   <A HREF="http://www.alumni.caltech.edu/~croft/">David W. Croft</A>
     * @version
     *   1999-04-25
     *********************************************************************/

     public class  BlockMiniNode extends AbstractMiniNode
     //////////////////////////////////////////////////////////////////////
     //////////////////////////////////////////////////////////////////////
     {

     protected DeclarationSequenceMiniNode  declarationSequenceMiniNode;
     protected StatementSequenceMiniNode    statementSequenceMiniNode;

     //////////////////////////////////////////////////////////////////////
     //////////////////////////////////////////////////////////////////////

     public  BlockMiniNode (
       DeclarationSequenceMiniNode  declarationSequenceMiniNode,
       StatementSequenceMiniNode    statementSequenceMiniNode )
     //////////////////////////////////////////////////////////////////////
     {
       this.declarationSequenceMiniNode = declarationSequenceMiniNode;
       this.statementSequenceMiniNode   = statementSequenceMiniNode;
     }

     public  BlockMiniNode (
       StatementSequenceMiniNode  statementSequenceMiniNode )
     //////////////////////////////////////////////////////////////////////
     {
       this ( null, statementSequenceMiniNode );
     }

     //////////////////////////////////////////////////////////////////////
     //////////////////////////////////////////////////////////////////////

     public DeclarationSequenceMiniNode  getDeclarationSequenceMiniNode ( )
       { return declarationSequenceMiniNode; }

     public StatementSequenceMiniNode  getStatementSequenceMiniNode ( )
       { return statementSequenceMiniNode; }

     //////////////////////////////////////////////////////////////////////
     // MiniNode interface methods
     //////////////////////////////////////////////////////////////////////

     public void  generate ( MiniNodeCodeVisitor  miniNodeCodeVisitor )
     //////////////////////////////////////////////////////////////////////
     {
       miniNodeCodeVisitor.generateBlock ( this );
     }

     //////////////////////////////////////////////////////////////////////
     //////////////////////////////////////////////////////////////////////

     public void  checkSemantics ( Stack  parentMiniNodeStack )
       throws SemanticErrorException
     //////////////////////////////////////////////////////////////////////
     {
       parentMiniNodeStack.push ( this );

       if ( declarationSequenceMiniNode != null )
       {
         declarationSequenceMiniNode.checkSemantics (
           parentMiniNodeStack );
       }

       if ( statementSequenceMiniNode != null )
       {
         statementSequenceMiniNode.checkSemantics ( parentMiniNodeStack );
       }

       parentMiniNodeStack.pop ( );
     }

     //////////////////////////////////////////////////////////////////////
     //////////////////////////////////////////////////////////////////////
     }

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?