Python y NLTK: ¿Cómo analizar la gramática de las oraciones?

Tengo este código que debe mostrar la estructura sintáctica de la oración de acuerdo con la gramática definida. Sin embargo, está devolviendo un vacío []. ¿Qué me estoy perdiendo o haciendo mal?

import nltk

grammar = nltk.parse_cfg("""
S -> NP VP 
PP -> P NP
NP -> Det N | Det N PP 
VP -> V NP | VP PP
N -> 'Kim' | 'Dana' | 'everyone'
V -> 'arrived' | 'left' |'cheered'
P -> 'or' | 'and'
""")

def main():
    sent = "Kim arrived or Dana left and everyone cheered".split()
    parser = nltk.ChartParser(grammar)
    trees = parser.nbest_parse(sent)
    for tree in trees:
        print tree

if __name__ == '__main__':
    main()

Respuestas a la pregunta(2)

Su respuesta a la pregunta