Как вы создаете компьютер или язык сценариев для приложения?

StackOverflow https://stackoverflow.com/questions/808737

  •  03-07-2019
  •  | 
  •  

Вопрос

Дубликат:

и другие, которые я слишком ленив, чтобы найти прямо сейчас.


Я не спрашиваю, как создать невероятно сложный язык.Я просто хотел понять основы.Я бы использовал c # в качестве базового языка.Я знаю, что это расплывчато.Я надеялся на что-то очень простое, что могло бы направить меня.

Я думаю, что меня больше всего интересует создание скриптовых языков.Например, я вижу людей, которые пишут программы, но при этом у них есть язык сценариев для своего приложения.Я не хочу переписывать язык сценариев Windows.Допустим, у меня есть программа для чтения текстовых файлов, и по какой-то причине мне нужен скриптовый язык для автоматизации чего-либо.Я не уверен, как спросить.

Спасибо.

РЕДАКТИРОВАТЬ - Спасибо за ответы.В данный момент я рассматривал это скорее для того, чтобы научиться, а не для того, чтобы делать.Я бы, вероятно, использовал LUA, но я пытаюсь узнать больше об этой концепции в целом.

Это было полезно?

Решение

Вы могли бы взглянуть на LUA - Я использовал это с большим успехом каждый раз, когда задавал себе вопрос "Как бы я автоматизировал вставить задачу сюда в вставьте одно из моих приложений сюда?"

Редактировать:Вот несколько примеров (взятых из страница ссылок, по общему признанию, громоздкий Lua - Вики) о том, как вы могли бы встроить Lua в свое приложение:

Другие советы

Вы можете использовать существующий язык, такой как Python или Javascript.Например, для Javascript существует http://www.mozilla.org/rhino/ для приложений Java.Поэтому, как правило, вам не нужно на самом деле изобретать новый язык, вы просто предоставляете пользовательский API для языка, который уже существует.

Здесь уместна некоторая терминология.Возможно, вы говорите о язык, специфичный для конкретной предметной области.Два основных способа преобразования текстового файла в "исполняемый": компилятор или переводчик.Интерпретатор лучше подходит для концепции написания сценариев, так как его проще создавать, и он выполняет строки по одной за раз.Обратите внимание, что помимо очень простого языка, написание приличного синтаксического анализатора или приличного интерпретатора нетривиально.Классическая работа с переводчиками - это SICP, но это довольно сложная книга для начинающих.

Скотт Хансельман упомянул в своем последний подкаст hanselminutes это было очень легко сделать, интегрировав IronPython для создания сценариев существующего приложения.

Если вы заинтересованы в том, чтобы конечная цель вашего приложения заключалась в написании сценариев, то вам определенно следует рассмотреть возможность использования существующего языка, а не пытаться написать свой собственный.

Если вас больше интересует образовательный опыт написания собственного скриптового языка, то вам стоит дерзнуть!

сначала вам нужен лексический анализатор, такой как lex, затем синтаксический анализатор, такой как bison.

затем вы можете поработать с синтаксическим анализатором, чтобы создать интерпретатор для "выполнения" результатов синтаксиса.

именно так работают большинство скриптовых языков.

p.s:другой способ - попрактиковаться в написании оболочек - шелл-скрипты (bash, csh или sh) являются сильно упрощенными скриптовыми языками.

Нет необходимости создавать новый язык сценариев, есть несколько, например.Rhino, который является широко используемым встраиваемым javascript (http://www.mozilla.org/rhino/) или Jscript из MS, который вы можете использовать непосредственно в своем продукте.

Я пошел тем путем, о котором вы спрашиваете, - однажды я создал свой собственный интерпретатор scheme.Это сработало действительно хорошо, но мы заново изобрели множество технологий и на самом деле не получили большой дополнительной выгоды.Нам было бы гораздо лучше просто использовать одну из доступных схем.Я бы не стал принимать такое решение снова, даже если бы это было весело и успешно.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top