|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
|
Дерево разбора12.03.2011, 02:03. Показов 32724. Ответов 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 | |
|
Помогаю со студенческими работами здесь
35
Получить переменные из строки путём её разбора Программа разбора и вычисления значения арифметического выражения Tools для создания диаграм и разбора кода Исходное бинарное дерево превратить в бинарное дерево поиска, при этом сохранив его структуру Напишите программу, которая бы читала дерево в формате (а) и затем печатала бы это дерево в формате (б). Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2.
При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
|
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут.
https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc
Первый документ красиво выглядит, но без схемы.
Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
|
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере".
Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
|
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти".
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2.
В качестве источника данных. . .
|
|
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер
Написал заготовку:
dotnet new console --aot -o UrlHandler
var items = args. Split(":");
var tag = items;
var id = items;
var executable = args;. . .
|
Отправка уведомления на почту при создании или изменении элементов справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере типового справочника "Склады" в конфигурации БП3.
Перед реализацией необходимо выполнить настройку системной учетной записи электронной. . .
|
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений.
9TO2GP2bpX4
a42b81fb172ffc12ca589c7898261ccb/
https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/
Слева синяя линия -. . .
|
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. .
Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
|