https://github.com/turborium/turboriumbasic
Simple BASIC interpriter
https://github.com/turborium/turboriumbasic
basic clean-architecture clean-code computer-science cpp delphi gdd gdd-methodology ingenieria-informatica interpreter linux-kernel object-pascal pascal programming-language pure-c web3 xplatform
Last synced: 4 months ago
JSON representation
Simple BASIC interpriter
- Host: GitHub
- URL: https://github.com/turborium/turboriumbasic
- Owner: turborium
- License: gpl-3.0
- Created: 2021-11-02T18:03:38.000Z (about 4 years ago)
- Default Branch: main
- Last Pushed: 2024-12-25T17:03:31.000Z (about 1 year ago)
- Last Synced: 2024-12-25T17:23:52.262Z (about 1 year ago)
- Topics: basic, clean-architecture, clean-code, computer-science, cpp, delphi, gdd, gdd-methodology, ingenieria-informatica, interpreter, linux-kernel, object-pascal, pascal, programming-language, pure-c, web3, xplatform
- Language: Pascal
- Homepage:
- Size: 1.99 MB
- Stars: 14
- Watchers: 3
- Forks: 6
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# TurboriumBasic
**Simple BASIC interpriter**

## Введение
Простейший интерпритатор языка BASIC.
Данный поект являеться "чистым" интерпритатором бейсика с нумерованными строками, без какого-либо промежуточного представления.
Поскольку на стримах по его написанию не было особой активности интерпритатор был заброшен на какое-то время, однако, в конечном итоге в один из дней я решил довести проект до MVP. Именно в состоянии вполне рабочего прототипа я выложил этот проект на github.
## Как работать с бейсиком?
В классическом бейсике из 80-х каждая строка программы имеет логический номер, обычно программисты нумеровали строки в числе кратные 10, для удобства вставки строк.
По умолчанию бейсик находиться в непосредственном режиме, что позволяет делать какие-то базовые вещи без написания программы, например посчитать выражение ```PRINT 10\*2```.
Для добавления строки в программу надо перед кодом указать номер строки, например так: ```10 PRINT "HELLO WORLD"```.
Для запуска программы используеться комманда ```RUN```.
Если ваша программа "зациклилась", ее можно остановить комбинацией клавиш ```CTRL+B```.
Для изменеения строки программы достаточно ввсети ее снова под тем же номером.
Для удаления строки достаточно ввести номер удаляемой строки.
Чтобы понять как с этим работать смотрите хайлайт стрима: https://www.youtube.com/watch?v=Vwb4RhI1Qrw
В папке "BASIC" лежит скомпилированная версия для Windows(лучшей ОС).
Для любителей Linux можно, немного изменив код, получить версию для кросплатформенной IDE Lazarus/FreePascal. Да, придеться постараться, если вы любитель данной ОС. С другой стороны - если вы истинный любитель GNU и т.д. вы должны переписать это на C + GCC, дабы не ныть о begin/end в паскале.
### Как запустить?
[Скачать](https://github.com/turborium/turboriumbasic/archive/refs/heads/main.zip) репозиторий, или архив из [Releases](https://github.com/turborium/turboriumbasic/releases), в папке BASIC - лежит уже собранная версия интерпритатора.
Если есть желание "собрать", то надо скачать [Delphi Commynity](https://www.embarcadero.com/products/delphi/starter), открыть проект, нажать на "Run". Готово.
### Как загрузить пример?
1) Запустить "BASIC.EXE"
2) Ввести ```LOAD "<имя файла>"```, например ```load "circle"```
3) По желанию вывести "текст программы" на экран командой ```LIST```
4) Запустить командой ```RUN```
## Примеры кода:
### Цикл FOR
```basic
10 PRINT "*** FOR TEST ***"
20 FOR i=1 TO 5 STEP 0.5
30 PRINT "i = ";i
40 NEXT i
```
### Эффект плазмы
```basic
10 for y=0 to 24-1
20 for x=0 to 60-1
30 val=0.5*sin(1.24*sin(x*0.3+y*0.1)+sin(x*0.02+y*0.37)+3*sin(x*0.15+y*0.08)+1.8*sin(x*0.139+y*0.265))+0.5
100 if val >= 0.0 then if val < 0.25 then print " ";
110 if val >= 0.25 then if val < 0.5 then print ".";
120 if val >= 0.5 then if val < 0.75 then print "*";
130 if val >= 0.75 then if val <= 1 then print "#";
200 next x
210 print
220 next y
```
## Поддержанные фичи:
### В непосредственном режиме
LOAD "\" - загружает программу по имени "\.bas"
SAVE "\" - сохраняет программу с именем "\.bas"
NEW - создать новую программу
LIST - вывести программу на экран. LIST n1-n2 - вывести программу со строчки по номеу n1 по строчку по номер n2
RUN - запустить программу
### Команды BASIC
PRINT - печатает на экране. "строка" - вывод строки, 123 - вывод числа. var1 - вывод значения переменной var1. Можно разделять ";" - нет перехода к следующему столбцу. "," - переход к следующему столбцу при выводе.
INPUT - вводит зачения. INPUT "вопрос"; a,b - ввод значений в переменные a и b, через запятую, с кастомным сообщением пользователю. Если не указать строку ссобщения будет выведено " ?"
Ля, лень дальше писать, смотрите примеры. Ну или для желающих - создайте пулл-реквест с дополнением документации в этом файле.