Skip to content
This repository has been archived by the owner on Sep 27, 2024. It is now read-only.
/ easy-basic Public archive

Микро BASIC-подобный компилируемый в Lua язык

Notifications You must be signed in to change notification settings

uriid1/easy-basic

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 

Repository files navigation

easy-basic

У меня было 4-5 часов свободного времени, я сел писать интерпретатора BrinFu*k на Lua, а получился компилятор(скорее даже транспайлер) для вымышленного языка :D

Примеры

Запуск

chmod +x eb
./eb tests/game.eb

Или

chmod +x eb
lua eb tests/game.eb

Описание языка

Переменные

Их всего два типа INT и STRING
Дробных чисел нет.
Строки только через двойные кавычки ""

# Это комментарий
INT my_number = 100
STRING name = "uriid1"

Математические операции

INT a = 10 * 2
a = a / 2
a = a + 2
a = a - 2

Условия

# Операторы
# ==
# >=
# <=
# !=

INT x = 100
IF x < 200 THEN
  PRINTL "x меньше 200"
ENDIF
IF x != 100 THEN
  PRINTL "`x` не равен 100"
ENDIF

# Можно вложенные условия
INT y = 50
IF x == 100 THEN
  IF y == 50 THEN
    PRINTL "`x` равен 100, а `y` равен 50"
  ENDIF
ENDIF

# Можно и так
IF x != y AND y == 50 OR x > 5 THEN
  IF 0 != -1 OR -1 == 0 THEN
    PRINTL "Условие истинно?"
  ENDIF
ENDIF

Циклы

# Цикл можно сделать через оператор GOTO

INT i = 0
::label_loop::
IF i < 5 THEN
  PRINTL i
  i = i + 1
  GOTO label_loop
ENDIF

Доступные команды

# Считывание с клавиатуры
STRING inputs = READ "Введите текст: "

# Перевод строки в число
inputs = TONUMBER inputs

# Проверка, что удалось перевести
IF inputs == 0 THEN
  PRINTL "Не удалось считать значения, либо вы ввели ноль :)"
ENDIF

# Случайное значение от min до max
INT rnd_number = RANDOM 1 100

# Печатает строку без переноса строк
PRINT "Строка"

# Печатает строку с переносом строки \n
PRINTL "Строка с \\n"

About

Микро BASIC-подобный компилируемый в Lua язык

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages