Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   * Copyright The Sett Ltd, 2005 to 2014.
   *
   * Licensed under the Apache License, Version 2.0 (the "License");
   * you may not use this file except in compliance with the License.
   * You may obtain a copy of the License at
   *
   *     http://www.apache.org/licenses/LICENSE-2.0
   *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
 package com.thesett.aima.logic.fol.wam.builtins;
 
 import static com.thesett.aima.logic.fol.wam.compiler.SymbolTableKeys.SYMKEY_PERM_VARS_REMAINING;
Conjunction implements the Prolog conjunction operator ',' that sets up multiple choice points potentially leading to multiple solutions.

CRC Card
Responsibilities Collaborations
Implement the conjunction operator.

Author(s):
Rupert Smith
 
 public class Conjunction extends BaseBuiltIn
 {
    
Creates a cut built-in to implement the specified functor.

Parameters:
functor The functor to implement as a built-in.
defaultBuiltIn The default built in, for standard compilation and interners and symbol tables.
 
     public Conjunction(Functor functorDefaultBuiltIn defaultBuiltIn)
     {
         super(functordefaultBuiltIn);
     }

    
 
     public SizeableLinkedList<WAMInstructioncompileBodyArguments(Functor functorboolean isFirstBody,
         FunctorName clauseNameint bodyNumber)
     {
         SizeableLinkedList<WAMInstructioninstructions;
 
         Term[] expressions = functor.getArguments();
 
         for (int i = 0; i < expressions.lengthi++)
         {
             Functor expression = (Functorexpressions[i];
 
             Integer permVarsRemaining =
                 (Integer.getSymbolTable().get(expression.getSymbolKey(), );
 
             // Select a non-default built-in implementation to compile the functor with, if it is a built-in.
             BuiltIn builtIn;
 
             if (expression instanceof BuiltIn)
             {
                 builtIn = (BuiltInexpression;
             }
             else
             {
                 builtIn = ;
             }
 
             // The 'isFirstBody' parameter is only set to true, when this is the first functor of a rule.
             instructions = builtIn.compileBodyArguments(expressionfalseclauseNamebodyNumber);
             result.addAll(instructions);
 
             // Call the body. The number of permanent variables remaining is specified for environment trimming.
             instructions = builtIn.compileBodyCall(expressionfalsefalsefalse, 0 /*permVarsRemaining*/);
             result.addAll(instructions);
         }
 
         return result;
     }

    
 
     public SizeableLinkedList<WAMInstructioncompileBodyCall(Functor expressionboolean isFirstBody,
         boolean isLastBodyboolean chainRuleint permVarsRemaining)
     {
         return new SizeableLinkedList<WAMInstruction>();
     }

    
Creates a string representation of this functor, mostly used for debugging purposes.

Returns:
A string representation of this functor.
    public String toString()
    {
        return "Conjunction: [ arguments = " + toStringArguments() + " ]";
    }
New to GrepCode? Check out our FAQ X