Lua#
Lua - это интерпретатор, выполняющий код, написанный на языке программирования Lua, без предварительной компиляции в машинный код.
Функциональные возможности интерпретатора:
Интерактивный режим: позволяет вводить команды и сразу получать результат их выполнения.
Поддержка основных конструкций языка: поддерживает переменные, типы данных, управляющие конструкции, функции первого класса, замыканий и рекурсии, таблицы.
Работа с файлами: позволяет читать и записывать файлы.
Взаимодействие с операционной системой: выполняет системные команды, управляет файловой системой, получает информацию о системе.
Работа с модулями: поддерживает модульность через функцию
require, которая позволяет подключить внешние библиотеки и модули.Обработка ошибок: обрабатывает ошибки с помощью конструкции
pcallиxpcall.Метатаблицы и метаметоды: настраивает поведение таблиц с помощью метатаблиц и метаметодов.
Сопрограммы: поддерживает сопрограммы, которые позволяют организовывать асинхронное выполнение кода.
Интеграция с C: интегрируется с языком C.
Легковесность и производительность: подходит для работы на устройствах с ограниченными ресурсами и отличается высокой скоростью.
Расширяемость: есть возможность добавления новых функций с помощью библиотек, написанных на Lua или C.
Поддержка Unicode: поддерживает Unicode для работы с текстом.
Отладка: предоставляет базовые возможности отладки.
Установка
Интерпретатор Lua устанавливается с помощью команды dnf install. Подробнее про работу пакетного менеджера DNF в разделе «Управление программными пакетами: установка, обновление, удаление».
Использование интерпретатора#
Для работы с интерпретатором используйте команду:
lua <options> <script> <args>
Где:
<options>- опции, подробнее смотрите в таблице «Опции Lua» раздела «Опции»;<script>- файл, содержащий код на Lua;<args>- аргументы.
Опции#
Опции интерпретатора приведены в таблице ниже.
Опция |
Описание |
|---|---|
|
Выполнить код Lua из командной строки |
|
Загрузить модуль |
|
Включить интерактивный режим после выполнения скрипта или других команд |
|
Показать версию Lua и продолжить выполнение команды |
|
Интегрировать переменные окружения Lua |
|
Считать код Lua из стандартного ввода |
|
Передать скрипту аргументы после |
Переменные окружения#
Переменные окружения интерпретатора приведены в таблице ниже.
Переменная |
Описание |
|---|---|
|
Определить путь для поиска модулей Lua |
|
Определить путь для поиска библиотек |
|
Выполнить код Lua при запуске интерпретатора |
Примеры использования#
Для запуска интерпретатора через файл с расширением
.luaнеобходимо:Поместить исходный код в тестовый файл с расширением
.lua:print("test")Запустить программу:
lua test.luaВывод команды:
test
Для запуска Lua в интерактивном режиме используйте команду:
luaДалее можно ввести любую команду Lua, например:
print(10+10)Вывод команды:
20
Дополнительная информация#
Дополнительную информацию можно получить, выполнив команду:
man lua
m4#
m4 - это универсальный макропроцессор, предназначенный для интерпретации текстовых файлов, содержащих макросы и специальные команды, которые используются для расширения текста и для работы с различными языками.
Функциональные возможности интерпретатора:
Определение и использование макросов: позволяет определять пользовательские макросы и создавать шаблоны с параметрами.
Встроенные функции: предоставляет множество встроенных функций для различных операций, например, условные конструкции, арифметические операции, работа со строками, преобразование регистра, работа с файлами.
Рекурсия: создает сложные структуры данных или выполняет повторяющиеся операции.
Управление выводом: удаляет все символы до конца строки, перенаправляет вывод в буферы для хранения, возвращает содержимое буфера обратно в поток вывода.
Управление макросами: удаляет, сохраняет и восстанавливает макросы.
Генерация кода: используется для автоматической генерации кода на других языках программирования.
Подстановка текста: может выполнять простую подстановку текста, заменяя определенные строки другими значениями.
Циклы и повторения: не имеет явной поддержки циклов, но их можно реализовать при помощи рекурсии или определенных встроенных функций.
Отладка: выводит определения всех макросов.
Установка
Интерпретатор m4 устанавливается с помощью команды dnf install. Подробнее про работу пакетного менеджера DNF в разделе «Управление программными пакетами: установка, обновление, удаление».
Использование интерпретатора#
Для работы с интерпретатором используйте команду:
m4 <option> <file>
Где:
<option>- наименование опции, подробнее смотрите в таблице «Опции m4»;<file>- входной файл для обработки.
Опции#
Опции интерпретатора приведены в таблице ниже.
Опция |
Описание |
|---|---|
|
Вывести справочную информацию |
|
Вывести информацию о версии и завершить работу |
|
Указать, какие предупреждения должны приводить к немедленному завершению работы программы с ошибкой |
|
Запустить программу в интерактивном режиме |
|
Добавить ко всем встроенным функциям префикс |
|
Управлять уровнем вывода предупреждений, подавлять определенные категории предупреждений |
|
Выдать предупреждение, когда последовательность символов, которая выглядит как вызов макроса, не соответствует определенным правилам или не является действительным макросом |
|
Предварительно определить макросы перед началом обработки входных файлов |
|
Добавить дополнительные каталоги, где программа будет искать файлы |
|
Добавить специальные комментарии в выходной файл. Комментарии указывают номер строки и имя исходного файла, из которого был сгенерирован соответствующий вывод |
|
Отменить определения макроса с указанным именем |
|
Включить режим совместимости с GNU m4 |
|
Включить режим совместимости с классическим поведением макропроцессора |
|
Настроить размер хеш-таблицы, которая применяется для хранения определений макросов |
|
Установить ограничения на максимальную глубину вложенности вызовов макросов |
|
Сохранить текущее состояние макропроцессора в указанном файле |
|
Восстановить сохраненное состояние макропроцессора из указанного файла |
|
Активировать режим отладки с выводом дополнительной информации о работе программы. Подробную информацию о флагах смотрите в таблице «Флаги опции |
|
Направить отладочную информацию в указанный файл |
|
Установить максимальную длину аргументов, которые могут быть переданы макросам |
|
Активировать трассировку указанного макроса с именем |
Флаги#
Флаги интерпретатора, используемые при вызове опции -d, приведены в таблице ниже.
Флаг |
Описание |
|---|---|
|
Показать, какие макросы вызываются и какие аргументы передаются им во время обработки текста |
|
Отследить, какие файлы и данные читаются или записываются во время выполнения программы |
|
Отследить, какие специфические расширения или особенности GNU |
|
Отследить, какой именно файл обрабатывается в данный момент |
|
Отобразить, как m4 работает с различными файлами и как происходит поток обработки данных |
|
Определить, какой именно участок кода или файла обрабатывается |
|
Отобразить, какие аргументы передаются каждому вызываемому макросу |
|
Подавить обычный вывод программы, не отображать на экране и не записывать в выходной файл основной результат работы |
|
Включить трассировку вызовов макросов |
|
Предоставить более подробную информацию о работе программы, включая дополнительные детали о вызовах макросов, обработке входных данных и других внутренних операциях |
|
Вывести информацию о версии программы |
Макросы#
Макросы интерпретатора приведены в таблице ниже.
Макрос |
Описание |
|---|---|
|
Изменить символы, которые используются для обозначения начала и конца строк или параметров макросов |
|
Изменить символ или последовательность символов, которые обозначают начало однострочного комментария |
|
Уменьшить числовое значение на 1 |
|
Определить новый макрос или переопределить существующий |
|
Получить строковое представление определения макроса без его выполнения |
|
Перенаправить вывод в один из 10 внутренних буферов |
|
Получить номер текущего буфера вывода |
|
Удалить все символы до конца текущей строки, включая символ новой строки |
|
Вывести информацию об определениях макросов |
|
Вывести информацию об ошибках или диагностическую информацию в поток ошибок |
|
Проверить определенность макроса |
|
Выполнить условную обработку текста на основе сравнения значений |
|
Включить содержимое указанного файла в поток обработки |
|
Увеличить числовое значение на 1 |
|
Определить позицию первого вхождения одной строки внутри другой |
|
Определить длину строки в указанном аргументе |
|
Завершить работу программы с указанным кодом выхода |
|
Зарегистрировать код, который будет выполнен после завершения основной обработки входного файла |
|
Создать имя временного файла |
|
Восстановить предыдущее определение макроса, если оно было временно переопределено с помощью макроса |
|
Временно переопределить макрос, сохраняя его текущее определение в стеке |
|
Удалить первые аргументы из списка аргументов макроса |
|
Включить содержимое файла |
|
Извлечь подстроку из заданной строки |
|
Выполнить внешнюю команду операционной системы из скрипта |
|
Получить код выхода последней выполненной системной команды, которая была вызвана с помощью макроса |
|
Заменить символы в строке |
|
Включить трассировку для одного или нескольких макросов |
|
Выключить трассировку для одного или нескольких макросов |
|
Отменить определение макроса, удалить его из текущего контекста |
|
Вывести содержимое буферов, которые были ранее заполнены с помощью макроса |
Пример использования#
Для проверки корректности установки интерпретатора m4 используйте, например:
define(`HELLO', `Hello, world!') HELLOЗатем выполните команду:
m4 test.m4Ожидаемый вывод:
Hello, world!
Дополнительная информация#
Дополнительную информацию можно получить, выполнив команду:
man m4
Или:
m4 --help