Exemple #1
0
		// TODO: Rename to DoReductions?
		/// <summary>
		/// 
		/// </summary>
		/// <param name="stack"></param>
		/// <param name="label"></param>
		/// <param name="link">; or <see langword="null"/>.</param>
		public void DoLimitedReductions(Frame stack, LabelRef label, Link link)
		{
			#region Contract
			Contract.Requires<ArgumentNullException>(stack != null);
			Contract.Requires<ArgumentNullException>(label != null);
			#endregion

			var production = this.parseTable.Labels[label.Index].Production;

			if (!RecoverModeOk(stack, production))
				return;

			var paths = stack.FindPathsToRoot(production.Arity, link);
			ReduceAllPaths(label, paths);
		}