powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Как юзеру предоставить возможность выбора вызываемых функций?
20 сообщений из 20, страница 1 из 1
Как юзеру предоставить возможность выбора вызываемых функций?
    #39563440
AlekseySQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Юзер хочет сам вводить исполняемый код. Например, если юзер пишет:
Код: plaintext
1.
(а && b) || !c


,то надо вычислить выражение:
Код: plaintext
1.
(а() && b()) || !c()



Функций a,b,c, ..... может быть очень много, а с помощью логических операций юзер может их очень затейливо соединять в логические конструкции. Другими словами, создать заранее перечень возможных комбинаций не представляется возможным.

Как такое сделать?
...
Рейтинг: 0 / 0
Как юзеру предоставить возможность выбора вызываемых функций?
    #39563442
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tiny C Compiler .
Но геморрой всё равно остаётся - надо (как-то) вызывать скомпилированный код, думать о безопасности и т.д. и т.п.

P.S. Не проще ли взять любой встраиваемый интерпретатор?
...
Рейтинг: 0 / 0
Как юзеру предоставить возможность выбора вызываемых функций?
    #39563443
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
P.S. lli ещё
...
Рейтинг: 0 / 0
Как юзеру предоставить возможность выбора вызываемых функций?
    #39563444
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Как юзеру предоставить возможность выбора вызываемых функций?
    #39563642
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlekseySQLКак такое сделать?

LEXX+YACC+немного кода.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Как юзеру предоставить возможность выбора вызываемых функций?
    #39563660
Фотография CEMb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Как юзеру предоставить возможность выбора вызываемых функций?
    #39563889
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlekseySQLЮзер хочет сам вводить исполняемый код. Например, если юзер пишет:
Код: plaintext
1.
(а && b) || !c


,то надо вычислить выражение:
Код: plaintext
1.
(а() && b()) || !c()



Функций a,b,c, ..... может быть очень много, а с помощью логических операций юзер может их очень затейливо соединять в логические конструкции. Другими словами, создать заранее перечень возможных комбинаций не представляется возможным.

Как такое сделать?

Только интерпретатор писать, либо встраивать в программу уже существующий (Python, Lua)
...
Рейтинг: 0 / 0
Как юзеру предоставить возможность выбора вызываемых функций?
    #39564135
AlekseySQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем спасибо!
Скорее всего введу правило: строка читается и исполняется только слева направо и буду анализировать строку. Другими словами, напишу свой упрощенный интерпретатор.
...
Рейтинг: 0 / 0
Как юзеру предоставить возможность выбора вызываемых функций?
    #39564158
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlekseySQL,

В чём упрощённость?
...
Рейтинг: 0 / 0
Как юзеру предоставить возможность выбора вызываемых функций?
    #39564326
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИзопропилВ чём упрощённость?

На скобки можно забить, на приоритеты операций и прочие мелочи. 2*(2+2) у него будет
выдавать сугубо 6, а 2+2*2 - сугубо 8.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Как юзеру предоставить возможность выбора вызываемых функций?
    #39564548
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovИзопропилВ чём упрощённость?

На скобки можно забить, на приоритеты операций и прочие мелочи. 2*(2+2) у него будет
выдавать сугубо 6, а 2+2*2 - сугубо 8.
Ну нормально. Упрощенная арифметика.
...
Рейтинг: 0 / 0
Как юзеру предоставить возможность выбора вызываемых функций?
    #39564566
Vladimir Baskakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovИзопропилВ чём упрощённость?

На скобки можно забить, на приоритеты операций и прочие мелочи. 2*(2+2) у него будет
выдавать сугубо 6, а 2+2*2 - сугубо 8.

....Скобки зло!
2 2 * 2 + ->6
2 2 + 2 * ->8

....Много скобок - добро!
( * ( + 2 2 ) 2 ) -> 8
( + ( * 2 2 ) 2 ) -> 6
...
Рейтинг: 0 / 0
Как юзеру предоставить возможность выбора вызываемых функций?
    #39564583
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vladimir Baskakov.....Скобки зло!
2 2 * 2 + ->6
2 2 + 2 * ->8

Картина маслом по хлебу: ТС обучает своих пользователей Форту.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Как юзеру предоставить возможность выбора вызываемых функций?
    #39564589
Vladimir Baskakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Форту.
и лиспу.
...
Рейтинг: 0 / 0
Как юзеру предоставить возможность выбора вызываемых функций?
    #39564688
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovVladimir Baskakov.....Скобки зло!
2 2 * 2 + ->6
2 2 + 2 * ->8

Картина маслом по хлебу: ТС обучает своих пользователей Форту.
А чего тебя смущает? Я своих учил неоднократно :)
Впрочем, те программы были предназначены для "индустриальных" задач и работали с ними исключительно инженеры, так что проблем не было.
...
Рейтинг: 0 / 0
Как юзеру предоставить возможность выбора вызываемых функций?
    #39564689
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White OwlА чего тебя смущает?

TS.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Как юзеру предоставить возможность выбора вызываемых функций?
    #39564717
Фотография Lumix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlekseySQLФункций a,b,c, ..... может быть очень много, а с помощью логических операций юзер может их очень затейливо соединять в логические конструкции.

Функций, которые указывает юзер не может быть больше, чем было в С++ коде на момент компиляции.
Если на момент компиляции были функции a(), b() и c(), то юзер не может вызывать функцию d()

AlekseySQLДругими словами, создать заранее перечень возможных комбинаций не представляется возможным.

Значит просто достаточно распарсить выражение юзера и вызывать каждую функцию в соответствие со стратегией вычисления: ленивой или прямой.

AlekseySQLКак такое сделать?

что-то типа такого

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
void* f(str pos)
{
    if (pos == "a") return a();
    if (pos == "b") return b();
    if (pos == "c") return c();
    ...
    if (pos == "n") return n();
    return 1;
}



PS. Возможно поможет вот эта шняга http://doc.qt.io/qt-5/qtscript-index.html
...
Рейтинг: 0 / 0
Как юзеру предоставить возможность выбора вызываемых функций?
    #39564721
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovVladimir Baskakov.....Скобки зло!
2 2 * 2 + ->6
2 2 + 2 * ->8

Картина маслом по хлебу: ТС обучает своих пользователей Форту.

Только зачем? В вики есть готовый исходник как перевести из обычной записи в обратную польскую нотацию
...
Рейтинг: 0 / 0
Как юзеру предоставить возможность выбора вызываемых функций?
    #39564802
Фотография CEMb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White OwlА чего тебя смущает? Я своих учил неоднократно :)Человек это неинтересно, людей можно научить писать программы. А вот научить компьютер читать и писать программы - это дааа!
...
Рейтинг: 0 / 0
Как юзеру предоставить возможность выбора вызываемых функций?
    #39565072
Фотография ну я
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlekseySQL,

Еще как вариант - подключить какой-нибудь готовый движок скриптов, скажем ActiveScripting, ему объявить что хост-программа поддерживает такие-то функции / переменные и пусть юзер пишет на этом скриптовом языке хоть с функциями и циклами.
...
Рейтинг: 0 / 0
20 сообщений из 20, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Как юзеру предоставить возможность выбора вызываемых функций?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]