Интерпретатор ЯП Micro, v2.1
Posted on

Интерпретатор языка программирования Micro.
Поддержка форсирования вычислений и преобразования типов, битовые функции и функции для работы с хеш-таблицами, модульность, стандартная библиотека, рефакторинг, pip-пакет.
Изменения
- Добавить преобразование типов #1
- Добавить возможность форсирования вычислений #2
- Удалить тип int #3
- Удалить внутренний тип bool #32
- Добавить поддержку шестнадцатеричных числовых констант #29
- Библиотека:
- Рантайм:
- Переименовать функцию рантайма $ в [] #4
- Добавить в рантайм функцию round #10
- Добавить в рантайм функции strb, strs, strl, strh и strhh #12
- Добавить в рантайм функции false и true #13
- Добавить в рантайм функции ++ и -- #21
- Добавить функции рантайма + поддержку конкатенации списков и слияния хеш-таблиц #22
- Добавить в рантайм битовые функции #30
- Переименовать функцию рантайма ~ в _ #31
- Дополнить поддержку функции рантайма args #36
- Добавить в рантайм функции для работы с хеш-таблицами #37
- Добавить в рантайм функцию size #38
- Сделать функции рантайма && и || ленивыми #46
- Добавить в рантайм функцию load #49
- Добавить в рантайм функцию для доступа к коллекциям по индексу #60
- Добавить в функции рантайма head и tail поддержку пустых списков #61
- Добавить в рантайм функцию для указания значений по умолчанию #62
- Системные функции:
- Обработка строк:
- Обработка ошибок:
- Выбрасывать исключение при попытке преобразования в строку значения неизвестного типа #34
- Выбрасывать исключение при попытке вычисления сущности неизвестного типа #35
- Выбрасывать исключение при попытке создания функционального типа из неподходящего источника #40
- Рефакторинг обработки ошибок #44
- Добавить имя файла скрипта в сообщения об ошибках #48
- Отображать исключения как все прочие ошибки #52
- Определять позицию в коде и имя файла для ошибок времени выполнения #57
- Обрабатывать исключение KeyboardInterrupt (Ctrl+C) #63
- Рефакторинг:
- Удалить отладочный код #5
- Привести стиль кода в соответствие с PEP 8 #6
- Вынести тесты в примеры #11
- Реорганизовать код #17
- Рефакторинг встроенных функций #18
- Рефакторинг препарсера #19
- Вынести в отдельный класс преобразование в строку списка токенов #27
- Рефакторинг парсера #41
- Рефакторинг вспомогательных функций #42
- Рефакторинг функционального типа #43
- Вынести в отдельную функцию основной код #47
- pip-пакет:
- Сниппеты:
- Сделать скоуп замыканий независимым между их запусками #56
- Добавить возможности функции рантайма load по поиску файлов самому интерпретатору #55
- Добавить кеширование загружаемых скриптов #54
- Использовать независимые списки функций при парсинге и вычислениях #51
- Добавить новый пример — weasel program #50
- Изменить лицензию документации на CC BY 4.0 #28
- Игнорировать символ возврата каретки #26
Описание
Installation
Clone this repository:
$ git clone https://github.com/thewizardplusplus/micro.git
$ cd micro
Then install the interpreter with pip tool:
$ sudo -H python3.5 -m pip install .
sudo command is required to install micro console script. If it's not required, sudo command can be omitted:
$ python3.5 -m pip install .
But then the interpreter should be started as python3.5 -m micro.
Fix the warning from PLY library
When you're running the interpreter, you can get the following error:
WARNING: Couldn't create 'parsetab'. [Errno 13] Permission denied: '/usr/local/lib/python3.5/dist-packages/micro/parsetab.py'
In this case, you need to adjust permissions of the specified file:
$ sudo touch /usr/local/lib/python3.5/dist-packages/micro/parsetab.py
$ sudo chown "$USER:$USER" /usr/local/lib/python3.5/dist-packages/micro/parsetab.py
Использование
$ micro -v | --version
$ micro -h | --help
$ micro [-t TARGET | --target TARGET] [<script>] [<args>...]
Опции:
-v,--version— показать версию и выйти;-h,--help— показать справку и выйти;-t TARGET,--target TARGET— установить цель обработки скрипта; она может принимать следующие значения:tokens;preast;ast;evaluation(значение по умолчанию).
Аргументы:
<script>— путь к скрипту (если он пуст или равен-, тогда скрипт будет читаться с stdin; значение по умолчанию:-);<args>— аргументы скрипта.
Репозиторий
Ссылка: https://github.com/thewizardplusplus/micro/tree/v2.1.
Содержание: код, документация, инструменты (подсветка синтаксиса), стандартная библиотека и примеры.
Лицензия:
- кода — MIT;
- документации — CC BY 4.0.
Скриншоты
One-dimensional cellular automata

Weasel program

Unit tests

