* @return the <code>NLGElement</code> representing the realised clause.
*/
static NLGElement realise(SyntaxProcessor parent, PhraseElement phrase) {
ListElement realisedElement = null;
NLGFactory phraseFactory = phrase.getFactory();
NLGElement splitVerb = null;
boolean interrogObj = false;
if (phrase != null) {
realisedElement = new ListElement();
NLGElement verbElement = phrase
.getFeatureAsElement(InternalFeature.VERB_PHRASE);
if (verbElement == null) {
verbElement = phrase.getHead();
}
checkSubjectNumberPerson(phrase, verbElement);
checkDiscourseFunction(phrase);
copyFrontModifiers(phrase, verbElement);
addComplementiser(phrase, parent, realisedElement);
addCuePhrase(phrase, parent, realisedElement);
if (phrase.hasFeature(Feature.INTERROGATIVE_TYPE)) {
Object inter = phrase.getFeature(Feature.INTERROGATIVE_TYPE);
interrogObj = InterrogativeType.WHAT_OBJECT.equals(inter)
|| InterrogativeType.WHO_OBJECT.equals(inter);
splitVerb = realiseInterrogative(phrase, parent,
realisedElement, phraseFactory, verbElement);
} else {
PhraseHelper
.realiseList(
parent,
realisedElement,
phrase
.getFeatureAsElementList(InternalFeature.FRONT_MODIFIERS),
DiscourseFunction.FRONT_MODIFIER);
}
addSubjectsToFront(phrase, parent, realisedElement, splitVerb);
NLGElement passiveSplitVerb = addPassiveComplementsNumberPerson(
phrase, parent, realisedElement, verbElement);
if (passiveSplitVerb != null) {
splitVerb = passiveSplitVerb;
}