Вложенное дерево разбора ANTLR для yamlJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Вложенное дерево разбора ANTLR для yaml

Сообщение Anonymous »

Я хочу создать вложенное дерево синтаксического анализа для приведенного ниже файла примера yaml с помощью инструмента ANTLR. Я попробовал приведенную ниже грамматику, но по какой-то причине она неправильно отображает вложенность узлов в соответствии с файлом yaml.
Файл yaml:

Код: Выделить всё

kind: Test
metadata:
name: target
labels:
runnable: target
annotations:
message_value: Hi
id: 1
node_id: 2
hex_id: 3
Я пробовал грамматику ANTLR:

Код: Выделить всё

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' должен иметь два узла ' вид" и "метаданные"
  • Узел "вид" должен иметь только один листовой узел, т.е. "Тест"
  • Узел "метаданные" должен иметь три узла: «имя», «метки» и «аннотация».
  • Узел «имя» должен иметь один листовой узел «цель».
  • узел «метки» должен иметь узел «исполняемый», у которого есть листовой узел «цель».
  • Узел «аннотация» должен иметь четыре узла «message_value», «id», «node_id». ' и 'hex_id', которые снова имеют конечные узлы 'Hi', 1, 2, 3 соответственно.
Как я могу получить это правильное дерево синтаксического анализа .
Есть идеи, в чем может быть проблема в приведенной выше грамматике и как ее решить?

Подробнее здесь: https://stackoverflow.com/questions/790 ... e-for-yaml
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»