Я попробовал приведенный ниже файл grammer, но по какой-то причине он неправильно отображает вложенные узлы od в соответствии с файлом yaml.
yaml-файл:
Код: Выделить всё
kind: Test
metadata:
name: target
labels:
runnable: target
annotations:
message_value: Hi
id: 1
node_id: 2
hex_id: 3
Код: Выделить всё
grammar Sample;
yaml: (entry NEWLINE)* EOF;
entry: (keyValue | mapping);
keyValue: SPACE* KEY COLON SPACE* value SPACE* NEWLINE;
mapping: SPACE* KEY COLON SPACE* NEWLINE (nestedEntry)+;
nestedEntry: SPACE* keyValue | mapping;
value: STRING | NUMBER | (NEWLINE SPACE* mapping);
KEY: [a-zA-Z_]+[0-9]*[a-zA-Z_]*;
STRING: [a-zA-Z._]+;
NUMBER: [0-9]+;
NEWLINE: [\r\n]+;
SPACE: [ ] -> skip;
COLON: ':' -> skip;
- Корневой узел 'yaml' должен иметь два узла ' вид" и "метаданные"
- Узел "вид" должен иметь только один листовой узел, т.е. "Тест"
- Узел "метаданные" должен иметь три узла: «имя», «метки» и «аннотация».
- Узел «имя» должен иметь один листовой узел «цель».
- узел 'lables' должен иметь узел 'runnable', у которого есть листовой узел 'target'.
- Узел 'annotation' должен иметь четыре узла 'message_value', 'id', 'node_id ' и 'hex_id', которые снова имеют конечные узлы 'Hi', 1, 2, 3 соответственно.
Есть идеи, в чем может быть проблема, описанная выше в Grammer, и как ее решить?
Подробнее здесь: https://stackoverflow.com/questions/790 ... e-for-yaml
Мобильная версия