All Projects → JoaaoVerona → venusscript

JoaaoVerona / venusscript

Licence: AGPL-3.0 license
A dynamic, interpreted, scripting language written in Java.

Programming Languages

java
68154 projects - #9 most used programming language

Projects that are alternatives of or similar to venusscript

xast
Extensible Abstract Syntax Tree
Stars: ✭ 32 (+88.24%)
Mutual labels:  ast, extensible
astexplorer-go
No description or website provided.
Stars: ✭ 17 (+0%)
Mutual labels:  ast
Rump
REST client for Java that allows for easy configuration and default values. Allows for quick request construction and a huge range of modifications by using response/request interceptors, adjusting default values related to HTTP requests and creating custom instances for when you need multiple API connection setups.
Stars: ✭ 55 (+223.53%)
Mutual labels:  asynchronous
debugging-async-operations-in-nodejs
Example code to accompany my blog post on debugging async operations in Node.js.
Stars: ✭ 22 (+29.41%)
Mutual labels:  asynchronous
github-readme-activity-graph
A dynamically generated activity graph to show your GitHub activities of last 31 days.
Stars: ✭ 1,029 (+5952.94%)
Mutual labels:  dynamic
Entia
Entia is a free, open-source, data-oriented, highly performant, parallelizable and extensible Entity-Component-System (ECS) framework written in C# especially for game development.
Stars: ✭ 28 (+64.71%)
Mutual labels:  extensible
php2python
Convert PHP code to Python under CGI (beta)
Stars: ✭ 44 (+158.82%)
Mutual labels:  ast
java-ast
Java Parser for JavaScript/TypeScript (based on antlr4ts)
Stars: ✭ 58 (+241.18%)
Mutual labels:  ast
cashews
Cache with async power
Stars: ✭ 204 (+1100%)
Mutual labels:  asynchronous
stutter
Implement a Lisp, in C, from scratch, no libs
Stars: ✭ 65 (+282.35%)
Mutual labels:  ast
RunAll
This is a library for running the concurrent processing using only native Google Apps Script (GAS).
Stars: ✭ 55 (+223.53%)
Mutual labels:  asynchronous
CopperLang
The Copper interpreted programming language / embeddable interpreter / virtual machine
Stars: ✭ 27 (+58.82%)
Mutual labels:  scripting-engine
AsyncSuffix
Asynchronous methods naming checker for ReSharper
Stars: ✭ 19 (+11.76%)
Mutual labels:  asynchronous
promise4j
Fluent promise framework for Java
Stars: ✭ 20 (+17.65%)
Mutual labels:  asynchronous
sast
Parse CSS, Sass, SCSS, and Less into a unist syntax tree
Stars: ✭ 51 (+200%)
Mutual labels:  ast
PandaDemo
Demo project for asynchronous render and Layout framework Panda
Stars: ✭ 15 (-11.76%)
Mutual labels:  asynchronous
BowlerStudio
A Full-Stack Robotics Development Environment
Stars: ✭ 95 (+458.82%)
Mutual labels:  scripting-engine
html5parser
A super tiny and fast html5 AST parser.
Stars: ✭ 153 (+800%)
Mutual labels:  ast
awesome-ruby-ast
A list of awesome tools and libraries which deals with ASTs in Ruby
Stars: ✭ 24 (+41.18%)
Mutual labels:  ast
slopShell
the only php webshell you need.
Stars: ✭ 208 (+1123.53%)
Mutual labels:  extensible

This was a project made by the author while in university, in 2016, and is no longer maintained. Still, feel free to explore and fork it. :)


VenusScript

Welcome to the official GitHub repository of the dynamic, injectable, scripting language VenusScript. See the examples directory to get a closer look in how the language works.

using std

ver = "1.3.0"
println("Hi from VenusScript! Version = " + ver)

def sum(int a, int b) {
    return a + b
}

newestSum = 0

async {
    for i in (1, 10) {
        newestSum = sum(i, i)
        println(newestSum)
    }
}

wait(newestSum == 20)
println("Ok!")

Version Planning

Version State Description
0.x done
  • Definitions
  • Functions
  • Function references
  • Standard library
  • Loop containers
  • Branching components
  • Variable references
  • Initial dynamic injection
  • Runtime interpretation
  • Asynchronous features
  • Synchronous features
  • Homogeneous arrays
1.x current
  • Object-oriented features (classes, attributes, methods, maybe polymorphism, etc)
  • Java interoperability
  • Lists
  • Dictionaries/Maps
  • Heterogeneous arrays
2.x planned
  • Functional features
  • Enumerations
  • Debugging utilities and breakpoints
? planned
  • Improved performance
  • Own bytecode compiler and interpreter

How to use

With Gradle:
dependencies {
	compile 'com.github.bloodshura:venusscript:1.3.0'
}
With Maven:
<dependency>
	<groupId>com.github.bloodshura</groupId>
	<artifactId>venusscript</artifactId>
	<version>1.3.0</version>
</dependency>
With other build systems:

If your build system supports fetching dependencies from the Maven central repository, then just include a dependency with group com.github.bloodshura, artifact venusscript and version 1.3.0.

Tech

VenusScript is meant to be used within any Java or JVM-built (Kotlin, Scala, Groovy, etc) application. It is required Java 8+.

Definition

  • Highly extensible
  • Dynamic typing
  • Context/scope manipulation
  • No 'null' type/value
  • Simple syntax
  • Runtime injections (of libraries, function overriding, function definition, etc)
  • Multithreaded
  • Extremely easy syntax

Already implemented

  • Asynchronous features: async scopes
  • Synchronous features: monitor locks (produce, consume), value waiting (e.g. wait(i == 5))
  • Value types
  • Function references
  • Variable references
  • Top-level functions
  • Higher-order functions
  • Dynamic include statements
  • Dynamic using statements
  • Exporting variables to global context (so multiple scripts within the same application can access them)
  • While, do-while containers
  • Break, continue statements
  • Ranged foreach container (e.g. for i in (0, n))
  • Strongly typed function definitions (e.g. def print(string name) {...)
  • Basic standard libraries (random, input, output, cryptography, dialogs, math, runtime injection)
  • Interpret source code at runtime (e.g. interpret("println(3 + 5 + 2 - 1)"))
  • Binary, decimal and hexadecimal literals
  • Execute other scripts, asynchronously or synchronously (e.g. async run("../basic.vs"))
  • Homogeneous arrays

To be implemented

  • Object-oriented programming (classes, attributes, methods, maybe polymorphism, etc)
  • Functional programming (lambdas, data immutability, etc)
  • Collections (heterogeneous arrays, lists, maps, sets)
  • Easier interoperability with Java
  • User-defined value types
  • Debugging features (including, but not limited to, breakpoints)
  • Expand standard libraries
  • Enumerations
  • Simple exception handling?
  • ... and many more...

Documentation

Work in progress.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].