Parsowanie S-Expressions

wpadłem nato pytanie dzisiaj wcześniej:

Przykładowe dane wejściowe: Wpadłem na Joe i Jill, a potem poszliśmy na zakupy
Przykładowy wynik: [TOP [S [S [NP [PRP I]] [VP [VBD ran] [PP [IN w] [NP [NNP Joe] [CC i] [NNP Jill]]]]] [CC i] [S [ ADVP [RB to]] [NP [PRP my]] [VP [VBD poszedł] [NP [NN shopping]]]]]]

Miałem zamiar zasugerować po prostu parsowanie oczekiwanego wyjścia (jak wygląda to jako wyrażenie-s) do obiektu (w naszym przypadku drzewa), a następnie użycie prostych metod LINQ do przetworzenia. Jednak ku mojemu zaskoczeniu nie udało mi się znaleźć parsera wyrażenia C # s.

Jedyną rzeczą, o której mogłem pomyśleć, jest użycie Clojure do parsowania, ponieważ kompiluje się do clr, ale nie jestem pewien, czy to dobre rozwiązanie.

Przy okazji, nie mam nic przeciwko odpowiedzi na wyjście typudynamic. Tylko odpowiedzi, które tu znalazłem, dotyczyły deserializacji do określonego schematu.

Podsumowując moje pytanie:Muszę deserializować wyrażenia s w C # (serializacja byłaby przyjemna dla przyszłych czytelników tego pytania)

questionAnswers(2)

yourAnswerToTheQuestion