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-25
015 *********************************************************************/
016
017 public class ExpressionElementMiniNode
018 extends AbstractMiniNode implements ElementMiniNode
019 //////////////////////////////////////////////////////////////////////
020 //////////////////////////////////////////////////////////////////////
021 {
022
023 protected ExpressionMiniNode expressionMiniNode;
024
025 //////////////////////////////////////////////////////////////////////
026 //////////////////////////////////////////////////////////////////////
027
028 public ExpressionElementMiniNode (
029 ExpressionMiniNode expressionMiniNode )
030 //////////////////////////////////////////////////////////////////////
031 {
032 this.expressionMiniNode = expressionMiniNode;
033 }
034
035 //////////////////////////////////////////////////////////////////////
036 //////////////////////////////////////////////////////////////////////
037
038 public ExpressionMiniNode getExpressionMiniNode ( )
039 //////////////////////////////////////////////////////////////////////
040 {
041 return expressionMiniNode;
042 }
043
044 //////////////////////////////////////////////////////////////////////
045 // MiniNode interface methods
046 //////////////////////////////////////////////////////////////////////
047
048 public void generate ( MiniNodeCodeVisitor miniNodeCodeVisitor )
049 //////////////////////////////////////////////////////////////////////
050 {
051 miniNodeCodeVisitor.generateExpressionElement ( this );
052 }
053
054 public void checkSemantics ( Stack parentMiniNodeStack )
055 throws SemanticErrorException
056 //////////////////////////////////////////////////////////////////////
057 {
058 parentMiniNodeStack.push ( this );
059
060 expressionMiniNode.checkSemantics ( parentMiniNodeStack );
061
062 parentMiniNodeStack.pop ( );
063 }
064
065 //////////////////////////////////////////////////////////////////////
066 //////////////////////////////////////////////////////////////////////
067 }