Перейти на главную страничку сайта (список статей, файлы для скачивания)
Freestyle Basic Script Language (FBSL) - скриптовый язык, развивающийся с 2001 года энтузиастами Gerome Guillemin, Mehdi Bouaziz и Mike Lobanovsky (а также некоторыми другими). На момент написания этой статьи язык развивается довольно интенсивно, что можно увидеть по его change log'у. Это простой и лёгкий скриптовый язык, готовый к использованию сразу же после установки. Язык позиционируется как "гибридный", поэтому в названии присутствует слово "Freestyle". FBSL имеет ярко выраженный бейсикоподобный синтаксис, регистронезависимый. Отличительные черты языка:
Лицензия позволяет распространять неизменённые копии языка без специального соглашения и оплаты, при условии, что язык распространяется бесплатно и без извлечения прибыли. Скачать последнюю версию языка можно здесь. На момент написания этой статьи дистрибутив языка весит порядка 6.3 Мб. Довольно подробный справочный CHM-файл (англ.), который можно скачать и отдельно, входит в дистрибутив. Также после установки вы найдёте туториал для начинающих в формате PDF (англ.) и свыше 500 примеров скриптов, отсортированных по категориям, в каталогах Samples и Templates.
История создания языка началась в 2001 году. Язык был создан его автором, Gerome Guillemin, как инструмент для собственного использования. Изначально это было несколько инструментов на Cи, призванных заменить batch-скрипты для ряда задач. Затем была создана версия языка 0.1, которая содержала 15 специальных команд. После этого язык был выложен в сеть, где и нашёл своих приверженцев.
На данный момент язык имеет 5 базовых типов переменных: 32-битные целые, 32-битные числа с плавающей запятой, 64-битные целые с двойной точностью, строки и указатели. Язык имеет встроенные модули для работы с COM, API, буфером обмена, строками, математическими операциями, регулярными выражениями, динамическими массивами, MMF (Memory Mapped Files), сжатием по алгоритму LZO, сокетами, потоками и консолью.
Как неприятность следует отметить несколько корявую работу с кодировками: язык не работает напрямую с Юникодом, и работа со строками на русском языке может быть неудобной.
Создайте текстовый файл с расширением fbs следующего содержания:
#AppType Console Print "Hello World!" Pause
Запустите его на исполнение двойным щелчком и вы увидите окно консоли со следующим выводом:
Hello World! Press any key to continue...
Первая строка скрипта определяет вид программы (возможные значения - CONSOLE, GUI, CGI, MDI). Вторая строка выводит текст на консоль. И наконец, третья строка обеспечивает, что окно консоли не захлопнется сразу, а будет ожидать пользовательского ввода. Примечание: чтобы вывести на консоль русский текст, придётся сохранить текст скрипта в кодировке cp866.
Пример объектно-ориентированного подхода:
#AppType Console #Option Explicit NameSpace Test Class CEN Private: s Sub Initialize(s_) s = s_ End Sub Public: Method Hello() Return "Hello " & s End Method End Class Class CFR Private: s Sub Initialize(s_) s = s_ End Sub Public: Method Hello() Return "Salut " & s End Method End Class End NameSpace Dim H As New Test.CEN("Gerome"), I As New Test.CFR("Mehdi") Print H.Hello() Print I.Hello() Pause
Здесь создаётся пространство имён "Test", которое содержит два класса: CEN и CFR. Первый составляет текст приветствия по-английски, второй - по-французски. Каждый из классов содержит секции Private и Public. Приватный метод класса Initialize() получает строку для составления приветствия при создании объекта класса, а публичный метод класса Hello() генерирует и возвращает эту строку. Директива "Option Explicit" вначале скрипта имеет тот же смысл, что и во всех бейсиках: заставляет обязательно объявлять переменные. После описания пространства имён объявляются две переменные соответствующих классов (создаются объекты этих классов), а затем вызывается метод Hello() каждого объекта, и его результаты работы выводятся на консоль.
Пример построения GUI-интерфейса:
#Option Explicit Dim %hHello ' integer Dim %hButton ' integer Const IDB_HELLO = 1000 Const WM_CLOSE = &H10 Const WM_COMMAND = &H111 FBSL_SetText(Me, "Test GUI") ' the caption of the main window "Me" hButton = FBSL_Control("Button", Me, "Hello", IDB_HELLO, 10, 10, 75, 23, 0, 0) ' button hHello = FBSL_Control("Static", Me, "", 0, 0, 50, 300, 150, 0, 0) ' label FBSL_SetFont(hHello, "Verdana", 34, 0, 0, 0, 0) ' sets font Show(Me) ' displays the main window Begin Events ' events loop If CBMSG = WM_CLOSE Then ExitProgram(0) If CBMSG = WM_COMMAND And CBCTL = IDB_HELLO Then EventHello() End Events Sub EventHello() ' button "Hello" FBSL_SetText(hHello, "Hello, World!") Hide(hButton) End Sub
Скрипт выше выведет на экран окно с заголовком "Test GUI". При нажатии на кнопку "Hello" появится надпись "Hello, World!", а кнопка будет скрыта. Примечание: чтобы вывести в окне русский текст, придётся сохранить текст скрипта в кодировке cp866.
Небольшой пример работы с COM:
Const szScript = "MsgBox( ""Это тест VBScript."" & vbcrlf & ""Работает!"", 64 Or 3 )" Dim %scrCtl InitializeCom( True ) scrCtl = CreateObject("MSScriptControl.ScriptControl", "") If scrCtl <> 0 and PutValue( scrCtl, ".Language = %s", "VBScript" ) = 0 Then PutValue(scrCtl, ".AllowUI = %b", TRUE) PutValue(scrCtl, ".UseSafeSubset = %b", FALSE) CallMethod(scrCtl, ".Eval(%s)", szScript) End If ReleaseObject(scrCtl) UnInitializeCom()
Скрипт выше исполняет небольшой фрагмент кода VBScript, используя MSScriptControl (будет выведено диалоговое окно).
Демонстрация нескольких способов вызова функций Win32 API:
#AppType Console #dlldeclare kernel32("Beep", "Sleep") Beep(260, 200) : Sleep (200) : Beep(260, 200) #Uses "@|WIN32" Print ApiCall("MessageBox", "user32", 0, "Hello!", "Alert!", MB_YESNO) Pause #dllImport User32 as Usr Print Usr("MessageBox", 0, "Hello!", "Alert!", MB_YESNO ) Pause #dllDeclare User32.MessageBox As MBox Print MBox(0, "Hello!", "Alert!", MB_YESNO + MB_ICONSTOP) Pause
Скрипт выше издаёт звук системным динамиком, а затем трижды вызывает API-функцию MessageBox различными способами с демонстрацией кодов её возврата в консоли.
После установки FBSL вы получите команду контекстного меню для fbs-файлов "[FBSL v3] Compile script". Эта команда позволяет практически мгновенно получить исполняемый файл (exe), который будет работать на компьютерах, где не установлен FBSL. При компиляции будет запрошен пароль на последующую декомпиляцию. После установки FBSL вы также получите команду контекстного меню для exe-файлов "[FBSL3] Decompile". Эта команда позволяет получить текст скрипта, который будет отображён в открывшемся окне декомпилятора. Если при компиляции был задан пароль, он будет запрошен.
Fbsl_Tiny.exe позволяет создавать исполняемые программы меньшего размера, которые имеют зависимость FBSL.DLL (библиотека должна находиться рядом или в каталоге Windows). Этому соответствует команда контекстного меню "[FBSL v3] Compile script Tiny".
Программа FBSL2EXE\Fbsl2exe.fbs позволяет выполнить компиляцию выбранного скрипта в диалоговом режиме.
Людоговский Александр, 15.01.2009г.
Перейти на главную страничку сайта (список статей, файлы для скачивания)
© 2007 http://www.script-coding.com При любом использовании материалов сайта обязательна ссылка на него как на источник информации, а также сохранение целостности и авторства материалов.