Как построить дерево по формату

191
20 мая 2018, 06:50

ВАЖНО!(Задача учебная прошу не выпускать гнев) В общем необходимо написать свой сериализатор объектов. В одну сторону я справился без проблем. То есть есть у меня вот такой класс X

class L {
}
class P {
    int z = 6;
    int g = 8;
    L p = new L();
}
class X {
    int x;
    int y;
    P z;
    public X(int x, int y) {
        z = new P();
        this.x = x;
        this.y = y;
    }
}

Он превращается в

root:X={x:int=3, y:int=4, z:P={z:int=6, g:int=8, p:L={}}}

Я не могу придумать как его распарсить. Лексер я написал. Но вот как написать на мой формат синтаксический анализатор я не знаю. Мозгов не хватает. Моя идея такова Из вот таких элементов создать дерево

class Item {
    public Token type;
    public Token name;
    public Token value;
    public Item(Token name, Token type, Token value){
        this.type  = type;
        this.name  = name;
        this.value = value;
}
var tree = new TreeNode<>(....);

По этому дереву проитерироваться и создать исходный класс через рефлексию

READ ALSO
Как записать данные в Cursor [требует правки]

Как записать данные в Cursor [требует правки]

Записываю в бд дату в формате ддмм

188
Получение данных из строки в Generics Java

Получение данных из строки в Generics Java

Есть ли какая-нибудь возможность создать метод, который превратит строку в необходимое значение нужного типаПредполагаю использовать типы...

223
Вывод кол-ва цифр в массиве java

Вывод кол-ва цифр в массиве java

Программа бросает 2 кости 20 разНужно вывести в одномерном массиве сколько раз выпала каждая сумма (к примеру 1+1-2 3 раза и так до 12)

238
Преобразование примитивных типов в java нагружает процессор?

Преобразование примитивных типов в java нагружает процессор?

Собственно интересно как лучше поступать - создавать переменные с byte или с int, если известно что число никогда не будет больше границ byte;

169