Формальная грамматика01.03.2016, 21:21. Показов 769. Ответов 5
Метки нет Все метки)
(
Админы перенесите тему, пожалуйста, если я не совсем по адресу
Имею грамматику в БНФ: Построил по ней иерархию классов.Благополучно строю синтаксическое дерево. (Считаю значения, вывожу строковые представления. В общем как надо объекты создаются) А теперь такая проблема. Как раскрыть скобки ? (Всмысле не folding) Например : (1 + 2)*(4 + 5) ~ 1*4 + 2*4 + 1*5 + 2*5 Хочется иметь метод : E E::getWithoutParentheses(); которая мне вернет ,древовидную структуру из той же грамматики только без скобок.
0
|
01.03.2016, 21:21 | |
Ответы с готовыми решениями:
5
Формальная арифметика Формальная система. В тупике Формальная грамматика |
2800 / 1846 / 202
Регистрация: 05.06.2011
Сообщений: 5,358
|
|
02.03.2016, 02:22 | |
Ну и в чём конкретно проблема?
0
|
02.03.2016, 06:41 [ТС] | |||||||||||
iifat, Допустим есть метод toString();
Это просто , конкатенация того, что есть в под-деревьях :
Например в том же объекте ParenthsizedE сказать мол, надо раскрыться Добавлено через 7 минут Предпологаю, что обьекту хранящему выражение в скобках необходимо передовать уже раскрытое выражение из над-дерева
0
|
2800 / 1846 / 202
Регистрация: 05.06.2011
Сообщений: 5,358
|
|
06.03.2016, 07:56 | |
Не о том, по-моему, говоришь. Есть две задачи: раскрытие скобок и генерация строки. Смешивать их не стоит. Дело твоё, конечно, но практика порочная.
Генерация строки генерирует строку по дереву. Честно и тупо генерирует. Раскрытие скобок раскрывает скобки. Преобразует дерево.
1
|
06.03.2016, 17:09 [ТС] | |
да, вы правы
пример явно не в ту степь мне нужно реструктурировать дерево, ну или возвращать новое но другой структуры. Получается это у меня уже будет несколько другая грамматика без скобок, а это уже компиляцией попахивает ![]() Как мне показали в другой теме(я пока не совсем прочувствовал, все суть показанного), но там все базируется на списке, а именно запоминаются узлы и т.д. Возможно есть какой-то более общий метод преобразования одной грамматики в другую, более mathematic-based так сказать. ![]()
0
|
2800 / 1846 / 202
Регистрация: 05.06.2011
Сообщений: 5,358
|
|
07.03.2016, 10:20 | |
Именно.
Ну почему ж, в данной грамматике вполне можно построить как выражение со скобками, так и без таковых. А компиляцией — разумеется, попахивает. Говоря точнее, это относится к машинно-независимой оптимизации — различные преобразования дерева разбора программы.
Это уже технические подробности, не имеющие пока отношения к задаче. Тебе нужно выбрать представление для деревьев разбора, сформулировать задачу в терминах выбранного представления и, наконец, решить
![]() ![]()
1
|
07.03.2016, 10:20 | ||||||
Помогаю со студенческими работами здесь
6
Формальная грамматика Формальная грамматика Формальная грамматика с простыми числами! Формальная постановка для игры крестики и нолики Исчисление предикатов первого порядка как формальная система Искать еще темы с ответами Или воспользуйтесь поиском по форуму:
|
|
Новые блоги и статьи
![]() |
||||
Создаем Telegram бот на TypeScript с grammY
run.dev 05.04.2025
Одна из его самых сильных сторон Telegram — это интеграция ботов прямо в экосистему приложения. В отличие от многих других платформ, он предоставляет разработчикам мощный API, позволяющий создавать. . .
|
Паттерны распределённых транзакций в Event-Driven микросервисах
ArchitectMsa 05.04.2025
Современные программные системы всё чаще проектируются как совокупность взаимодействующих микросервисов. И хотя такой подход даёт множество преимуществ — масштабируемость, гибкость, устойчивость к. . .
|
Работа с объемным DOM в javascript
Htext 04.04.2025
Сегодня прочитал статью тут о расходах памяти в JS, ее утечках и т. п. И вот что вспомнил из своей недавней практики. Может, кому пригодится. Хотя, в той статье об этом тоже есть.
Дело в том, что я. . .
|
Оптимизация производительности Node.js с помощью кластеризации
run.dev 04.04.2025
Масштабирование приложений для обработки тысяч и миллионов запросов — обыденная задача для многих команд. Node. js, благодаря своей асинхронной событийно-ориентированной архитектуре, стал популярной. . .
|
Управление зависимостями в Python с Poetry
py-thonny 04.04.2025
Стандартный инструмент для установки пакетов в Python - pip - прекрасно справляется с базовыми сценариями: установил пакет командой pip install и используешь его. Но что произойдёт, когда разные. . .
|
Мониторинг с Prometheus в PHP
Jason-Webb 04.04.2025
Prometheus выделяется среди других систем мониторинга своим подходом к сбору и хранению метрик. В отличие от New Relic, который использует агентный подход и отправляет данные во внешнее хранилище,. . .
|
Пакет Context в Golang: Управление потоками и ресурсами
golander 04.04.2025
Работа с горутинами в Go часто напоминает управление непослушными детьми - они разбегаются кто куда, делают что хотят и не всегда завершаются вовремя. К счастью, в Go 1. 7 появился пакет context,. . .
|
Контейнеризация React приложений с Docker
Reangularity 03.04.2025
Контейнеризация позволяет упаковать приложение со всеми его зависимостями в автономный контейнер, который можно запустить на любой платформе с установленным Docker. Это существенно упрощает процессы. . .
|
Свой попап в SwiftUI
mobDevWorks 03.04.2025
SwiftUI, как декларативный фреймворк от Apple, предоставляет множество инструментов для создания пользовательских интерфейсов. В нашем распоряжении есть такие API как alerts, popovers, action sheets. . .
|
Антипаттерны микросервисной архитектуры
ArchitectMsa 03.04.2025
Хорошо спроектированная микросервисная система может выдержать испытание временем, оставаясь гибкой, масштабируемой и устойчивой к большинству проблем. Такая архитектура обладает высоким уровнем. . .
|