Solution
You have to add an extra argument to the following predicates:
np
, vp
, det
,
n
, pn
, pro
,
vi
, vt
, and any other verb types that
you might have.
Subject NPs should agree in their number with the verb phrase.
s --> np(subj,NUM), vp(NUM).Determiner should agree in their number with the noun. The number of the noun determines the number of the NP.
np(_,NUM) --> det(NUM), n(NUM).The number of the proper name or pronoun determines the number of the NP.
np(_,NUM) --> pn(NUM). np(CASE,NUM) --> pro(CASE,NUM).This is a new rule. Plural nouns can occur without determiner.
np(_,pl) --> n(pl).The number of the VP is determined by the number of the verb. The number of object NPs is independent of the number of the verb.
vp(NUM) --> vi(NUM). vp(NUM) --> vt(NUM), np(obj,_).The determiner a can only be used for singular noun phrases, the determiner the can be used for singular as well as for plural noun phrases.
det(sing) --> [a]. det(_) --> [the].The lexicon specifies whether a noun, proper name or pronoun is singular, plural, or both (as, for example, yakuza).
n(sing) --> [bride]. n(pl) --> [brides]. n(sing) --> [nurse]. n(pl) --> [nurses]. n(_) --> [yakuza]. n(sing) --> [whiskey]. pn(sing) --> [bill]. pn(sing) --> [gogo]. pro(subj,sing) --> [he]. pro(subj,sing) --> [she]. pro(obj,sing) --> [him]. pro(obj,sing) --> [her]. pro(subj,pl) --> [they]. pro(obj,pl) --> [them].The lexicon also specifies whether a verb form is singular or plural.
vi(sing) --> [whistles]. vi(pl) --> [whistle]. vi(sing) --> [fights]. vi(pl) --> [fight]. vt(sing) --> [drinks]. vt(pl) --> [drink]. vt(sing) --> [kills]. vt(pl) --> [kill].