[Unstable Build] Epoxy Programming Language v1.5

Stable Build

If you have come here to learn more about Epoxy, or if you want to use the stable build, I suggest you go to this post before considering this build for production.

Unstable Build

This post is for the people who want to use the unstable release of Epoxy. This release may have a lot of issues, and may not always work as intended. Instead of pushing this to the stable build, I am now doing two separate systems so people using this asset in their game can have a stable version of Epoxy.

v1.5 Additions & Changes

To further the productivity of this language, I have implemented three new syntax features to use, all of them being listed below:

Repeat Keyword

The repeat keyword allows you to iterate a block of code a given amount of times. In the example below, the as i,m is an optional part of the syntax, which declares i as the current iteration, and m as the max number; the second variable name is optional as well

repeat 100 as i,m do
	log(i,m) -- <1..100>  100
cls

Identifier Forcing

Using the ` token, you can encase any character inside two of these to turn it into an identifier

fn `Add Function`(`Number 1`,`Number 2`)
	var `The Sum`: `Number 1` + `Number 2`
	return `The Sum`
cls

log(`Add Function`(1,2)) -- 3

This also means you can do something like this:

var `var`: "var"

log(`var`) -- var

Multi-Index Syntax

You can now index an object multiple times without restating it

var Object: {
	Number1: 1,
	["Number 2"]: 2,
}

dvar N1, N2: Object{Number1, ["Number 2"]}

log(N1 + N2) -- 3

…and the changes:

Changes to null & Unset Keyword

The null token is no longer the equivalent of nil, and instead it is now an internal object to this programming language. Any reference of nil present, even during runtime, the language will just convert it to the null object instead. Due to the intended side effects of this, a new keyword was created to remove indexes from objects, this being the unset keyword.
Example of this change:

var Object: {
	[null]: "Hello!"
}

log(Object[null]) -- Hello!
unset Object[null]
log(Object[null]) -- null

This is one of the major changes that make this build unstable

String Sandboxing

This version of Epoxy now has a custom string object. This string object will inherit the methods of the string library inside of Epoxy’s library. This change has led to many different changes being made in the code, and is most likely the buggiest feature in the language right now.

Release Information

Epoxy on GitHub (JavaScript Release), also has documentation; not up to date with v1.5 features
[Unstable Build] Epoxy on Roblox

Conclusions

If you find any bugs with this release, let me know and I will work on a patch for said bug. If you have any suggestions, I will review them and they could possibly end up in the language.