public void GenerateCodeFromUnit(PrologCodeUnit unit, ArrayList instructions) { _generator = new AMGenerator(instructions); foreach (PrologCodeTerm term in unit.Terms) { ArrayList inst = new ArrayList(); if (term is PrologCodeClause) { GenerateCodeFromClause((PrologCodeClause)term, inst); instructions.AddRange(inst); } else if (term is PrologCodePredicate) { PrologCodeClause c = new PrologCodeClause((PrologCodePredicate)term); GenerateCodeFromClause(c, inst); instructions.AddRange(inst); } else { throw new PrologCompilerException("Unknown term type: " + term.ToString()); } } }