Важная информация
Показано с 1 по 4 из 4

Тема: Интерпретатор ЛИСПа на СТЕПЛЕРе

  1. #1 Интерпретатор ЛИСПа на СТЕПЛЕРе 
    Супер модератор Аватар для Kakos_nonos
    Регистрация
    07.01.2011
    Адрес
    Кубань
    Сообщений
    1,535
    Сказал(а) спасибо
    126
    Поблагодарили 432 раз(а) в 293 сообщениях
    Записей в блоге
    6
    Написал интерпретатор лиспа на степлере.
    Может, это не совсем лисп, так как я с ним не знаком, но должно быть похоже.

    А язык таков: в нём есть функции, которые берут аргументы, и возвращают значения.

    Функции такие:
    Арифметические:
    + возвращает сложение двух аргументов.
    - разность
    * умножение
    / деление
    % остаток от деления
    q корень числа (один аргумент)
    ? случайное число

    Логические:
    = равенство двух чисел
    > больше
    < меньше
    ! отрицание
    | или
    & и

    Другие:
    . остановка программы
    v берёт один аргумент и возвращает значение переменной, которая имеет номер, заданный в аргументе.
    s установить значение переменной. Первый аргумент - номер, второй - значение. Функция возвращает присвоенное значение.
    p напечатать строку. Строка пишется в "".
    l возвращает значение последнего условия.

    Условные конструкции:
    В языке есть две условные конструкции:
    Условный блок:
    {Условие действие, действие, ...}
    Вначале пишется условие, потом действие, которое будет выполняться. Пример:

    {=(v(5) 10) p("Пятая переменная - 10")}

    Чтобы сделать If-Else, надо использовать функцию последнего условия:

    {=(v(5) 10) p("Пятая переменная - 10")}
    {!(l) p("Пятая переменная не 10")}

    Ещё одна конструкция - цикл while:

    {Условие действия}@

    По сути, тот же условный блок, только с собакой на конце.

    Вот такой вот язык. Теперь об истории создания.
    Идея создать такой интерпретатор пришла ко мне в голову ночью, когда мне не спалось.
    Я тогда полностью продумал язык, а также структуру интерпретатора. Как проснулся, начал всё записывать. Написал интерпретатор почти полностью, и забыл, как на степлере читать из файла.
    Сделал простую программку, которая должна выводить на экран текстовой файл. Заставил выводить исходник лиспа, запустил... Что-то ничего не выводится, а размер файла исходника стремительно увеличивается. И до меня дошло, что я перепутал функцию чтения с записью, то есть, я полностью затёр всю свою работу. :angry
    Что делать, пришлось всё писать заново. Переписал на следующий день, и вот, оно работает!
    В архиве сам интерпретатор, хеллоуворлд, игра угадай число и поиска простых чисел.
    Может быть, потом что-то ещё напишу.

    А также грустная новость: Это, наверное, моя последняя программа в этом году. Скоро начнётся школа, там 11 класс, ЕГЭ и всё такое, то есть не до программирования будет
    Вложения
    • Тип файла: rar lisp.rar (1.6 Кб, Просмотров: 7)
    [Ссылки могут видеть только зарегистрированные пользователи. ]
    Ответить с цитированием  
     

  2. Пользователь сказал cпасибо:

    Абадябер (27.08.2012)

  3. #2  
    Профи Аватар для Dimon012
    Регистрация
    09.02.2011
    Адрес
    Владивосток
    Сообщений
    850
    Сказал(а) спасибо
    29
    Поблагодарили 130 раз(а) в 108 сообщениях
    Записей в блоге
    3
    Скажите, а почему у Вас внешние скобки фигурные (в условных функциях, я правильно понял)? Они нарушают основную идею лиспа - "Всё есть список!", потому как программа в лиспе то же список...
    Еще момент в лиспе нет массивов, они ему не нужны, у него есть списки. Это выглядит странно, для привычных к "нормальным языкам" программистов, но это правильно в идеалогии лиспа.
    Последний раз редактировалось Dimon012; 27.08.2012 в 03:27.
    Ответить с цитированием  
     

  4. #3  
    Гуру Аватар для Абадябер
    Регистрация
    09.12.2010
    Адрес
    Беларусь, Минск
    Сообщений
    1,219
    Сказал(а) спасибо
    302
    Поблагодарили 176 раз(а) в 144 сообщениях
    Записей в блоге
    5
    Ну вот, еще один интерпретатор на СТЕПЛЕРе В копилочку-с.
    Скачал, поигрался с интерпретатором, позапускал программки. Язык сам еще не изучал. В целом - весьма интересно получается. Синтаксис у языка довольно заковыристый, отчасти это, видимо, причина используемой функциональной парадигмы.

    Хмм... Я уже очень давно подумывал о интерпретаторе СТЕПЛЕРа на СТЕПЛЕРе. Вот только не до того, чтобы браться за реализацию пока...

    По поводу потери исходника - у меня тоже такое как-то было. И даже не раз. Сразу вспомнил про ошибку в LInt 3.0.1, из за которой он имел привычку удалять файлы с исходниками, в которых обнаруживал ошибки =). А также потерю ресурсного файла с графикой, когда делал свою последнюю демку DOZ - причиной была ошибка в утилите, добавляющей файлы в ресурс. А вывод из этого стоит делать один - просто нужно делать бэкапы всех важных данных, а также исходников текущих проектов. Хотя-бы даже на флешке, воткнутой в компьютер - однажды такая привычка может здорово помочь спасти результаты своих месячных трудов
    А также грустная новость: Это, наверное, моя последняя программа в этом году. Скоро начнётся школа, там 11 класс, ЕГЭ и всё такое, то есть не до программирования будет
    Только не покидайте нас, заходите на форум изредка, время для такого (да и для программирования тоже) можно найти даже с самым жестким графиком. Серьезно.
    Успехов.
    Дружба-магия-радость!
    Ответить с цитированием  
     

  5. Пользователь сказал cпасибо:

    Kakos_nonos (27.08.2012)

  6. #4  
    Супер модератор Аватар для Kakos_nonos
    Регистрация
    07.01.2011
    Адрес
    Кубань
    Сообщений
    1,535
    Сказал(а) спасибо
    126
    Поблагодарили 432 раз(а) в 293 сообщениях
    Записей в блоге
    6
    Dimon012, да это не совсем лисп, так сделаноиз-за того, что я с ним знаком лишь по наслышке. Фигурные скобки я ввёл для упрощения интерпретации. Круглые скобки при загрузке удаляются, интерпретатор обходится без них. А фигурные остаются, так как нужны для условных блоков.

    Абадябер, да, я буду заходить, даже писать что-то, возможно буду. Но крупные проекты, типа МикроСтеплера, начинать не буду.
    [Ссылки могут видеть только зарегистрированные пользователи. ]
    Ответить с цитированием  
     

Информация о теме
Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Интерпретатор CHIP-8 на степлере.
    от Kakos_nonos в разделе Степлер
    Ответов: 3
    Последнее сообщение: 25.01.2012, 00:45
  2. Почтовый клиент на СТЕПЛЕРе
    от Kakos_nonos в разделе Проекты на Степлере
    Ответов: 3
    Последнее сообщение: 24.01.2012, 03:21
  3. LSInt (интерпретатор Абадябера)
    от Абадябер в разделе Степлер
    Ответов: 15
    Последнее сообщение: 19.12.2011, 03:14
  4. Программы на СТЕПЛЕРе
    от Kakos_nonos в разделе Степлер
    Ответов: 4
    Последнее сообщение: 01.12.2011, 04:20
  5. Brainfuck-интерпретатор
    от Kakos_nonos в разделе Разработки на Ассемблере
    Ответов: 5
    Последнее сообщение: 20.04.2011, 15:39
Ваши права
  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •