At the moment, we have a STRUCTURE1 operator with one head node.
Sometimes, we need to handle multiple cases. We have the following types of verbs:
Intransitive | |
Transitive | |
Ditransitive | |
Factitive - he considered the job a work of art | |
TransInfinitive he wanted John to go away | |
ImplicitTransInfinitive he helped people avoid foreclosure | |
TransParticipial he left the engine running | |
Clausal | |
TransClausal he told John that the bridge was down |
Some verbs belong to several types
He got the engine started - TransParticipial
He got Susan the money Ditransitive
There are two separate paths that can be taken by this symbol. We can have two different pattern structures, but then we dont allow two structures to be built. We could make up a new node TransParticipialDitransitiveVerbPhrase and make it an alternative of both, but these constructs overload the naming.
We can use a WITHPROPERTY operator to look down to the token and see whether it has the other property, but this is expensive and clumsy.
We are already adding properties to the nodes in the parse structure, after the STRUCTURE1 operator has cloned itself. We could do it from the start.
We can take one of two approaches, probably both
STRUCTURE1(TransParticipial, { .
STRUCTURE1(Ditransitive, {
ALLOWED1(TransParticipial, Ditransitive)
We find two structures that match, and that we are allowed to build them both, so we place a set on the top node.
Alternatively, we have
STRUCTURE1({TransParticipial, Ditransitive}, { .., ANDWITH(StartTransParticipial, StartDitransitive)
STRUCTURE1(Ditransitive, { .., NOTWITH(StartTransParticipial, StartDitransitive)
The top node carries a set, and then we allow the context to decide further which is used.