Форум программистов, компьютерный форум, киберфорум
Наши страницы
Мат. логика и множества
Войти
Регистрация
Восстановить пароль
 
Qazan
213 / 61 / 25
Регистрация: 30.04.2013
Сообщений: 838
Записей в блоге: 10
#1

Формальная грамматика - Логика и множества

01.03.2016, 21:21. Просмотров 315. Ответов 5
Метки нет (Все метки)

Админы перенесите тему, пожалуйста, если я не совсем по адресу

Имею грамматику в БНФ:

http://www.cyberforum.ru/cgi-bin/latex.cgi?<br />
E \to T | E '+' T<br />
<br />
T \to A | T '*' A<br />
<br />
A \to NUMBER | '(' E ')'<br />
Построил по ней иерархию классов.Благополучно строю синтаксическое дерево.
(Считаю значения, вывожу строковые представления. В общем как надо объекты создаются)
А теперь такая проблема.
Как раскрыть скобки ? (Всмысле не folding)

Например : (1 + 2)*(4 + 5) ~ 1*4 + 2*4 + 1*5 + 2*5
Хочется иметь метод : E E::getWithoutParentheses();
которая мне вернет ,древовидную структуру из той же грамматики только без скобок.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.03.2016, 21:21
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Формальная грамматика (Логика и множества):

Формальная арифметика
Доброго времени суток)...задание в общем такое доказать теоремы теории: для...

Формальная система. В тупике
A\supset НеНе A 1. A- гипотеза 2. A\supset (Не A\supset A) Аксиома 1 3. (Не...

Формальная грамматика
Товарищи программисты, помогите написать на С++ программу которая б проверяла...

Формальная грамматика
Пишу программу, проверяющую введенный код на языке Pascal на наличие ошибок....

Формальная грамматика
Всем привет Разработать программное средство, реализующее следующие функции: ...

Формальная грамматика с простыми числами!
Всем привет! Есть задание, я так понял что оно с подвохом уже. Нужно...

5
iifat
2336 / 1491 / 129
Регистрация: 05.06.2011
Сообщений: 4,152
02.03.2016, 02:22 #2
Ну и в чём конкретно проблема?
0
Qazan
213 / 61 / 25
Регистрация: 30.04.2013
Сообщений: 838
Записей в блоге: 10
02.03.2016, 06:41  [ТС] #3
iifat, Допустим есть метод toString();

Это просто , конкатенация того, что есть в под-деревьях :

C++
1
2
3
4
5
6
class AbstractE {
   virtual String toString() = 0;
}
class AbstractA() {
  virtual String toString() = 0;
}
А далее есть объект
C++
1
2
3
4
5
6
7
8
9
10
class ParenthsizedE:
  public AbstarctA
{
   AbstarctE e;
public:
   ParenthsizedE(AbstarctE *_e): e(_e) {}
   virtual String toString() {
      return String("(") + e->toString() + String(")");
   }
}
Тут просто, а в случае с раскрытием скобок ?

Например в том же объекте ParenthsizedE сказать мол, надо раскрыться

Добавлено через 7 минут
Предпологаю, что обьекту хранящему выражение в скобках необходимо передовать уже раскрытое выражение из над-дерева
0
iifat
2336 / 1491 / 129
Регистрация: 05.06.2011
Сообщений: 4,152
06.03.2016, 07:56 #4
Не о том, по-моему, говоришь. Есть две задачи: раскрытие скобок и генерация строки. Смешивать их не стоит. Дело твоё, конечно, но практика порочная.
Генерация строки генерирует строку по дереву. Честно и тупо генерирует.
Раскрытие скобок раскрывает скобки. Преобразует дерево.
1
Qazan
213 / 61 / 25
Регистрация: 30.04.2013
Сообщений: 838
Записей в блоге: 10
06.03.2016, 17:09  [ТС] #5
Цитата Сообщение от iifat Посмотреть сообщение
Не о том, по-моему, говоришь.
да, вы правы
пример явно не в ту степь
мне нужно реструктурировать дерево, ну или возвращать новое но другой структуры.

Получается это у меня уже будет несколько другая грамматика без скобок, а это уже компиляцией попахивает .
Как мне показали в другой теме(я пока не совсем прочувствовал, все суть показанного),
но там все базируется на списке, а именно запоминаются узлы и т.д.

Возможно есть какой-то более общий метод преобразования одной грамматики в другую, более mathematic-based так сказать.
0
iifat
2336 / 1491 / 129
Регистрация: 05.06.2011
Сообщений: 4,152
07.03.2016, 10:20 #6
Цитата Сообщение от Qazan Посмотреть сообщение
мне нужно реструктурировать дерево, ну или возвращать новое но другой структуры
Именно.
Цитата Сообщение от Qazan Посмотреть сообщение
у меня уже будет несколько другая грамматика без скобок, а это уже компиляцией попахивает
Ну почему ж, в данной грамматике вполне можно построить как выражение со скобками, так и без таковых. А компиляцией — разумеется, попахивает. Говоря точнее, это относится к машинно-независимой оптимизации — различные преобразования дерева разбора программы.
Цитата Сообщение от Qazan Посмотреть сообщение
там все базируется на списке, а именно запоминаются узлы
Это уже технические подробности, не имеющие пока отношения к задаче. Тебе нужно выбрать представление для деревьев разбора, сформулировать задачу в терминах выбранного представления и, наконец, решить Только и всего
Цитата Сообщение от Qazan Посмотреть сообщение
Возможно есть какой-то более общий метод преобразования одной грамматики в другую
Не знаю такого и сильно сомневаюсь в существовании.
1
07.03.2016, 10:20
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.03.2016, 10:20
Привет! Вот еще темы с решениями:

Формальная постановка для игры крестики и нолики
Доброго времени суток. Написал игру крестики и нолики размерностью 4х4. Нужно...

Исчисление предикатов первого порядка как формальная система
Друзья, помогите доказать следующие утверждение средствами ФС: Ни один студент...

Формальная информация: новые идеи для различных наук
Опубликованы основы новой науки &quot;Формальной информации&quot;. Всего опубликованы...

КС-грамматика
Необходимо построить контекстно свободную граматику порождающую цепочки вида :...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru