Я строю грамматику для анализа деревьев Ньюика, используя ParseKit для проекта, над которым я работаю, и я дошел до этого. Он основан на грамматике здесь: http://en.wikipedia.org/wiki/Newick_format. Я бы хотел использовать для этого грамматику, а не существующий неуклюжий рекурсивный код, который я сейчас работаю.
Однако я не уверен, как указать узлы имени и длины для учета либо пустых строк, либо обобщенных строк и чисел. Я получил это далеко от примеров и на сайте ParseKit, а также от скимминга книги Bulding Parsers for Java, но что-то упустил. Кто-нибудь может указать мне правильное направление, пожалуйста?
Текущая грамматика:
@start = tree+;
tree = subtree ';' | branch ';';
subtree = leaf | internal;
leaf = name;
internal = '(' branchset ')' name;
branchset = branch | branchset ',' branch;
branch = subtree length;
name = *;
length = * | ':' *
Спасибо!
- Возможный ответ:
Возможно, эти узлы имени и длины будут работать Кто-нибудь может подтвердить?
name = Word | Quoted String;
length = ':' Number;