コード例 #1
0
ファイル: Program.cs プロジェクト: WCoetser/TRL
 static void Main(string[] args)
 {
     try
       {
     Console.Write("Enter first term: ");
     var lhs = GetTerm();
     Console.Write("Enter second term: ");
     var rhs = GetTerm();
     MguCalculation getMgu = new MguCalculation();
     var unifiers = getMgu.GetUnifier(lhs, rhs);
     if (unifiers.Count == 0) Console.WriteLine("Not Unifiable");
     else
     {
       Console.WriteLine(string.Format("Found {0} unifiers",unifiers.Count));
       int i = 0;
       foreach (var unifier in unifiers)
       {
     i++;
     Console.WriteLine();
     Console.WriteLine("Unifier " + i + ":");
     if (unifier.Unifier.Count == 0) Console.WriteLine("Unification succeeded with equal input terms given.");
     else
     {
       foreach (var sub in unifier.Unifier.OrderBy(s => s.Variable.Name))
         Console.WriteLine(sub.ToSourceCode());
     }
       }
     }
       }
       catch (Exception ex)
       {
     Console.WriteLine("Error: " + ex.Message);
       }
       Console.WriteLine();
       Console.WriteLine("Press any key to exit");
       Console.ReadKey();
 }
コード例 #2
0
ファイル: Interpreter.cs プロジェクト: sadeslandes/TRL
        /// <summary>
        /// Creates a new interpreter
        /// </summary>
        public Interpreter(TrsProgramBlock programBlock, List <ITrsNativeFunction> nativeFunctions = null,
                           List <ITrsUnifierCalculation> customUnifiersCalculations = null)
        {
            if (nativeFunctions == null)
            {
                nativeFunctions = new List <ITrsNativeFunction>();
            }
            else
            {
                this.nativeFunctions = nativeFunctions;
            }
            mguCalculation      = new MguCalculation(customUnifiersCalculations);
            this.initialProgram = programBlock;
            var validator = new TrsProgramBlockValidator();

            validator.Validate(this.initialProgram);
            ValidationMessages = new List <InterpreterResultMessage>();
            ValidationMessages.AddRange(validator.ValidationMessages);
            this.hasErrors = ValidationMessages.Where(msg => msg.MessageType == InterpreterMessageType.Error).Count() > 0;
            if (!hasErrors)
            {
                ClassifyInput();
            }
        }
コード例 #3
0
ファイル: Interpreter.cs プロジェクト: WCoetser/TRL
   /// <summary>
   /// Creates a new interpreter
   /// </summary>
   public Interpreter(TrsProgramBlock programBlock, List<ITrsNativeFunction> nativeFunctions = null,
 List<ITrsUnifierCalculation> customUnifiersCalculations = null)
   {
       if (nativeFunctions == null) nativeFunctions = new List<ITrsNativeFunction>();
         else this.nativeFunctions = nativeFunctions;
         mguCalculation = new MguCalculation(customUnifiersCalculations);
         this.initialProgram = programBlock;
         var validator = new TrsProgramBlockValidator();
         validator.Validate(this.initialProgram);
         ValidationMessages = new List<InterpreterResultMessage>();
         ValidationMessages.AddRange(validator.ValidationMessages);
         this.hasErrors = ValidationMessages.Where(msg => msg.MessageType == InterpreterMessageType.Error).Count() > 0;
         if (!hasErrors) ClassifyInput();
   }