Can you come up with a feature grammar that can parse the following good sentences, without parsing any bad ones? Good: She has a dog. She has an animal. She has some dogs. She has some animals. She has some milk. Bad: She has an dog. She has a animal. She has some dog. She has a milk. ===================== Grammar ==================== S -> NP VP NP -> Pronoun NP -> Det[x] Noun[y] VP -> Verb NP x, y satisfy function f(x) = y. Function f is defined as: f(x) = singular countable noun that begins with a consonant sound if x = 'a' f(x) = singular countable noun that begins with a vowel sound if x = 'an' f(x) = plural countable noun OR uncountable noun if x = 'some' ============== Parse Good Sentences ============== Top down parsing "She has a dog." S -> NP VP -> NP(Pronoun) VP(Verb NP) -> NP(Pronoun(She)) VP(Verb(has) NP(Det Noun)) -> NP(Pronoun(She)) VP(Verb(has) NP(Det(a) Noun(dog))) x = 'a', y = 'dog' satisfy the grammar. => S -> NP(Pronoun(She)) VP(Verb(has) NP(Det(a) Noun(dog))) S / \ NP VP | / \ | Vert NP | | / \ | | Det Noun | | | | She has a dog Bottom up parsing "She has some milk." She <- Pronoun She <- NP(Pronoun) has <- Verb some <- Det milk <- Noun x = 'some', y = 'milk' satisfy the grammar, so continue: some milk <- Det Noun some milk <- NP(Det Noun) has some milk <- Verb NP(Det Noun) S -> NP(Pronoun(She)) VP(Verb(has) NP(Det(some) Noun(milk))) S / \ NP VP | / \ | Vert NP | | / \ | | Det Noun | | | | She has some milk ============== Parse Bad Sentences =============== Top down parsing "She has an dog." S -> NP VP -> NP(Pronoun) VP(Verb NP) -> NP(Pronoun(She)) VP(Verb(has) NP(Det Noun)) -> NP(Pronoun(She)) VP(Verb(has) NP(Det(an) Noun(dog))) x = 'an', y = 'dog' fail the grammar. => The given grammar failles to parse "She has an dog" Bottom up parsing "She has a milk." She <- Pronoun She <- NP(Pronoun) has <- Verb some <- Det milk <- Noun x = 'a', y = 'milk' fail the grammar. => The given grammar failles to parse "She has a milk"