2016-04-04 3 views
0

Мне нужно построить правое родительское представление строки из левого вещественного представления. В основном это означает синтаксический анализ ввода String и последующее восстановление правильного вещественного представления. Мне нужно реализовать 2 метода: один, который будет анализировать входные данные, и один, который создает необходимое представление из этого проанализированного ввода. Это часть домашней работы, которую мне нужно сделать в java.Построение дерева из левого столбчатого строкового представления

код, как я хотел бы проверить это:

String s = "A(B1,C)"; 
    Node t = Node.parse (s); 
    String v = t.rightParentheticRepresentation(); 
    System.out.println (s + " ==> " + v); // A(B1,C) ==> (B1,C)A 

Поэтому мне нужно реализовать 2 метода: Node разобрана (строка ы) и Струнный rightParentheticRepresentation()

Я знаю, что в теории у меня есть некоторое представление о том как я должен продолжать делать это, но я изо всех сил пытаюсь реализовать метод синтаксического анализа. Есть ли какие-либо существующие реализации, которые я мог бы использовать? Любой намек на реализацию подхода очень приветствуется, или если кто-то знает хороший учебник по созданию деревьев из строкового представления.

+0

@tllsdv проверить это [ссылка] (http://enos.itcollege.ee/~ylari/I231/Node.java) это может помочь – egima

ответ

0

Сначала вы должны получить представление о структуре данных, которую хотите построить. В основном здесь вам нужно дерево, где каждый узел соответствует содержимому внутри некоторой скобки (исходный парентит неявный - '(' A (B1, C) ')' - в вашем примере).

Для метода синтаксического анализа: прочитайте входной символ String char. Всякий раз, когда вы встречаете открывающую скобку '(' вы создаете дочерний узел для текущего узла и меняете текущий на новый узел, затем начинайте заполнять его. Когда вы встречаете закрывающуюся скобку ')', вы завершаете текущий узел и возвращаетесь к его родительскому элементу ,

Смежные вопросы