Skip to content

Latest commit

 

History

History
executable file
·
109 lines (78 loc) · 5.44 KB

README-EN.md

File metadata and controls

executable file
·
109 lines (78 loc) · 5.44 KB

AviatorScript

Build Status Code Quality: Java Maven Central

📖 English Documentation | 📖 中文文档


AviatorScript is a lightweight, high performance scripting language hosted on the JVM (and Android platform). It compiles script to java byte code and evaluate it on the fly.

It's not a game, it's a programming language. Please refrain from sending me any more unsolicited emails.RTFM

Feature Intro

  1. Suppport number,string, boolean and regular expression etc. basic types,support all java operators and their priorities.
  2. Function is first-class, supports closure and functional programming.
  3. Supports bigint/decmal for big integer and big decimal operations, using normal arithmetic operators +-*/ by operator overloading.
  4. Full-featured scripting language syntax, such as multi statements, conditional statement ,for/while loop, lexical scope and exception handling.
  5. Processing collections/array conveniently by sequence abstract and functional programming.
  6. Lightweight module system
  7. Call Java methods conveniently,supports Java Scripting API
  8. A wide range of customization options to be used as a secure runtime scripting sandbox or full-featured scripting language.
  9. Lightweight and high performance. ASM mode compile script into JVM bytecode on fly ,and interpreter mode make it run on Android platform etc.
  10. Supports compiled expression serialization, easy to cache etc.

Recommend version 5.2.6 and above.

News

  • 5.4.1,Fixed recursive function can't work, fixed function can't be serialized etc.
  • 5.4.0,Fixed elsif parser errors,supports expression serialization(example) etc.
  • 5.3.3,fixed potential memory leak, wrong value captured by function etc.

Dependency

<dependency>
  <groupId>com.googlecode.aviator</groupId>
  <artifactId>aviator</artifactId>
  <version>{version}</version>
</dependency>

Check available versions at search.maven.org.

Quick Start

  1. Download aviator shell script to a directory in system PATH environment variable,such as ~/bin/aviator:
$ wget https://raw.githubusercontent.com/killme2008/aviator/master/bin/aviator
$ chmod u+x aviator
  1. Execute aviator command,it will download the latest aviator jar to ~/.aviatorscript directory:
$ aviator
Downloading AviatorScript now...
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   153  100   153    0     0    111      0  0:00:01  0:00:01 --:--:--   111
100 1373k  100 1373k    0     0   689k      0  0:00:01  0:00:01 --:--:--  689k
Usage: java com.googlecode.aviator.Main [file] [args]
     : java com.googlecode.aviator.Main -e [script]
     : java com.googlecode.aviator.Main -v
  1. Save the script below in file hello.av:
p("Hello, AviatorScript!");

let a = tuple(1, 2, 3, 4, 5);

p("sum of a is: " + reduce(a, +, 0));

let date = new java.util.Date();
p("The year is: "+ getYear(date));
p("The month is: #{getMonth(date)}");
  1. Execute the script with aviator command:
$ aviator hello.av
Hello, AviatorScript!
sum of a is: 15
The year is: 120
The month is: 3

A complex example is calculator.av which evaluates arithmetic expression in string.

Read user guide for details.

Links