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());
}
}
}