2

голосов
1

ответ
59

Просмотры

Is there a C-like syntax scripting language interpreter for C++?

Я начал давно работать на динамический граф визуализатора, редактор и тестирования алгоритма платформы (графы с узлами и дугами, а не другие виды). Для тестирования алгоритма платформы мне нужно, чтобы пользователь мог написать сценарий или вызвать скрипт из файла, который будет взаимодействовать с графом загруженного в данный момент. Визуализатор будет делать такие вещи, как Высвечи узлов в то время как они посещают алгоритм сценария, добавляя некоторую искусственную задержку для того, чтобы представить себе алгоритм навигации и делать вещи. Сценарии будут также использоваться, во-вторых, чтобы добавить функции третьего лица, которые я мог бы либо сделать доступными, как уже существующих сценариев в папке с программой, или просто интегрируют внутри программы в C ++, как только они проверены и работают. Все мои поиски переводчика, чтобы встроить в моей программе послал меня в Lua; было бы просто немного приятно дополнительная вещь, которую я могу обойтись. Теперь вопрос, есть ли альтернатива Lua с С-подобным синтаксисом, который поддерживает все, что я уже сделал плюс классы и наследование? (Возможность добавления пользовательских «классов», что интерфейс сценариев к программе является обязательным) (я не могу предположить, чтобы пользователь имел полный компилятор Си ++ установлен таким образом, я не могу просто собрать их «сценарий» во время выполнения, как DLL для загрузки и назвать его, хотя я свистеть я мог)
Barnack
1

голосов
2

ответ
378

Просмотры

Отправить изображение как тело запроса, изображение RECIVED с просьбой со стороны

Да я вроде не знал, как ввести название хорошо ... У меня есть сервер узла, который recives изображения с помощью почтовой формы. Затем я хочу, чтобы отправить это изображение в Microsoft видение и ту же службу Google, чтобы Gether информации от обоего, сделать некоторые вещи, и возвращать результат пользователя, получивший доступ к своему серверу. Моя проблема заключается в: Как отправить фактические данные? Это фактический код, который заботится о том, что: Const microsofComputerVision = требуется ( «Microsoft-компьютер-видение»); module.exports = функция (REQ, разреш) {вар файл; если (req.files) {файл = req.files.file; // Все прошло хорошо microsofComputerVision.analyzeImage ({ "ОСР-Apim-Subscription-Key": vision_key, "Content-Type": "многочастному / форм-данных", "тело": file.data.toString (), " 'Изображений / JPG') res.send (file.data); Отправить(); Браузер отображает изображение правильно, что заставило меня думать «file.data» содержит действительный файл (считается, что это типа буфера). Но, видимо, Microsoft не согласен с этим, потому что, когда я отправить запрос компьютерного зрения я получаю следующий ответ: «InvalidImageFormat» Единственные примеры я нашел здесь, и «данные», который используется в этом примере происходит из файла система чтения, не Stright из запроса. Но сохранить файл, чтобы загрузить его, а затем удалить его мне выглядит как ужасный обходной путь, так что я бы предпочел бы знать, в какой форме и как я должен работать на «Файл», что я должен послать его правильно для API, вызов. Edit: если я использую файл. данные (которые я считал наиболее правильным, так как он будет посылать сырое изображение как тело) я получаю сообщение об ошибке, которая говорит, что я должен использовать строку или буфер в качестве контента. Таким образом, очевидно, что file.data не буфер в пути «тело» требует Оо я не понимая, честно. Решено, ошибка была довольно глупо. В «затем» часть, res.write (результат) не принял результат в качестве аргумента. Это произошло, когда я на самом деле используется запрос Corret (file.data который является буфером). Другие возникли ошибки каждый раз, когда я судимое с помощью ToString () на file.data, в том случае, если запрос не был принят. ошибка была довольно глупо. В «затем» часть, res.write (результат) не принял результат в качестве аргумента. Это произошло, когда я на самом деле используется запрос Corret (file.data который является буфером). Другие возникли ошибки каждый раз, когда я судимое с помощью ToString () на file.data, в том случае, если запрос не был принят. ошибка была довольно глупо. В «затем» часть, res.write (результат) не принял результат в качестве аргумента. Это произошло, когда я на самом деле используется запрос Corret (file.data который является буфером). Другие возникли ошибки каждый раз, когда я судимое с помощью ToString () на file.data, в том случае, если запрос не был принят.
Barnack
1

голосов
1

ответ
26

Просмотры

Итератор для 2-х отдельных структур данных

У меня есть класс графа, который имеет два зЬх :: карты в нем; карты являются частными, и я хочу, чтобы пользователь может только перебрать оба карт, не изменяя их. Дело в том, (ну первый пункт я никогда не писал стандартный итератора), они должны выглядеть как есть только одна карта снаружи. так что код, который выглядит следующим образом: для (авто элемента: вещи) {// делать вещи} будет на самом деле сделать это: для (авто элемента: map_1) {} для (авто элемента: map_2) {} Как я управлять шагом между первой картой и второй?
Barnack
1

голосов
1

ответ
129

Просмотры

Попадая в повышающий дух; Ци или X3?

Я делал переводчик для небольшого личного проекта с другом; мы приступили к реализации всех классов и общую структуру, в которой код будет переведен на то выполнить только отложить фактический код парсинга в эти структуры. Теперь мы должны построить синтаксический анализатор, и после некоторого поиска я нашел посты и люди повсюду, говоря о духе Й и дух X3, как если бы они были (я думаю, что они есть) 2 различные способы сделать парсер, но не один говоря разницу, что один является более недавнее, что один я должен начать с. Цель будет, учитывая строку коды, вывод возможных ошибки, и если все уважает грамматику и логику, перевести код в дерево классов мы уже построили. Мы хотели бы, чтобы проверить консистенцию во время синтаксического анализа, например, «вы используете переменную, WASN»
Barnack
1

голосов
0

ответ
46

Просмотры

Встроенный динамик под Windows 10

так как Windows 7 функция «Beep» из Windows API была изменена, чтобы сделать звук, пришедший от аудиоустройства по умолчанию вместо внутреннего громкоговорителю; но выход динамика в материнских платах, что до сих пор она все равно должен быть доступен по старым стандартам. Есть ли способ, чтобы получить доступ к материнской плате непосредственно с программой C ++ работает на Windows 10 машины и «послать» сигнал низкого уровня, чтобы вызвать внутренний динамик? Я ничего такого рода взаимодействий низкого уровня не знаю, так что я хотел бы иметь некоторые «как это работает» после ответа «как это сделать», если есть способ сделать это. Кроме того, если это возможно, с крахом программы в машине, которая не имеет внутренний динамик, это будет иметь неопределенные побочные эффекты или это просто игнорировать? Перед тем как я получить дубликат флага вопрос из этого, я не прошу для обхода, который включает в себя замену окон файлов.
Barnack
1

голосов
2

ответ
57

Просмотры

Will a file be parsed multiple times if i require it multiple times?

I have a .js file which contains a class definition (with the class syntax, not the function one, in case it matters). Then i want to have a folder with multiple files, each of which will be a function that creates a different instance of said class, with different properties, and returns the instance. Of course, the single instance creating file cannot access class information unless each of these files has its own "require("class definition.js");" line. The point is, since i'm going to have hundreds of said instance creating files, will the repeated "require" kill my performance? I dont trust JavaScript, i'm basically scared it will parse and replace the class definition each time "require" appears. Does anyone know if that happens? If it does is there any workaround? Thanks. Relevant code example: class_definition.js class myclass { constructor(a) { this.a = a; } } instantiate_0.js require("class_definition.js"); module.exports = function() { return new myclass(0); } instantiate_1.js require("class_definition.js"); module.exports = function() { return new myclass(1); } test.js var arr = []; for(var i=0; i
Barnack
1

голосов
1

ответ
75

Просмотры

Виртуальные классы как AST узлы с Духом

я работал над переводчиком языка с другом, и мы начали с решением я угадывание было не так мудр: мы сделали все элементы для выполнения первой (практически елка из разных классов); но теперь, глядя на примеры наддува я получаю много путать о том, как объединить два. Я знаю, что начинать с (грамматики), я знаю, что для достижения (экземпляры классов владеющего друг с другом), я не знаю, как добраться до него. Мы начали с выражениями без переменных, поэтому мы рассмотрели примеры калькулятора духа; но я не понимаю, когда для создания экземпляра элементов. Пример выражения элементов: пространство имен ехр {класс оп {частные: общественности: виртуальный двойной Exec (function_scope & фс); }; класс операнд: общественный ор {частное: двойное значение; общественности: операнд (двойное значение); двойная Exec (function_scope & фс); }; класс op_bin: общественный ор {частное: общественное: оп * МР; ор * р-р; op_bin (ор * LL, оп * р-р); ~ Op_bin (); }; Пространство имен бен {класс сумма: общественный op_bin {общественности: сумма (ор * Л.Л., оп * р-р); двойная Exec (function_scope & фс); }; }} Игнорировать EXEC функции, он используется во время выполнения. Например, код 5 + (2 + 1), должен приводить к конечному эквиваленту: новый ехр :: бен :: суммы (новый ехр :: операнда (5), новый ехр :: бен :: сумма (новый ехр :: операнд (2), новый Exp :: операнд (1)) После того, как я понимаю, как это сделать, что я практически сделал. Пространство имен бен {класс сумма: общественный op_bin {общественности: сумма (ор * Л.Л., оп * р-р); двойная Exec (function_scope & фс); }; }} Игнорировать EXEC функции, он используется во время выполнения. Например, код 5 + (2 + 1), должен приводить к конечному эквиваленту: новый ехр :: бен :: суммы (новый ехр :: операнда (5), новый ехр :: бен :: сумма (новый ехр :: операнд (2), новый Exp :: операнд (1)) После того, как я понимаю, как это сделать, что я практически сделал. Пространство имен бен {класс сумма: общественный op_bin {общественности: сумма (ор * Л.Л., оп * р-р); двойная Exec (function_scope & фс); }; }} Игнорировать EXEC функции, он используется во время выполнения. Например, код 5 + (2 + 1), должен приводить к конечному эквиваленту: новый ехр :: бен :: суммы (новый ехр :: операнда (5), новый ехр :: бен :: сумма (новый ехр :: операнд (2), новый Exp :: операнд (1)) После того, как я понимаю, как это сделать, что я практически сделал.
Barnack
0

голосов
1

ответ
21

Просмотры

Declare and define inside namespace - Not sure if it works because it's correct or by accident

CPP файл, который имеет дерево пространств имен. Является ли этот стандарт или он просто работает случайно?
Barnack