2016-10-12 2 views
0

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

+0

Действительно, напишите свой собственный скриптовый язык? Это не для слабонервных. Найдите в Интернете «Теорию проектирования компилятора», а также «Теорию компьютерного языка». Вам нужно написать Lexer, Parser и интерпретатор. В школах это может быть годичный курс. Удачи! –

+0

Голосование для закрытия - слишком широкое. Инструкции для написания языков не могут вписываться в раздел ответов по одному вопросу. На этой теме уже написано 1000 страниц, поиск «Книга компилятора« Ахо », которую часто называют« книгой драконов ». –

ответ

2

В двух словах:

Определить Ваш язык
Вам нужно будет определить все команды и их синтаксис.
После определения их вы можете сгруппировать их по шаблонам синтаксиса.

Дизайн лексер
лексер это часть, которая сканирует вход для элементов языка и преобразует их в лексем. Затем жетоны подаются в Parser.

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

Дизайн Интерпретатор
Переводчик является та часть, которая выполняет выход из Parser.
Вы должны думать об этом как о очень высоком уровне модели компьютера. Например, вам понадобятся переменные, регистры, ввод, вывод, математические инструкции и т. Д.

Сложный интерпретатор - это интерпретатор языка BASIC (или Visual BASIC). Java имеет JVM, который интерпретирует байтовые коды. Есть также переводчики LISP.

Возможно, вы захотите просмотреть исходный код интерпретатора Python, если сможете его получить.

Также ознакомьтесь с исходным кодом для компиляторов GNU и CLanguage.

Составители и переводчики обычно пишутся группами людей (чтобы сократить время разработки). Будьте готовы провести много времени с этим проектом.

+0

37 прошедших лет и считая C++. Мне не хотелось бы видеть, что это за человеческие годы. – user4581301

Смежные вопросы