![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| dAlex |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 208 Регистрация: 3.8.2006 Где: Санкт-Петербург Репутация: нет Всего: 2 |
Проблема такая:
нужно посчитать логическое выражение и проанализировать его, чтобы потом создать XML на его основе. Выражение типа такого: true or a or (not false and true) Все это надо сделать на Яве. Проблема в алгоритме - ясно, что надо создать синтаксическое дерево, но как? Нужно ли переводить такое выражение в префиксную форму? И как вообще все это проще сделать? С явой сталкиваюсь в первый раз, раньше только на С++ писала, а там работу с деревьями писала только вручную Это сообщение отредактировал(а) dAlex - 5.7.2008, 10:11 --------------------
eof() |
|||
|
||||
| rimidal |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 51 Регистрация: 25.9.2007 Репутация: 1 Всего: 1 |
Ну вообще можно обойтись и без всяких деревьев.
Есть такая замечательная вещь как БНФ (Форма Бэкуса—Наура). Вам нужно составить правила в нотации БНФ ну а затем просто сгенерировать код (либо ручками, либо с помощью программы). Лично я пользовался CocoR for Java - преобразует код в нотации БНФ в исходный текст парсера (или интерпритатора - все зависит от задачи), есть даже плагин под Eclipse. Здесь можно поискать другие средства для написания парсера или интерпритатора. |
|||
|
||||
| dAlex |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 208 Регистрация: 3.8.2006 Где: Санкт-Петербург Репутация: нет Всего: 2 |
Написала, используя постфиксную форму записи и стек +)
Есть только одна проблема - с выводом в файл. У меня при создании XML формируется строка, а которой между тегами надо вставить перевод строки. Пишу туда "\n", а в файле вместо перевода строки квадратики +) Что нужно использовать для перевода строки? Построчно в файл выводить не могу, потому что у меня одна длинная строка. Добавлено через 3 минуты и 21 секунду в соседней теме прочитала про \r\n - помогло =) Добавлено через 9 минут и 48 секунд о, а System.getProperty("line.separator") - еще лучше =) --------------------
eof() |
|||
|
||||
| ElKa |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 300 Регистрация: 1.2.2006 Репутация: 2 Всего: 4 |
я использовала JavaCC и JJTree
посмотрите мои последние темы про транслятор |
|||
|
||||
![]()
|
| Правила форума "Java" | |
|
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Java: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |