Форум программистов, компьютерный форум, киберфорум
nekit270
Войти
Регистрация
Восстановить пароль
Добро пожаловать, здесь я программирую бессмысленно и беспощадно
Рейтинг: 1.00. Голосов: 2.

ExBAT - расширенная версия Batch

Запись от nekit270 размещена 17.09.2023 в 23:35
Метки bat, cmd, exbat, windows

Мне тут нечем заняться было, и я решил написать на C# расширение bat-языка, которое компилируется в обычный bat-файл.

1. Работа с компилятором

1.1. Компиляция
Код:
exbat.exe --compile source.exb output.bat
1.2. Запуск (компиляция во временный файл, его запуск и последующее удаление)
Код:
exbat.exe --run source.exb
2. Синтаксис ExBAT

2.1. Комментарии

В качестве символов начала комментария допустимы:
  • # (bash-style)
  • // (c-style)
  • :: и rem (из Batch)

Пример:
Windows Batch file
1
2
3
4
# Комментарий
// Тоже комментарий
:: Снова комментарий
rem Еще один комментарий (а я думал, сова)
2.2. Переменные

Переменные можно использовать с использованием $ (как в bash)

Пример:
Windows Batch file
1
2
3
4
set MYVAR=5
echo %MYVAR%
echo !MYVAR!
echo $MYVAR
2.3. Функции

В ExBAT можно определять функции и вызывать их.

Определение функции начинается с оператора
function имя_функции(аргументы, через, запятую)
и заканчивается оператором
end function

В коде функции можно использовать конструкцию $имя_аргумента вместо номера аргумента (%~номер_аргумента)

Вызвать функцию можно с помощью такой конструкции:
имя_функции(аргументы, через, запятую)

Для маркировки, что аргумент - имя переменной, куда функция записывает результат выполнения, можно использовать модификатор out (это никак не влияет на выполнение и создано для того, чтобы код выглядел понятнее):
pow(5, 2, out result)

Пример:
Windows Batch file
1
2
3
4
5
6
function foo(arg1, arg2)
    echo Первый аргумент: $arg1
    echo Второй аргумент: $arg2
end function
 
foo("Строка 1", "Строка 2")
2.4. Вычисление выражений

В ExBAT доступно inline-вычисление математических выражений с помощью оператора calc{выражение}.

Пример:
Windows Batch file
1
2
set /p "number=Введите число: "
echo $number * 2 = calc{$number * 2}
2.5. Оператор if

Оператор if был изменен, чтобы выглядеть более наглядно:

Windows Batch file
1
2
3
4
5
6
7
if(условие_1)
    команды_1
else if(условие_2)
    команды_2
else
    команды_3
end if
В условиях доступны операторы сравнения <, >, <= и >= (вместо lss, gtr, leq и geq)

Пример:
Windows Batch file
1
2
3
4
5
6
7
8
9
10
set /p "number=Введите число: "
if($number < 5)
    echo Число меньше 5
else if($number < 10)
    echo Число меньше 10, но больше 5
else if($number < 20)
    echo Число меньше 20, но больше 10
else
    echo Число больше 20
end if
2.6. Подавление вывода

Для подавления вывода в ExBAT можно использовать следующие операторы:
  • noout(команда) - подавление вывода в stdout (аналогично команда > nul)
  • noerror(команда) - подавление вывода в stderr (аналогично команда 2> nul)
  • quiet(команда) - подавление всего вывода (аналогично команда > nul 2>nul)

2.7. Макроподстановки

Можно использовать макроподстановки с помощью оператора define(имя, значение).

Пример:
Windows Batch file
1
2
3
4
define(VERSION, 1.4)
 
# Выведет "1.4"
echo VERSION
2.8. Подключение библиотек

Оператор include(имя_библиотеки) позволяет подключать к ExBAT-скрипту библиотеки.
Пока их можно подключить только из [путь_к_компилятору]\lib, но планируется добавление возможности подключать их из любого места.

Пример:
Windows Batch file
1
2
3
4
5
# math - одна из библиотек, поставляемых вместе с компилятором
include(math)
 
pow(5, 2, out result)
echo $result
Про стандартные библиотеки статья (или даже несколько?) будет написана в ближайшее время, я оставлю здесь ссылку.

3. Ссылки на скачивание
P.S. Что думаете, у данного инструмента есть смысл и шанс выжить? Пишите в комментариях.
Размещено в Без категории
Показов 1146 Комментарии 6
Всего комментариев 6
Комментарии
  1. Старый комментарий
    Аватар для AlexProgramm
    Вот это да! Новый язык!
    Запись от AlexProgramm размещена 18.09.2023 в 10:05 AlexProgramm вне форума
  2. Старый комментарий
    Аватар для AlexProgramm
    Цитата:
    Мне тут нечем заняться было
    А когда есть, чем заняться, вы наверное операционные системы пишите?
    Запись от AlexProgramm размещена 18.09.2023 в 11:36 AlexProgramm вне форума
  3. Старый комментарий
    Аватар для nekit270
    Цитата:
    Сообщение от AlexProgramm Просмотреть комментарий
    А когда есть, чем заняться, вы наверное операционные системы пишите?
    пробовал тыкать Cosmos, но как-то не пошло. А так я большую часть программ пишу от нечего делать, но некоторые оказываются полезными, а некоторые - нет
    Запись от nekit270 размещена 18.09.2023 в 12:19 nekit270 вне форума
  4. Старый комментарий
    Аватар для nekit270
    Цитата:
    Сообщение от AlexProgramm Просмотреть комментарий
    Вот это да! Новый язык!
    не думаю, что это можно назвать новым языком. скорее просто расширение bat, и парочка библиотек. ничего из того, что нельзя сделать на batch, нельзя сделать и на exbat, это просто "синтаксический сахар"
    Запись от nekit270 размещена 18.09.2023 в 12:21 nekit270 вне форума
  5. Старый комментарий
    Аватар для AlexProgramm
    Ну надеюсь этот программный продукт попадет в число полезных!
    Запись от AlexProgramm размещена 18.09.2023 в 13:36 AlexProgramm вне форума
  6. Старый комментарий
    Аватар для nekit270
    Цитата:
    Сообщение от AlexProgramm Просмотреть комментарий
    Ну надеюсь этот программный продукт попадет в число полезных!
    тоже надеюсь. вопрос в том, будет его кто-нибудь использовать или нет
    Запись от nekit270 размещена 18.09.2023 в 15:53 nekit270 вне форума
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru