import java.util.Hashtable; import java.util.Vector; import Jakarta.util.FixDosOutputStream; import java.io.*; public class TransitionDecl { public void reduce2java( AstProperties props ) { String transitionName; String startName; String endName; transInfo e, e1; stateInfo s, endState = null, startState = null; int i; boolean refining_transition; refining_transition = false; transitionName = arg[0].tok[0].tokenName(); if ( arg[1] instanceof SmSName ) startName = arg[1].arg[0].tok[0].tokenName(); // a real name else startName = arg[1].tok[0].tokenName(); // the "*" name endName = arg[2].tok[0].tokenName(); e = new transInfo( transitionName, startName, endName ); e1 = ( transInfo ) kernelConstants.globals().sm4vars.Sm.TransCont.find( e ); if ( e1 != null ) { // transition exists - cannot redefine transition AstNode.fatalError( tok[0], Utility.SourceName()+ "duplicate transition declaration " + transitionName ); } else { kernelConstants.globals().sm4vars.Sm.TransCont.add( e ); if ( !startName.equals( "*" ) ) startState = stateInfo.verifyStateName( startName, "transition declaration " + transitionName, tok[0] ); endState = stateInfo.verifyStateName( endName, "transition declaration " + transitionName, tok[0] ); } e.condition_ast = ( AST_Exp ) arg[3]; e.action_ast = ( AST_Stmt ) arg[4].arg[0].arg[0]; } }