1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/wizardforcel-lmpythw-zh

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
ex37.md 6 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
Отправлено 06.03.2025 03:52 f9ec0dd

Упражнение 37: Маленький BASIC

Оригинал: Exercise 37: Little BASIC

Переводчик: Феликс Ли

Лицензия: CC BY-NC-SA 4.0

Гордо использует Google Translate

Теперь вам следует вернуться в мое детство и реализовать интерпретатор BASIC. Нет, я имею в виду не "очень простой базовый интерпретатор". Я говорю о программном языке BASIC. Это один из самых ранних языков программирования, созданный Джоном Кемени и Томасом Куртцом в Дартмутском университете. Эта версия называется DARTMOUTH BASIC, и ее код выглядит следующим образом:

5 LET S = 0
10 MAT INPUT V
20 LET N = NUM
30 IF N = 0 THEN 99
40 FOR I = 1 TO N
45 LET S = S + V(I)
50 NEXT I
60 PRINT S / N
70 GO TO 5
99 END

Числа слева — это фактические строки, которые были введены вручную. Вы сообщаете BASIC каждую строку с номером, а затем просто просите его "перейти" к этой строке для цикла. В более поздних версиях BASIC это стало GOTO, что стало символом эпохи компьютеризации.

Последняя версия BASIC, записанная на странице BASIC в Википедии, которая также отображает долгий процесс эволюции этого языка до все более современной формы. Со временем он вобрал структуры, такие как C и Algol, а затем стал объектно-ориентированным, и сегодня можно найти довольно продвинутые версии BASIC. Если вам нужен современный бесплатный BASIC, обратитесь к Gambas BASIC, доступному по адресу http://gambas.sourceforge.net/en/main.html.## Часто задаваемые вопросы

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

Когда вы будете пробовать это сделать, я рекомендую начать с простых математических операций, печати и отслеживания строковых номеров. После этого попробуйте сделать GOTO работоспособным. Если вы завершите его, вы сможете закончить остальную часть, медленно развивая набор тестовых программ, чтобы гарантировать, что ваш интерпретатор работает правильно. Удачи! Это может занять у вас некоторое время, но это должно быть интересно. Я могу видеть, как сам потратил несколько месяцев над этим, добавляя глупые функции, такие как графики, чтобы я мог создавать все эти глупые маленькие программы, когда был ребенком. Я написал так много кода на BASIC, что вычисление номеров строк полностью сбило меня с толку. Возможно, именно поэтому мне так нравится Vim.## Исследовательское обучение

Эта задача сложна, но если вам хочется дополнительного вызова, выполните следующие действия:

  • Используйте парсер-генератор, такой как SLY, чтобы создать альтернативный интерпретатор. Как только у вас будет ABNF, это может стать проще, но для языков вроде BASIC это может оказаться более трудной задачей. Вы должны сделать это, чтобы понять.
  • Попробуйте создать версию "структурного BASIC", которая имеет функции, циклы, операторы if и все остальное, что можно найти в старых не-ООП языках программирования, таких как C или Pascal. Это огромная задача, поэтому рекомендую не писать RDP-парсер вручную. Используйте инструменты, такие как SLY, чтобы сгенерировать ваш парсер, и сохраните свое ментальное усилие для более важных вещей.

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/wizardforcel-lmpythw-zh.git
git@api.gitlife.ru:oschina-mirror/wizardforcel-lmpythw-zh.git
oschina-mirror
wizardforcel-lmpythw-zh
wizardforcel-lmpythw-zh
master