|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Разбор и парсер строк
У меня есть строка вида
Код:
"Привет, " + func({name}) + "! " + func2("Абв", "Где") + {test} разберу: "Привет, " - обычная строка, заключенная в кавычки func({name}) - какая-то функция, единственным параметром которой является переменная name (переменные заключены между "{" и "}") "! " - далее опять строка func2("Абв", "Где") - еще функция, у которой 2 параметра. {test} - просто переменная Мне нужно, чтобы на выходе у меня был массив, содержащий все элементы данной строки. [0] - "Привет, " [1] - func({name}) итд.. В чем собственно вопрос.. Здесь в этой строке ничего особо сложного нет - на выходе 5 простых элементов, сложность в том, что элемент может быть такой: func({name} + func2("aaa", "bbb"), "test", func3("abcde")) т.е внутри самой функции параметры тоже имеют элементы.. Задачка у меня построить древовидную структуру разобранной строки строки.. Например, вывести ее в TTreeView.
то есть элементы, если они "сложные" должны будут иметь под-элементы, а функции имеют свои параметры как под-элементы. помогите, пожалуйста Последний раз редактировалось Vidog, 28.12.2009 в 17:37. |
#2
|
|||
|
|||
Считай скобки.
Т.е. идешь по строке. Если находишь откр. скобку - увеличиваешь счетчик скобок на 1. Если находишь закрывающую скобку - уменьшаешь. Если нашел +, то если счетчик = 0, то отделяешь лексему, если нет - идешь дальше. Все отделенные лексемы опять загоняешь в ту же функцию. Ну а как при этом дерево строить - сам разберешься |
#3
|
|||
|
|||
lmikle
Можешь программно построить алгоритм, пожалуйста?)
Хотя вроде получается, сейчас покажу что выйдет.. Последний раз редактировалось Vidog, 28.12.2009 в 18:52. |
#4
|
|||
|
|||
Могу.
Но если это буду делать я - то не бесплатно. Если у тебя ошибки поискать - всегда пожалуйста (но это не значит, что я буду отлаживать твою программу ) |