lojix/wam_prolog/src/main/com/thesett/aima/logic/fol/wam/compiler/InstructionCompiler.java
public void compile(Sentence<Clause> sentence) throws SourceCodeException
    {
        /*log.fine("public WAMCompiledClause compile(Sentence<Term> sentence = " + sentence + "): called");*/

        // Extract the clause to compile from the parsed sentence.
        Clause clause = sentence.getT();

        // Classify the sentence to compile by the different sentence types in the language.
        if (clause.isQuery())
        {
            compileQuery(clause);
        }
        else
        {
            // Initialise a nested symbol table for the current compilation scope, if it has not already been.
            if (scopeTable == null)
            {
                scopeTable = symbolTable.enterScope(scope);
            }

            // Check in the symbol table, if a compiled predicate with name matching the program clause exists, and if
            // not create it.
            SymbolKey predicateKey = scopeTable.getSymbolKey(clause.getHead().getName());
            Collection<Clause> clauseList = (List<Clause>) scopeTable.get(predicateKey, SymbolTableKeys.SYMKEY_PREDICATES);

            if (clauseList == null)
            {
                clauseList = new LinkedList<Clause>();
                scopeTable.put(predicateKey, SymbolTableKeys.SYMKEY_PREDICATES, clauseList);
                predicatesInScope.offer(predicateKey);
            }

            // Add the clause to compile to its parent predicate for compilation at the end of the current scope.
            clauseList.add(clause);
        }
    }
public void compile(Sentence<Clause> sentence) throws SourceCodeException
    {
        /*log.fine("public WAMCompiledClause compile(Sentence<Term> sentence = " + sentence + "): called");*/

        // Extract the clause to compile from the parsed sentence.
        Clause clause = sentence.getT();

        // Classify the sentence to compile by the different sentence types in the language.
        if (clause.isQuery())
        {
            compileQuery(clause);
        }
        else
        {
            // Initialise a nested symbol table for the current compilation scope, if it has not already been.
            if (scopeTable == null)
            {
                scopeTable = symbolTable.enterScope(scope);
            }

            // Check in the symbol table, if a compiled predicate with name matching the program clause exists, and if
            // not create it.
            SymbolKey predicateKey = scopeTable.getSymbolKey(clause.getHead().getName());
            Collection<Clause> clauseList = (List<Clause>) scopeTable.get(predicateKey, SymbolTableKeys.SYMKEY_PREDICATES);

            if (clauseList == null)
            {
                clauseList = new LinkedList<Clause>();
                scopeTable.put(predicateKey, SymbolTableKeys.SYMKEY_PREDICATES, clauseList);
                predicatesInScope.offer(predicateKey);
            }

            // Add the clause to compile to its parent predicate for compilation at the end of the current scope.
            clauseList.add(clause);
        }
    }
public void compile ( Sentence < Clause > sentence ) throws SourceCodeException { /*log.fine("public WAMCompiledClause compile(Sentence<Term> sentence = " + sentence + "): called");*/ // Extract the clause to compile from the parsed sentence. Clause clause = sentence . getT ( ) ; // Classify the sentence to compile by the different sentence types in the language. if ( clause . isQuery ( ) ) { compileQuery ( clause ) ; } else { // Initialise a nested symbol table for the current compilation scope, if it has not already been. if ( scopeTable == null ) { scopeTable = symbolTable . enterScope ( scope ) ; } // Check in the symbol table, if a compiled predicate with name matching the program clause exists, and if // not create it. SymbolKey predicateKey = scopeTable . getSymbolKey ( clause . getHead ( ) . getName ( ) ) ; Collection < Clause > clauseList = ( List < Clause > ) scopeTable . get ( predicateKey , SymbolTableKeys . SYMKEY_PREDICATES ) ; if ( clauseList == null ) { clauseList = new LinkedList < Clause > ( ) ; scopeTable . put ( predicateKey , SymbolTableKeys . SYMKEY_PREDICATES , clauseList ) ; predicatesInScope . offer ( predicateKey ) ; } // Add the clause to compile to its parent predicate for compilation at the end of the current scope. clauseList . add ( clause ) ; } }
{@inheritDoc}

<p/>Compiles a sentence into a binary form, that provides a Java interface into the compiled structure.

<p/>The clausal sentence may be a query, or a program statement. If it is a query, it is compiled immediately. If
it is a clause, it is retained against the predicate which it forms part of, and compiled on the
{@link #endScope()} method is invoked.
{ @inheritDoc }