ZPE Programming Environment
   HOME

TheInfoList



OR:

ZPE Programming Environment (or simply ZPE), formerly the Zenith Parsing Engine, is a general-purpose
compiler In computing, a compiler is a computer program that Translator (computing), translates computer code written in one programming language (the ''source'' language) into another language (the ''target'' language). The name "compiler" is primaril ...
,
parser Parsing, syntax analysis, or syntactic analysis is a process of analyzing a string of symbols, either in natural language, computer languages or data structures, conforming to the rules of a formal grammar by breaking it into parts. The term '' ...
and
runtime environment In computer programming, a runtime system or runtime environment is a sub-system that exists in the computer where a program is created, as well as in the computers where the program is intended to be run. The name comes from the compile time ...
for the YASS programming language designed for educational use as well as for its general use. The language it interprets, YASS, is an interpreted,
high-level High-level and low-level, as technical terms, are used to classify, describe and point to specific goals of a systematic operation; and are applied in a wide range of contexts, such as, for instance, in domains as widely varied as computer scienc ...
, general-purpose
programming language A programming language is a system of notation for writing computer programs. Programming languages are described in terms of their Syntax (programming languages), syntax (form) and semantics (computer science), semantics (meaning), usually def ...
. YASS is largely built upon making the language easy to read and use, with optional support for syntaxes such as curly-bracket syntax. YASS supports
dynamic typing In computer programming, a type system is a logical system comprising a set of rules that assigns a property called a ''type'' (for example, integer, floating point, string) to every '' term'' (a word, phrase, or other set of symbols). Usu ...
or
static typing In computer programming, a type system is a logical system comprising a set of rules that assigns a property called a ''type'' (for example, integer, floating point, string) to every '' term'' (a word, phrase, or other set of symbols). Usu ...
, as well as
strong typing In computer programming, one of the many ways that programming languages are colloquially classified is whether the language's type system makes it strongly typed or weakly typed (loosely typed). However, there is no precise technical definition o ...
and
weak typing In computer programming, one of the many ways that programming languages are colloquially classified is whether the language's type system makes it strongly typed or weakly typed (loosely typed). However, there is no precise technical definition o ...
. It was started in May 2015 as a planned university project but was later changed to be a replacement for another programming language developing at the time known as BlackRabbit Script, also built by Jamie Balfour. ZPE and YASS were designed to help with the automation of scripts by clearing up the inconsistent syntaxes of other scripting languages. The Zenith Parsing Engine (formerly ZenithParser) powers the underlying parsers, including the CSV, INI,
JSON JSON (JavaScript Object Notation, pronounced or ) is an open standard file format and electronic data interchange, data interchange format that uses Human-readable medium and data, human-readable text to store and transmit data objects consi ...
,
TOML Tom's Obvious, Minimal Language (TOML, originally ''Tom's Own Markup Language'') is a file format for configuration files. It is intended to be easy to read and write due to obvious semantics which aim to be "minimal", and it is designed to map u ...
and
XML Extensible Markup Language (XML) is a markup language and file format for storing, transmitting, and reconstructing data. It defines a set of rules for encoding electronic document, documents in a format that is both human-readable and Machine-r ...
parsers. The ZPE Programming Environment is written in Java, making it
cross-platform Within computing, cross-platform software (also called multi-platform software, platform-agnostic software, or platform-independent software) is computer software that is designed to work in several Computing platform, computing platforms. Some ...
. As a side effect, specific plugins and built-in objects are entirely written in Java. Whilst ZPE is
closed source Proprietary software is software that grants its creator, publisher, or other rightsholder or rightsholder partner a legal monopoly by modern copyright and intellectual property law to exclude the recipient from freely sharing the software or modi ...
, all plugins, transpilers and additional tools are
open-source Open source is source code that is made freely available for possible modification and redistribution. Products include permission to use and view the source code, design documents, or content of the product. The open source model is a decentrali ...
. The Standard Algorithms library is also open-source and available on Balfour's GitHub page.


YASS

The language interpreted by the ZPE runtime is known as YASS or Yet Another Simple Syntax. YASS is a
Turing-complete In computability theory, a system of data-manipulation rules (such as a model of computation, a computer's instruction set, a programming language, or a cellular automaton) is said to be Turing-complete or computationally universal if it can be ...
programming language and features the usual constructs and expressions of programming languages. Several languages influenced the YASS syntax, including C,
PHP PHP is a general-purpose scripting language geared towards web development. It was originally created by Danish-Canadian programmer Rasmus Lerdorf in 1993 and released in 1995. The PHP reference implementation is now produced by the PHP Group. ...
,
Java Java is one of the Greater Sunda Islands in Indonesia. It is bordered by the Indian Ocean to the south and the Java Sea (a part of Pacific Ocean) to the north. With a population of 156.9 million people (including Madura) in mid 2024, proje ...
,
JavaScript JavaScript (), often abbreviated as JS, is a programming language and core technology of the World Wide Web, alongside HTML and CSS. Ninety-nine percent of websites use JavaScript on the client side for webpage behavior. Web browsers have ...
,
VB.NET Visual Basic (VB), originally called Visual Basic .NET (VB.NET), is a multi-paradigm, object-oriented programming language developed by Microsoft and implemented on .NET, Mono, and the .NET Framework. Microsoft launched VB.NET in 2002 as the ...
, C#, SML and
Python Python may refer to: Snakes * Pythonidae, a family of nonvenomous snakes found in Africa, Asia, and Australia ** ''Python'' (genus), a genus of Pythonidae found in Africa and Asia * Python (mythology), a mythical serpent Computing * Python (prog ...
which has remained largely the same since about version 1.5. ZPE/YASS can be used for general-purpose programming, support client and server communications, and server-side scripting. Some websites are already using ZPE alongside other languages such as PHP. YASS can also be transpiled to other languages such as Python and PHP.


Features

ZPE features many built-in functions including functions that simplify mathematical problems such as the greater_than_all function, the to_binary, to_octal and to_hexadecimal functions as well as many functions to streamline processing of arrays such as list_process, list_find_duplicates and list_auto_populate. ZPE also features a parser known as the Zenith Parser Engine, which forms the foundation of the whole language processor and performs both
lexical analysis Lexical tokenization is conversion of a text into (semantically or syntactically) meaningful ''lexical tokens'' belonging to categories defined by a "lexer" program. In case of a natural language, those categories include nouns, verbs, adjectives ...
and compiler optimisation on textual input. A documentation section on the original subsite dedicated to ZPE documents all language constructs, internal functions and syntax. ZPE was initially built as a planned university project that never came to fruition. Ultimately, it was eventually used as the replacement for the BlackRabbit Script language that Balfour was developing at the time.


Syntax

Much like PHP and Perl, two languages that inspired YASS, variables start with a $ sign in YASS. $x = 10 $x = $x + 5 print($x) Later versions of ZPE and YASS support $-unbound variable declaration. ZPE and YASS also support a mix of strong typing and weak typing in the same script: $x = 10 declare y as number = 10 print($x) print(y)


LAME

LAME, or Logical and Mathematical Evaluator, is a ZPE feature that can parse and evaluate expressions involving logic and mathematics. It was developed in 2019 to replace LAMP, which replaced RMM. ZPE originally had no mathematical parser, meaning functions were used for addition, subtraction, division and multiplication. An example of this early syntax that has existed since version 1.3: $x = 10 $y = 15 $z = add($x, $y) print($z) In late 2015, still in version 1.3.x of ZPE, the Real Math Mode (RMM) parser was added. Syntax changed so that it looked a lot more like other languages: $x = 10 $y = 15 $z = $x + $y print($z) To improve performance, the Real Math Mode parser was replaced by the Logical And Mathematical Parser (LAMP) in 2016 and then the Logical And Mathematical Evaluator (LAME) in 2019. The latest version of LAMEX2 is up to two to five times faster than the first LAME, according to Balfour.


YASS Unfold

YASS Unfold is a syntax analyser that can transform syntax into descriptions. YASS Unfold works based on the AST generated from the code to generate code descriptions.


Transpilers

ZPE also added transpilers to convert YASS to other languages efficiently. These are distributed as plugins and are available on Balfour's GitHub and personal website. The first transpiler built was the YASS to Python transpiler (known as ZenPy) due to similarities in how both languages work underneath. Transpilers to convert YASS to PHP and Java also exist but are less mature than ZenPy.


Libraries

ZPE/YASS rely on libraries being developed to extend functionality. The main reason behind this is to reduce the size of the main runtime package. Specific libraries are written in the YASS language itself and then compiled. They are then distributed via the ZULE network, which was added in 2018. Other libraries are written in native Java. For example, the zpe_mysql library adds
MySQL MySQL () is an Open-source software, open-source relational database management system (RDBMS). Its name is a combination of "My", the name of co-founder Michael Widenius's daughter My, and "SQL", the acronym for Structured Query Language. A rel ...
functionalities to the language using a library around six times the size of the original runtime.


ZPE Native

In August 2022, an AArch64 build was compiled using the
GraalVM GraalVM is a Java Development Kit (JDK) written in Java. The open-source distribution of GraalVM is based on OpenJDK, and the enterprise distribution is based on Oracle JDK. As well as just-in-time (JIT) compilation, GraalVM can compile a Java ...
compiler. This offered performance much better than the JRE version alone. ZPE Native can improve performance considerably but is not cross-platform and is only available on current platforms (this includes an EXE for Windows, a Linux-compatible binary, and the AArch build).


See also

*
List of programming languages This is an index to notable programming languages, in current or historical use. Dialects of BASIC (which have their own page), esoteric programming languages, and markup languages are not included. A programming language does not need to be im ...
*
PHP PHP is a general-purpose scripting language geared towards web development. It was originally created by Danish-Canadian programmer Rasmus Lerdorf in 1993 and released in 1995. The PHP reference implementation is now produced by the PHP Group. ...


References

{{Reflist, 30em Compilers Dynamically typed programming languages High-level programming languages Scripting languages Web programming