

import java.util.*;
import java.io.*;

public class Es {

    public void add2Hash( Hashtable h, String source ) {
        AstNode.override( "add2Hash", this );
    }

    public void harvestAst( LinkedList ll ) {
        AstNode.override( "harvestAst", this );
    }

    public void verifyState( Hashtable h, String inWhat ) {
        String statekey = "state " + arg[0].tok[0].tokenName();
        verifyState( h, statekey, inWhat );
    }

    public void verifyState( Hashtable h, String statekey, String inWhat ) {

        // Step 1: ignore references to implicitly defined states

        if ( statekey.equals( "state start" ) || statekey.equals( "state stop" ) )
            return;

        // Step 2: now check if the state has been defined -- otherwise
        //         issue a warning and enter a dummy definition for the state

        if ( h.get( statekey ) == null ) {
            AstNode.warning( arg[0].tok[0], statekey + " in " + inWhat + 
                         " declaration has not yet been defined" );
            h.put( statekey, "unknown layer" );
        }
    }

    public void verifyTransition( Hashtable h, String inWhat ) {
        String trans = "transition " + arg[0].tok[0].tokenName();

        // now check if the transition has been defined -- otherwise
        // issue a warning

        if ( h.get( trans ) == null ) {
            AstNode.warning( arg[0].tok[0], trans + " in " + inWhat + 
                         " declaration has not yet been defined" );
            h.put( trans, "unknown layer" );
        }
    }
}
