예제 #1
0
 public ArmadaSymbolTable(Program i_prog, ArmadaStructs i_structs)
 {
     prog            = i_prog;
     globalVariables = new ArmadaGlobalVariableSymbolTable();
     localVariables  = new ArmadaMethodLocalVariableSymbolTable();
     defaultClass    = null;
     if (i_structs == null)
     {
         structs = new ArmadaStructs(null);
     }
     else
     {
         structs = i_structs;
     }
     threadRoutines = new HashSet <string> {
         "main"
     };
     functionNames             = new List <string> {
     };
     nextRoutines              = new List <NextRoutine>();
     nextRoutineConstructors   = new List <NextRoutineConstructor>();
     allMethodsInfo            = new AllMethodsInfo(prog);
     tauNextRoutineConstructor = null;
     methodAndLabelToPCMap     = new Dictionary <string, ArmadaPC>();
     pcToLabelMap              = new Dictionary <ArmadaPC, string>();
     globalInvariants          = new Dictionary <string, GlobalInvariantInfo>();
     yieldPredicates           = new Dictionary <string, YieldPredicateInfo>();
     universalStepConstraints  = new Dictionary <string, UniversalStepConstraintInfo>();
 }
예제 #2
0
 public void AddNextRoutineConstructor(NextRoutineConstructor nrc)
 {
     nextRoutineConstructors.Add(nrc);
 }