Рубрики
Без рубрики

Для реализации крошечного языка программирования, часть 0

(Вы устали видеть только сообщения WebDev на этом сайте? По крайней мере, я абсолютно.) Эта сторона… Tagged с помощью программирования, JavaScript, информатики.

(Вы устали видеть только сообщения WebDev на этом сайте? По крайней мере, я абсолютно.)

Эта идея побочного проекта сидела в моем списке дел слишком долго. Теперь, когда я закончил ядро своего генератора Lexer, я хотел бы проверить его на чем -то простом, так что …

Язык

Дизайн по числам это язык образовательного программирования, разработанный профессором MIT Джоном Мадой в конце 1990 -х, который впоследствии породил гораздо более известного Обработка Анкет В отличие от обработки, источник дизайна по числам никогда не был официально выпущен для общественности. У меня нет книги профессора Маэды, поэтому я вынужден иметь некоторые предположения о реальном языковом дизайне, я думаю …

План

Если у вас, ребята, есть какой -либо интерес к чему -либо, кроме просто веб -режима, то есть вероятность, что вы знаете, что обработка (и DBN) находится на Java. Еще в конце 1990 -х годов Java так же заметна, как JavaScript (если не больше) – И да, вы можете встроить их в веб -страницы Так что это был очевидный выбор, но, конечно, в настоящее время, если я действительно хочу, чтобы кто -то использовал мою реализацию для отображения своих программ DBN, мне определенно придется основывать все в браузере JS.

Я потратил немного времени, разобрав план:

  • Я постараюсь выяснить – и решите, если это необходимо – что именно такое синтаксис, грамматика и семантика языка.
  • Я напишу переводчика для языка DBN, притворяясь, что я уже реализовал все фактические подпрограммы рисования. Чтобы проверить вещи, у меня будут заполнители, например, Вместо того, чтобы на самом деле нарисовать линию, я распечатаю это Наритка в консоли.
  • Тогда я действительно внедрим все подпрограммы чертежа, используя Canvas API Анкет
  • И, может быть, я напишу о процессе.

О генераторе Lexer, который я упоминал в начале

Я написал это как часть моего набора инструментов, потому что я не могу понять, как вписать другие инструменты, такие как ANTLR, в мой рабочий процесс (И мой разум не любит читать код и конфигурации других людей)

Основная идея генератора Lexer – это:

  • Лексические структуры большинства языков программирования могут быть описаны с помощью куча режимов.
  • Вы можете «скомпилировать» эту кучу regexps в НЕТЕТЕРЕСМИНСКИЙ ЛИЧНЫЙ АВТОМОТ (NFA) используя Некоторые алгоритмы строительства Анкет

    • Afaik Это, вероятно, то, как (по крайней мере, некоторые) двигатель Regexp на самом деле работает; Структура NFA не может быть явной, но дух будет там.
  • NFA:
    • может быть дополнительно сгенерирован во что -то вроде это Анкет
    • может быть непосредственно выполнено с помощью алгоритма обхода автоматов.
    • или в комплекте с фактическим кодом алгоритма обхода.

Объедините эти факты вместе и вуаля, у вас есть собственный генератор Lexer. На самом деле это не так сложно, как только вы поймете. Нет, я не буду отпускать это, прежде чем завершить все это … DBN – это такой простой язык, который вам, вероятно, не понадобится каким -либо сложным инструментом.

Я прочитал введение, но DBN не является реальным языком программирования (по крайней мере, не таким «реальным», как что -то вроде Python), тогда какой смысл?

Ну, если тебе нужно так сказать …

Оригинал: “https://dev.to/bctnry/to-implement-a-tiny-programming-language-part-0-2fo8”