Как реализовать C-подобный парсер в Java - PullRequest
0 голосов
/ 14 февраля 2012

Мне нужно разобрать C-подобные скрипты (на самом деле Groovy) на несколько частей, используя "(", ")", "&&" и "||"в качестве разделителей, таких как:

Из строки

(boo == 1 && (foo == null || foo == 0)) 

Мне нужно получить какой-нибудь список вроде этого

["boo == 1", "&&",  ["foo == null", "||", "foo == 0"]  ]
(list of 3 items, third one is a list too)

С условием "foo == 1"выглядит легко, но это также может быть "foo.item (2) .contains ('abcd') == true" (условие может содержать и фигурные скобки), и я застрял с ним.

Что такоелучший способ реализовать такой парсер?Есть ли полезные библиотеки или фреймворки, которые могут мне помочь?А какой из них проще в моем случае?

1 Ответ

1 голос
/ 14 февраля 2012

Лучший и самый чистый способ реализации такого синтаксического анализатора заключается в использовании библиотеки синтаксического анализатора, такой как JavaCC или ANTLR. При этом вы получаете не только список, но даже полное синтаксическое дерево со всей иерархией.

...