Форум программистов, компьютерный форум, киберфорум
Visual Basic .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 5.00/11: Рейтинг темы: голосов - 11, средняя оценка - 5.00
 Аватар для RadioHam433
-15 / 3 / 0
Регистрация: 17.12.2015
Сообщений: 296

Интерпретатор условий

26.06.2017, 06:58. Показов 2294. Ответов 22
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Хай товарищи! А если ли готовые решения для интерпретации условий типа:

If улс1=5 and улс2 <> "ерк" or усл3 = false then
выход = true 'необязательно переменная.
else
выход = false
end if
А на выход загрузим строку скажем:

усл1=0|усл="атг"|усл2=false|
В таком случае на выходе я должен получить либо прост истина или лож в зависимости от условий либо переменную которая в которой будет индекс условий, там могут быть и ветки elseif и Select Case. Цикл будет не лишним но не обязательным.
Лучше конечно без объявления переменных там меньше кода, но хотя это не проблема. Может даже у студии есть готовые решения. Конечно можно и написать но зачем если есть, да и там оптимизация будет лучше, да и тратить время на разработку что уже разработано.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
26.06.2017, 06:58
Ответы с готовыми решениями:

Множество условий
Всем привет. Пожалуйста, подскажите как быть! Есть условия, которые программа должна обязательно выполнить, если checkBox1.checked =...

Интерпретатор Е сетей
Народ надо сделать интерпретатор Е-сетей подскажите что-нибудь по теме. А то у меня смутные догадки по этой теме:)

Компилятор и интерпретатор на C#
Привет. Может привести пример книг по компиляторам и интерпретаторам на c#. Заранее спасибо!

22
Эксперт .NET
 Аватар для Usaga
14299 / 9384 / 1353
Регистрация: 21.01.2016
Сообщений: 35,380
26.06.2017, 07:02
RadioHam433, вам нужно работать с Roslyn: вариант А, Б ну и так далее. По фразе "Roslyn" много чего можно найти.
1
 Аватар для RadioHam433
-15 / 3 / 0
Регистрация: 17.12.2015
Сообщений: 296
26.06.2017, 20:53  [ТС]
Не совсем не в тему. Какие нафиг "Roslyn" это вообще что такое? Мне нужен интерпретатор условий который можно легко заюзать в проекте на vb.net и всё.
Я уверен что такое написано уже ни раз! Но вот нужно это тому тому кто работает с интеллектуальными системами. В том же php аналогичная система код пишется в документ и выполняется при обращении. У меня задача еще проще на порядок, нужно лишь условия обрабатывать, можно написать это не проблема просто жалко время.
0
Эксперт .NET
 Аватар для Usaga
14299 / 9384 / 1353
Регистрация: 21.01.2016
Сообщений: 35,380
27.06.2017, 03:11
RadioHam433, для .NET нет интерпретаторов, потому, что есть прямой доступ к компилятору - Roslyn. Он тебе твою строку и скомпилирует. Неужели погуглить по слову Roslyn такая нереальная задача, что надо переспрашивать?
0
 Аватар для RadioHam433
-15 / 3 / 0
Регистрация: 17.12.2015
Сообщений: 296
28.06.2017, 23:38  [ТС]
Он тебе твою строку и скомпилирует
Как и что? Как можно компилировать условия? Зачем компилировать? Что компилировать уже все скомпилировано.
Чёта гонишь ты мне.
Потому я и просил проходить мимо тех кто не в теме.
0
Эксперт .NET
 Аватар для Usaga
14299 / 9384 / 1353
Регистрация: 21.01.2016
Сообщений: 35,380
29.06.2017, 04:05
RadioHam433, умерь свой юношеский пыл, молодой человек.

Если у тебя на руках строка текста, которую тебе захотелось интерпретировать, то рослин для этого подходит более чем. Он позволит откомпировать строку с выражением и выполнить её. Собственно, это единственное, с чем ассоциируется слово «интерпретация». Если же у тебя что-то другое, то рекомендую сделать над собой усилие и нормально поставить вопрос.
3
 Аватар для RadioHam433
-15 / 3 / 0
Регистрация: 17.12.2015
Сообщений: 296
29.06.2017, 21:35  [ТС]
А что выполнять то? Но если ты считаешь что ты понял то скажи что выполнять он будет?

Я вот смог написать интерпретатор который не чего не компилирует, просто время не хотел время тратить на написании подобного, да и затраты времени будет больше как там оптимизация лучше будет чем у написанного на скорую. Сейчас нельзя много разных условий написать.
0
Эксперт .NET
 Аватар для Usaga
14299 / 9384 / 1353
Регистрация: 21.01.2016
Сообщений: 35,380
30.06.2017, 06:58
RadioHam433, рослин скомпилирует исходный код в строке, что ты ему подсунешь. Что будет в этой строке зависит о тебя: это может быть несколько IF, как в твоём вопросе, а может быть целое WinForms-приложение - ему без разницы, он же компилятор.

Т.е. у тебя есть возможность прямо в коде, во время работы программы генерировать и компилировать программы (и исполнять их) произвольной сложности и размера на C# или VB.NET. Ну или не генерировать, а запрашивать у пользователя.

Цитата Сообщение от RadioHam433 Посмотреть сообщение
Я вот смог написать интерпретатор который не чего не компилирует
Молодец, что скажешь.
0
70 / 60 / 16
Регистрация: 22.10.2012
Сообщений: 351
30.06.2017, 10:52
два человека друг друга не поняли
мне кажется достаточно обычной функции
VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
public function Yslovie(N as integer) as boolean
select case n
case 1
return true
case 2
return false
case 3
return true
case else
return false
end select
end function
в любом месте используй
VB.NET
1
2
If Yslovie(2) = false then
end if
и Yslovie вернет тебе то что надо
писал на быструю руку
0
 Аватар для RadioHam433
-15 / 3 / 0
Регистрация: 17.12.2015
Сообщений: 296
02.07.2017, 20:00  [ТС]
В php тоже каждый пук компилируется?
Но и каков будет результат компиляции скажем? If A=1 then Or B=65 выход = true, вот строка входа (A=5|B=14|) скажем какой будет рультат компиляции? Мой интерпретатор найдёт результат за несколько мс (выход=false получится в данном случае) даже на такой слабой машине. Да мне вообще пофиг как главное просто и быстро.
Я написал уже всё скомпилировано чего еще компилировать?
Да прямо во время работы интерпретирует условия и вернуть результат, не какие программы не компилируются!!! Всё компилируется при сборке файла и точка!!!

Но такой функции недостаточно ясно дело, есть простой интерпретатор для однотипных условий. А мне надо полноценный что бы можно работать с десятками условий. Наверняка всё же есть даже у .net такая возможность. Математические парсеры же есть это тоже самое по факту.
0
02.07.2017, 20:14

Не по теме:

Ребята, лично я ни фига не понимаю суть проблемы%-) Иду мимо :jokingly:

0
02.07.2017, 20:55

Не по теме:

Я тоже ничего не понял

0
Эксперт .NET
 Аватар для Usaga
14299 / 9384 / 1353
Регистрация: 21.01.2016
Сообщений: 35,380
03.07.2017, 03:49
RadioHam433, повторяю последний раз: в .NET нет интерпретатора за полной ненадобностью! В API платформы доступен компилятор, который может компилировать любой произвольный код во время работы программы. И процедуру эту нужно делать только раз, потом можно просто выполнят полученный делегат или сборку, без перекомпиляции. Естественно, исходник можно подправить и пересобрать, всё во время работы приложения, без перезапуска и перекомпиляции самого приложения.

Если для тебя эта простая мысль непостижима, то это твой проблемы. Сиди и пиши свой интерпретатор. Переизобретай колесо.

Добавлено через 16 секунд
RadioHam433, повторяю последний раз: в .NET нет интерпретатора за полной ненадобностью! В API платформы доступен компилятор, который может компилировать любой произвольный код во время работы программы. И процедуру эту нужно делать только раз, потом можно просто выполнят полученный делегат или сборку, без перекомпиляции. Естественно, исходник можно подправить и пересобрать, всё во время работы приложения, без перезапуска и перекомпиляции самого приложения.

Если для тебя эта простая мысль непостижима, то это твой проблемы. Сиди и пиши свой интерпретатор. Переизобретай колесо.
1
 Аватар для RadioHam433
-15 / 3 / 0
Регистрация: 17.12.2015
Сообщений: 296
03.07.2017, 12:41  [ТС]
Да можешь повторять сколько угодно! Как это раз? Есть куча систем скриптовых где явно каждая мелочь не компилируется или всё же компилируется? Да условия вызываться могут сотни раз в секунду и меняться десятки раз, сразу после вызова меняются и снова в обработку.
Колесо? А ты предоставил мне интерпритатор условий? Ты прошёл эту тему стороной тему и было бы тебе счастье!
Я разработал то что не существовало в твоей вселенной кроме Roslyn! Я сверхсветовой аппарат изобрёл а ты мне про колесо.

Как можно компилировать процедуру если она уже скомпилирована? Ты гонишь фигню в чистом виде. Либо ты какой то бототролль! Я извинюсь и съем свой галстук (да хоть 10 я их не ношу) и оплачу счёт какой выставишь если ты мне дашь пример рабочей процедуры обработки условий, мне там хоть руслин хоть руслан хоть сам рамзан.
Я готов заплатить лимон если ты мне предоставишь то что обработав 2 строки условий вернёт результат в виде true или false.
0
1 / 1 / 1
Регистрация: 22.11.2015
Сообщений: 139
03.07.2017, 12:42
Цитата Сообщение от RadioHam433 Посмотреть сообщение
сверхсветовой аппарат изобрёл
Куда летим?)
Зачем вам .Net Пишите свой лексер и парсер в блокнотике.
0
 Аватар для RadioHam433
-15 / 3 / 0
Регистрация: 17.12.2015
Сообщений: 296
03.07.2017, 12:44  [ТС]
А затем что проект существует на vb.net. Да и вообще какое это имеет значение какой язык, это число логика.
Мне нужно как можно более чистый модуль что бы было проще с формированием синтаксиса. В данный момент наша система не восприимчива к ошибкам {инструкций}, и ошибки в одной {инструкции} не как не влияют на другие.
0
Эксперт .NET
 Аватар для Usaga
14299 / 9384 / 1353
Регистрация: 21.01.2016
Сообщений: 35,380
03.07.2017, 12:56
RadioHam433, молодой человек, не накаляйся так)))

Цитата Сообщение от RadioHam433 Посмотреть сообщение
Как можно компилировать процедуру если она уже скомпилирована?
Если "процедура скомпилирована", то интерпретировать в ней нечего. Её уже компилятор интерпретировал в IL-код, а за ним JIT в инструкции процессора. Если "процедура" представлена в виде строки или файла, то она ниразу нивочто не скомпилирована. Строка она и есть строка с точки зрения компилятора.

Если я тебя правильно понял, то ты наваял чудо-код, который разбирает строку и пытается выполнить инструкции, которые в ней находит и понимает, так? Я тебе толкую о том, что этого делать не нужно, а можно отдать строку компилятору, прямо в рантайме, который из неё соберёт тебе DLL-ку или делегат (если там выражение простое), которую уже можно выполнять. И работать это будет (после компиляции) в сотни и тысячи раз быстрее и эффективнее самодельного интерпретатора. И строку с кодом всегда можно изменить и скомпилировать заново. Не нужно писать собственный компилятор, когда настоящий и очень мощный уже встроен в платформу.

По этой же причине ты не найдёшь ни одного интерпретатора, ибо люди не находят нужным писать с нуля балясину, чтобы получить малую часть того, что у них уже есть на руках "изкаробки" и бесплатно.

Добавлено через 3 минуты
Но это всё верно, если ты пытаешься написать\найти интерпретатор VB.NET\С#. Если ты свой язык задумал (пускай и простой), то тут только с нуля писать, заготовок на эту тему - нэма.
0
1 / 1 / 1
Регистрация: 22.11.2015
Сообщений: 139
03.07.2017, 13:59
RadioHam433, вы бототролля отличить не можете. Вам Usaga дело советует.
0
70 / 60 / 16
Регистрация: 22.10.2012
Сообщений: 351
03.07.2017, 14:15
то ли я дебил? то ли афтар на своем языке разговаривает
чем не устраивает самый доступный Visual Studio, который делает ВСЕ, указывает на все ваши ошибки в коде, компилирует то что напишите, создает свои dll классы которые можете перецеплять к готовым приложениям без перекомпиляции (только exe перезапустите)
Автор настолько аггресивен что у меня просто больше нет желания пытаться отвечать на незаданный вопрос
если вы считаете что вопрос задали правильно, то напомню На нормально заданный вопрос на этом форуме отвечают нормально, быстро и качественно
0
03.07.2017, 17:31

Не по теме:

Цитата Сообщение от kritjara Посмотреть сообщение
чем не устраивает самый доступный Visual Studio
Насколько я понял, речь об использовании VB.NET в роли скриптового языка в некоем приложении. Это нормальная практика, ничего такого в этом нет. Другое дело, что автор упорно не хочет понять, что писать интрпретатор (или искать его) нет необходимости, но это его личные проблемы.

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
03.07.2017, 17:31
Помогаю со студенческими работами здесь

Пишу свой интерпретатор
Здравствуйте! Пишу что то вроде интерпретатора со своим синтаксисом и все такое) Нужна помощь в присвоении переменным значений.. Оставляю...

Можно ли на C# написать интерпретатор
Моно ли на C# написать интерпретатор? Например для питона интерпретатор написан на C ибо C быстрый и не зависит от какой-либо платформы....

Интерпретатор простейших команд
Добрый день, уважаемые форумчане! Стоит задача написать простой интерпретатор, принимающий в себя double, int, string и bool с...

Написать интерпретатор Lisp'a
подскажите пожалуйста Добавлено через 54 минуты есть код Лиспа на Лиспе, надо перевести на F#: evall-название нашего интерпретатора ...

Интерпретатор арифметических выражений
Как сделать калькулятор который мог бы вычислять математические выражения. Например, a+b*(i/2-m) Программа должна воспринимать любые...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru