kinds
name test_val_1
length ten test_val_2
uses
use1 testcase_1
use2 testcase_2
- kinds должен быть корневым узлом, под которым дочерние узлы имеют имя, длину и использование
- name должен иметь еще один дочерний узел, значение которого отделено пробелом после имени, в примере это будет test_val_1
- lengthУзел должен иметь два дочерних узла: десять и test_val_2 в приведенном выше примере
- uses должен иметь два дочерних узла: use1 и use2, которые, в свою очередь, будут иметь дочерние узлы testcase_1 и testcase_2 соответственно.
Я пробовал приведенную ниже грамматику, но все узлы разбросаны вокруг.
grammar Test;
root : LABEL (SPACE VALUE)* NEWLINE+;
LABEL : ('kinds' NEWLINE | 'name' | 'length');
VALUE : [a-zA-Z_]+[a-zA-Z_0-9.;=]*;
SPACE : [ ]+;
NEWLINE : [\r\n]+;
Подробнее здесь: https://stackoverflow.com/questions/790 ... -structure