Парадигма | Императивный , функциональный , объектно-ориентированный , процедурный |
---|---|
Разработано | Джейми Балфур |
Разработчик | Джейми Балфур |
Впервые появился | 2015 ( 2015 ) | [1]
Стабильный релиз | 1.12.12 [2] / 1 ноября 2024 г. ( 2024-11-01 ) |
Дисциплина набора текста | Динамичный , статический , слабый , сильный , постепенный [3] |
Язык реализации | Ява , ЯСС |
Платформа | Кроссплатформенный |
ОС | Unix-подобный , Windows , macOS |
Расширения имени файла | .yas .yex |
Веб-сайт | https://www.jamiebalfour.scot/projects/zpe/ |
Под влиянием | |
C , PHP , Java , JavaScript , VB.NET , C# , SML , Python [3] |
ZPE Programming Environment (или просто ZPE ), ранее Zenith Parsing Engine, является универсальным компилятором , синтаксическим анализатором и средой выполнения для языка программирования YASS, разработанным как для образовательных целей, так и для общего использования. Язык, который он интерпретирует, YASS, является интерпретируемым , высокоуровневым , универсальным языком программирования . YASS в значительной степени построен на том, чтобы сделать язык простым для чтения и использования, с дополнительной поддержкой синтаксисов, таких как синтаксис фигурных скобок . YASS поддерживает динамическую типизацию или статическую типизацию , а также строгую типизацию и слабую типизацию .
Он был начат в мае 2015 года как запланированный университетский проект, но позже был изменен, чтобы стать заменой другого языка программирования, разрабатывавшегося в то время, известного как BlackRabbit Script, также созданного Джейми Балфуром. ZPE и YASS были разработаны для помощи в автоматизации скриптов путем устранения непоследовательного синтаксиса других скриптовых языков. [3] Zenith Parsing Engine (ранее ZenithParser) обеспечивает работу базовых парсеров, включая парсеры CSV , INI , JSON , TOML и XML .
Среда программирования ZPE написана на Java, что делает ее кроссплатформенной . Как побочный эффект, определенные плагины и встроенные объекты полностью написаны на Java.
Хотя ZPE имеет закрытый исходный код , все плагины, транспиляторы и дополнительные инструменты имеют открытый исходный код . Библиотека стандартных алгоритмов также имеет открытый исходный код и доступна на странице Balfour на GitHub.
Язык, интерпретируемый средой выполнения ZPE, известен как YASS или Yet Another Simple Syntax [4] . YASS является языком программирования , полным по Тьюрингу , и содержит обычные конструкции и выражения языков программирования. На синтаксис YASS повлияли несколько языков, включая C , PHP , Java , JavaScript , VB.NET , C# , SML и Python [3], который в значительной степени остался неизменным примерно с версии 1.5. ZPE/YASS можно использовать для программирования общего назначения, поддержки клиентских и серверных коммуникаций и серверных скриптов. Некоторые веб-сайты уже используют ZPE наряду с другими языками, такими как PHP [5] .
YASS также можно транспилировать на другие языки, такие как Python и PHP. [6]
ZPE имеет множество встроенных функций, включая функции, упрощающие математические задачи, такие как greater_than_all
функция to_binary
, to_octal
и to_hexadecimal
функции , а также множество функций для оптимизации обработки массивов, таких как list_process
, list_find_duplicates
и list_auto_populate
. ZPE также имеет синтаксический анализатор, известный как Zenith Parser Engine, который составляет основу всего языкового процессора и выполняет как лексический анализ , так и оптимизацию компиляции текстового ввода.
Раздел документации на оригинальном дочернем сайте, посвященный ZPE, документирует все языковые конструкции, внутренние функции и синтаксис. [4]
ZPE изначально был создан как запланированный университетский проект, который так и не был реализован. В конечном итоге он был использован в качестве замены для языка BlackRabbit Script, который в то время разрабатывал Балфур.
Подобно PHP и Perl, двум языкам, вдохновившим YASS, переменные $
в YASS начинаются со знака.
$x = 10 $x = $x + 5печать ( $x )
Более поздние версии ZPE и YASS поддерживают объявление переменных без $. ZPE и YASS также поддерживают сочетание строгой и слабой типизации в одном скрипте:
$x = 10 объявить y как число = 10печать ( $x ) печать ( y )
LAME, или Logical and Mathematical Evaluator, — это функция ZPE, которая может анализировать и оценивать выражения, включающие логику и математику. Она была разработана в 2019 году для замены LAMP, который заменил RMM. Изначально в ZPE не было математического анализатора, то есть функции использовались для сложения, вычитания, деления и умножения. Пример этого раннего синтаксиса, который существует с версии 1.3:
$x = 10 $y = 15$z = сложить ( $x , $y )печать ( $z )
В конце 2015 года, все еще в версии 1.3.x ZPE, был добавлен парсер Real Math Mode (RMM). Синтаксис изменился так, что он стал больше похож на другие языки:
$x = 10 $y = 15$z = $x + $yпечать ( $z )
Для повышения производительности анализатор Real Math Mode был заменен на Logical And Mathematical Parser (LAMP) в 2016 году, а затем на Logical And Mathematical Evaluator (LAME) в 2019 году. [7]
По словам Балфура [8] , последняя версия LAMEX2 в два-пять раз быстрее первой версии LAME .
YASS Unfold — это синтаксический анализатор, который может преобразовывать синтаксис в описания. YASS Unfold работает на основе AST, сгенерированного из кода, для генерации описаний кода. [9]
ZPE также добавила транспиляторы для эффективного преобразования YASS в другие языки. Они распространяются как плагины и доступны на GitHub и личном сайте Balfour.
Первым созданным транспилятором был транспилятор YASS в Python (известный как ZenPy) из-за сходства принципов работы обоих языков.
Существуют также транспиляторы для преобразования YASS в PHP и Java, но они менее развиты, чем ZenPy. [10]
ZPE/YASS полагаются на библиотеки, разрабатываемые для расширения функциональности. Основная причина этого — уменьшение размера основного пакета среды выполнения. Конкретные библиотеки пишутся на самом языке YASS, а затем компилируются. Затем они распространяются через сеть ZULE, которая была добавлена в 2018 году. [7]
Другие библиотеки написаны на родном Java. Например, библиотека zpe_mysql добавляет функциональность MySQL к языку, используя библиотеку, которая примерно в шесть раз больше исходной среды выполнения.
В августе 2022 года сборка AArch64 была скомпилирована с использованием компилятора GraalVM. Это обеспечило производительность, намного превосходящую производительность версии JRE в одиночку. ZPE Native может значительно повысить производительность, но не является кроссплатформенным и доступен только на текущих платформах (сюда входят EXE для Windows, совместимый с Linux двоичный файл и сборка AArch).