} // 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_Term private static void NT_Fact(out int f) { f = 0; for (;;) { switch (Syn.Interpret()) { case 0: return; case 1: Lex.GETnumberAttr(out f); break; case 2: NT_Expr(out f); break; } // switch } // for } // NT_Fact