private void DefineNewOperator(int pri, string assoc, PrologCodeTerm op) { // Check operator name string opValue = ""; if (op is PrologCodeConstantAtom) { opValue = ((PrologCodeConstantAtom)op).Value; } else if (op is PrologCodeStringAtom) { opValue = ((PrologCodeStringAtom)op).Value; } else { _errors.Add(new PrologCompilerError("P0011", "Invalid operator definition.", "", false, _scanner.Current.Line, _scanner.Current.Column)); return; } if (opValue == "," || opValue == "','") { _errors.Add(new PrologCompilerError("P0011", "Invalid operator definition.", "", false, _scanner.Current.Line, _scanner.Current.Column)); return; } // Check operator priority if (pri > 0 && pri < 1200) { UpdateOperatorTable(pri, assoc, opValue); } else if (pri == 0) { // Remove an operator _operators.RemoveOperator(opValue); } else { // Error } }