Создание грамматики для пользовательской файловой структурыJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Создание грамматики для пользовательской файловой структуры

Сообщение Anonymous »

Я хочу создать грамматику ANTLR для файловой структуры ниже

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

kinds
name test_val_1
length ten test_val_2

uses
use1 testcase_1
use2 testcase_2
В приведенном выше примере структура «виды» должна быть корневым узлом в дереве синтаксического анализа. «имя», «длина» и «использование» являются дочерними узлами «видов». первое слово, которое идет после «видов», пока оно не достигнет новой пустой строки, должно быть дочерним узлом «видов».
Одно слово, которое идет после пустой строки, также должно быть дочерний узел «видов», но первое слово каждой строки, идущее после этого единственного слова, пока оно не достигнет пустой строки, должно быть дочерними узлами этого конкретного слова.
например: «use1» и «use2» должны быть быть дочерними узлами «использований» в приведенном выше примере.
для каждой строки слово, идущее после первого слова, разделенного пробелом, должно быть дочерним узлом этого конкретного слова.eg1: 'test_val_1' должен быть дочерним узлом 'name'.
eg2: 'ten' и 'test_val_2' должны быть дочерними узлами узла 'length'.
то же самое к строкам после «использует».
Грамматика, которую я пытаюсь использовать, добавлена ​​ниже, но узлы не вложены, как ожидалось.

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

grammar Test;

test         : entry (NEWLINE+ entry)* NEWLINE* EOF;
entry        : label;
label        : KEY_OR_VALUE (SPACE value)*;
nestedEntry  : label;
value        : KEY_OR_VALUE+;

KEY_OR_VALUE : [a-zA-Z_]+[a-zA-Z_0-9.]*;
SPACE        : [ ]+;
NEWLINE      : [\r\n]+;
Ожидаемый результат дерева разбора следующий:

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

- kinds should be the root node under which the child nodes are name, length and uses
- name should have another child node having the value separated by a space after name, in the example that will be test_val_1
- length node should have two child nodes, that are ten and test_val_2 in the above example
- uses should have two child nodes, that are use1 and use2 which in turn will have the child nodes testcase_1 and testcase_2 respectively.
ниже показано дерево синтаксического анализа, созданное в соответствии с созданной мной грамматикой и структурой входного файла.
[img]https://i .sstatic.net/6cmgkQBM.png[/img]

Как видите, дерево синтаксического анализа работает не так, как ожидалось.
Любые предложения по поводу того, что может быть, нужно исправить мою грамматику?

Подробнее здесь: https://stackoverflow.com/questions/791 ... -structure
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Создание грамматики ANTLR для пользовательской файловой структуры
    Anonymous » » в форуме JAVA
    0 Ответы
    13 Просмотры
    Последнее сообщение Anonymous
  • Создание грамматики ANTLR для пользовательской файловой структуры
    Anonymous » » в форуме JAVA
    0 Ответы
    20 Просмотры
    Последнее сообщение Anonymous
  • Создание грамматики ANTLR для пользовательской файловой структуры [закрыто]
    Anonymous » » в форуме JAVA
    0 Ответы
    12 Просмотры
    Последнее сообщение Anonymous
  • Создание грамматики ANTLR для пользовательской файловой структуры
    Anonymous » » в форуме JAVA
    0 Ответы
    14 Просмотры
    Последнее сообщение Anonymous
  • Создание грамматики для пользовательской файловой структуры
    Anonymous » » в форуме JAVA
    0 Ответы
    14 Просмотры
    Последнее сообщение Anonymous

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