|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
|
Дерево разбора12.03.2011, 02:03. Показов 33231. Ответов 34
Вообщем суть - нужно уметь распарсить любую логическую формулу и затем сделать с ней нечто по заданию (курсовик). Спросили у препода как лучше, он сказал, что лучше через дерево...
Ну с деревом вопросов нет... Но вот как распарсить и расставить приоритет у формул - вопрос. Допустим есть некая формула (x&y&z)|t Получается дерево должно выглядеть как. корень - | лево - (x&y&z) право - t Ну и так, далее. Я правильно уловил суть? Вопрос, как расставить так приоритеты, но мне не нужен код, просто некое небольшое объяснение и мысли по этому поводу. Заранее спасибо)
1
|
|
| 12.03.2011, 02:03 | |
|
Ответы с готовыми решениями:
34
Бинарное дерево. Удалить из дерева часть вершин так, чтобы оставшееся дерево стало пирамидой Дано дерево. Распечатать дерево по уровням Ошибка в функции разбора уравнения |
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
|||||||||||||||||||||
| 12.03.2011, 15:21 [ТС] | |||||||||||||||||||||
|
Нашел ошибочку...
Только остается 1 вопрос, который я решить никак не могу... Ну допустим у нас есть дерево и функция insert в нем выглядит след. образом.
3+4*7-5 Имеем при такой вставке __________+ _____3 ______* ___5____- __4 _7 При приоритетах соответственно число - 1, + - 2, * - 3... Следовательно не вариант... Вообщем я немного в ступоре... Что можете подсказать по этому поводу?
0
|
|||||||||||||||||||||
|
бжни
2473 / 1684 / 135
Регистрация: 14.05.2009
Сообщений: 7,162
|
||||||||||||
| 12.03.2011, 16:14 | ||||||||||||
|
Добавлено через 4 минуты если разбор идет слева направо дерево должно получится таким
унарный минус за бортом
1
|
||||||||||||
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
||||||
| 12.03.2011, 19:42 [ТС] | ||||||
|
М... Вот что вышло.
1
|
||||||
| 12.03.2011, 20:49 | |
|
0
|
|
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
|
| 13.03.2011, 01:34 [ТС] | |
|
Кстати, еще вопрос. Под парсинг разных вещей нужно будет переделывать код? Универсальность некая впринципе возможна?
Допустим парсим выражения +-*/ или же &| - отличия минимальные?
0
|
|
|
5058 / 3118 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
|
|
| 13.03.2011, 01:35 | |
|
В принципе, я думаю, да, ведь как-никак & - эквивалент *, а | - эквивалент +.
1
|
|
|
бжни
2473 / 1684 / 135
Регистрация: 14.05.2009
Сообщений: 7,162
|
||
| 13.03.2011, 01:50 | ||
|
эти можно сказать эквивалентные (если + - только оставить), но не эквивалентные грамматике с++ например) вообще прикольно было бы тему по грамматикам замутить
1
|
||
| 13.03.2011, 01:53 | |
|
1
|
|
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
|
| 13.03.2011, 02:00 [ТС] | |
|
alex_x_x, Вообщем лучше все же переписывать я так понимаю, чем пытаться найти корректное и удобное обобщение, быстрее получится переписать...
Про тему по грамматикам - да, было бы очень интересно посмотреть как реализуются разного вида парсеры и создается разного вида грамматика. Не по теме: ЗЫ ты меня про компиляторы позавчера спрашивал, а сам ты пробовал их писать кстати? Просто интересно стало.
0
|
|
|
бжни
2473 / 1684 / 135
Регистрация: 14.05.2009
Сообщений: 7,162
|
||
| 13.03.2011, 02:04 | ||
|
и стековую машину к нему это было небольшой курсовой была тема пишем интерпретатор, но она кажись не была заточена под теорию
1
|
||
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
|
| 13.03.2011, 04:11 [ТС] | |
|
alex_x_x, Ну да... Надо модерам клик кинуть будет... fasked-у например.
0
|
|
|
22 / 22 / 2
Регистрация: 06.12.2010
Сообщений: 125
|
||
| 13.03.2011, 11:31 | ||
|
я про это дофига всего прочитала в своё время. для работы использую ANTLR и про него много знаю. но посматриваю в сторону bison и yacc. будет время - поковыряю и их. ANTLR - это LL-парсер (строит дерево сверху вниз), а бизон и як - LR (строят его снизу вверх). а так, я использовала и спирит, и экспрессив. но это уже медленнее и более ограниченно, чем специализированные генераторы парсеров вроде ANTLR, бизона или яка. бустовские библиотеки хороши для парсинга строк и строковых выражений. а вот для алгоритмов с возвратом они тормозят, а иногда и вовсе невозможно что-то реализовать.
1
|
||
|
623 / 467 / 57
Регистрация: 28.01.2011
Сообщений: 605
|
|
| 13.03.2011, 16:04 | |
|
Если уж заговорили про генераторы, то стоит еще упомянуть еще о двух генераторах парсеров: Accent, генерирующий парсеры Эрли(правда, генерирует не слишком-то оптимальный код, но вроде как работает, да и проект уже давно затух вроде бы) и Elkhound , использующий GLR( обобщенный LR ) алгоритм, работающий хоть и за O(n^3) в худшем случае, как и Эрли, но зато для однозначных грамматик выходит на O(n), где канонический вариант Эрли справляется за O(n^2), что довольно-таки хорошо в плане производительности.
1
|
|
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
||||||||||||||||||||||||||
| 14.03.2011, 03:26 [ТС] | ||||||||||||||||||||||||||
|
Разобрал проект на файлы + разбил нормально функции по классам, чтобы было удобнее разбираться впоследствии.
Код под катом. Tree.h
Token.h
Token.cpp
Sem_Tree.h
Sem_Tree.cpp
3
|
||||||||||||||||||||||||||
|
0 / 0 / 0
Регистрация: 06.11.2020
Сообщений: 4
|
|
| 19.03.2022, 21:48 | |
|
ForEveR,Привет, спасибо полезно очень, как раз сейчас пишу по такой же теме.
0
|
|
| 19.03.2022, 21:48 | |
|
Получить переменные из строки путём её разбора Программа разбора и вычисления значения арифметического выражения Tools для создания диаграм и разбора кода Исходное бинарное дерево превратить в бинарное дерево поиска, при этом сохранив его структуру Напишите программу, которая бы читала дерево в формате (а) и затем печатала бы это дерево в формате (б). Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала.
Ниже прикреплён. . .
|
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F
Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU.
Опрашиваются регистры. . .
|
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка:
Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
|
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо
Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
|
|
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман.
Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
|
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
|
Как у меня протекала болезнь
zorxor 27.08.2026
Здравствуйте, друзья! Эта запись блога предназначена именно для вас - для моих дорогих друзей, которые знали меня лично. Чтобы ответить на вопрос - а что же со мной произошло на самом деле? Я учился. . .
|
Нашел вот забавное видео о измерениях. Лучшее что я видел на эту тему
kumehtar 26.08.2026
ILETXiw9bMQ
Основная суть и тезисы по измерениям:
0D (Нулевое измерение): точка, не имеющая длины, ширины, высоты или объема.
Объект не может перемещаться в 0D.
1D (Первое измерение):. . .
|