Как написать скриптовый язык с помощью C? [закрыто]

Как написать скриптовый язык на C? Есть идеи? Links?

8
задан user432213 26 August 2010 в 07:40
поделиться

6 ответов

Вы можете ознакомиться с книгой "Среда программирования UNIX"


(источник: bell-labs.com)

В В конце книги и почти в последней главе авторы написали небольшой интерпретатор на C с достаточной и подробной информацией шаг за шагом. Очень интересно и очень легко следовать.

Исходный код этого интерпретатора находится здесь

5
ответ дан 3 November 2019 в 13:35
поделиться

Вы имеете в виду, как написать язык, который интерпретируется на C?

Если да, вам следует проверить Википедию и другие источники по следующим темам:

  • Лексический Анализ (преобразование исходного кода в токены, такие как ключевые слова, целые/плавающие литералы, строковые литералы и т. д.)
  • Синтаксический анализ (проверка этих токенов на соответствие предопределенной, обычно контекстно-независимой грамматике, чтобы убедиться, что программа синтаксически корректна)
  • Синтаксические деревья (обычно строятся во время разбора; создают промежуточное представление дерева, которое можно просмотреть, чтобы выполнить код)
  • Таблицы символов (в основном, как искать имена переменных)
  • Оптимизация глазка (если вы хотите, чтобы ваш код работал быстрее, в обмен на занимает больше времени на этапе перед выполнением)

Это намного больше работы, чем вы думаете... Приятного чтения!

16
ответ дан 3 November 2019 в 13:35
поделиться

Почему бы не взглянуть на C-код для (простого) языка сценариев? Может Луа? (ссылка )

Возможно, вам также следует прочитать что-нибудь о генераторах парсеров, которые являются первым строительным блоком, который ваша программа может интерпретировать на языке. Второй блок - это фактически делать то, что анализировалось (иногда вы можете интегрировать это в анализатор, он может выполнять функции обратного вызова для каждого токена/каждой анализируемой структуры). Могут помочь простые примеры, такие как разбор и выполнение математических формул.

4
ответ дан 3 November 2019 в 13:35
поделиться

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

Кроме того, вы, по сути, захотите изучить пару книг о компиляторах и интерпретаторах. Если вам нужен путь с меньшим сопротивлением, и вы делаете это, чтобы понять концепции, а не то, что вам нужно для занятий или рабочих проектов, рассмотрите альтернативу C, такую ​​​​как Lisp или Scheme, которая облегчит сборку. на небольших экспериментах. Или узнайте о создании DSL на языках, упрощающих это (Boo, Groovy).

3
ответ дан 3 November 2019 в 13:35
поделиться

Я бы посоветовал начать с парсера рекурсивного спуска.

Если вам это нравится, то вам определенно следует приобрести копию Dragonbook.

1
ответ дан 3 November 2019 в 13:35
поделиться

Это действительно общий вопрос, и, скорее всего, он будет закрыт, но эй, я мог бы опубликовать этот ответ: Lua ( http://www.lua.org ) — очень популярный язык сценариев, написанный на C. Вы можете использовать его для вдохновения.

1
ответ дан 3 November 2019 в 13:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: