} // NT_Experiments private static void NT_Experiment() { Experiment e = new Experiment(); for (;;) { switch (Syn.Interpret()) { case 0: return; case 1: Lex.GETidentifierAttr(out name); break; case 2: // SEM e.Name = name; experiments.Add(e); break; case 3: NT_Ingredient(ref e); break; case 4: NT_Ingredient(ref e); break; } // switch } // for } // NT_Experiment
} // Interpret public static bool Parse() { //-----------------------------------|---------------------------------------- Lex.InitLex(); sp = 0; pc = ROOTPC; altRoot = pc; mustRead = true; errDist = MINERRDIST + 1; leaveOrEnter = false; leaveCnt = 0; enterCnt = 0; Sem.StartSem(); return(Errors.NumOfSynErrors() == 0); } // Parse
} // Pop private static void GetNextToken() { for (;;) { Lex.GetToken(); // updates Lex.token if (Lex.token <= LASTTERM) { return; } #if !CONTPRAGMAACTS if (NumOfSynErrors() == 0) #endif Sem.pragmaMethods[Lex.token - LASTTERM - 1](); } // for } // GetNextToken
} // NT_Experiment private static void NT_Ingredient(ref Experiment exp) { for (;;) { switch (Syn.Interpret()) { case 0: return; case 1: Lex.GETidentifierAttr(out name); break; case 2: Lex.GETnumberAttr(out amount); break; case 3: // SEM exp.AddIngredient(new Ingredient(name, amount)); break; } // switch } // for } // NT_Ingredient