mirror of
https://github.com/Open-Argon/argon-v3.git
synced 2025-12-06 08:56:07 +00:00
init
This commit is contained in:
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
@@ -0,0 +1 @@
|
||||
/target
|
||||
7
Cargo.lock
generated
Normal file
7
Cargo.lock
generated
Normal file
@@ -0,0 +1,7 @@
|
||||
# This file is automatically @generated by Cargo.
|
||||
# It is not intended for manual editing.
|
||||
version = 3
|
||||
|
||||
[[package]]
|
||||
name = "argon"
|
||||
version = "0.1.0"
|
||||
8
Cargo.toml
Normal file
8
Cargo.toml
Normal file
@@ -0,0 +1,8 @@
|
||||
[package]
|
||||
name = "argon"
|
||||
version = "0.1.0"
|
||||
edition = "2021"
|
||||
|
||||
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
||||
|
||||
[dependencies]
|
||||
74
spec
Normal file
74
spec
Normal file
@@ -0,0 +1,74 @@
|
||||
ARGON 3 beta 1.0
|
||||
------------------------------------------------------------------------------------------------------------
|
||||
|
||||
This is the specification on how to create an Argon interpreter.
|
||||
This specification should be used as a guildline, and is subject to change for later versions.
|
||||
Later updates for Argon 3 should be backwards compatable (where possible) with code designed for older versions
|
||||
of the interpreter.
|
||||
The Argon 3 interpreter is not intentionally designed to understand code written for Argon 1 and/or 2, but may
|
||||
follow some design patterns found in those interpreters.
|
||||
|
||||
Argon 3 is a programming language primarily designed for maths computation, it is designed to use techniques and
|
||||
rules set in maths. It's designed to be easy for mathematicians to write and understand algorithms in.
|
||||
(e.g. f(x) = x^2 to set a function)
|
||||
|
||||
|
||||
reused variables, and infomation for use in understanding the pseudo REGEX:
|
||||
NAME = [a-zA-Z][a-zA-Z0-9]*
|
||||
spaces used in the pseudo REGEX should be taken as 1 or many spaces.
|
||||
|
||||
------------------------------------------------------------------------------------------------------------
|
||||
1 set variable
|
||||
------------------------------------------------------------------------------------------------------------
|
||||
(var/const or nothing) {NAME} = {ANY}
|
||||
|
||||
var and const variables will set variables. if a const is already set in that stack, it will throw an error.
|
||||
at the end of a opperation (e.g. if, while, or function) drop the variable stack.
|
||||
|
||||
having no verb at the start suggests the program would like to edit a variables from a different stack.
|
||||
if there is no variable found in the other stacks, then it sets one in the current stack as a var.
|
||||
|
||||
setting variables returns the value, which can be used.
|
||||
|
||||
example:
|
||||
if (x = 10) > 5 [
|
||||
log(x, 'is bigger than 5')
|
||||
]
|
||||
|
||||
|
||||
------------------------------------------------------------------------------------------------------------
|
||||
2 functions
|
||||
------------------------------------------------------------------------------------------------------------
|
||||
(var/const or nothing) {NAME}({PARAMS}) = {CODE}
|
||||
|
||||
the starting verb follows the rules set by (REF 1).
|
||||
|
||||
function can be called by using its name followed by brackets with the params.
|
||||
|
||||
example:
|
||||
const f(x) = x^2 + 2*x + 1
|
||||
|
||||
log('f(10) =', f(10))
|
||||
output:
|
||||
f(10) = 121
|
||||
|
||||
if the function does not return, then the value given is unknown/null
|
||||
|
||||
|
||||
------------------------------------------------------------------------------------------------------------
|
||||
3 wrap
|
||||
------------------------------------------------------------------------------------------------------------
|
||||
[{CODE}]
|
||||
|
||||
a wrap is used to wrap code in square brackets. its used to create a memory stack, so variables set from
|
||||
inside the wraps stack are deleted once the wrap is finished.
|
||||
|
||||
example:
|
||||
var name = unknown
|
||||
[
|
||||
name = input('name: ')
|
||||
var age = input('age: ')
|
||||
log('you are', age, 'years old!')
|
||||
]
|
||||
log('hello', name)
|
||||
log('we do not know your age anymore because it got deleted when the wrap finished.')
|
||||
3
src/main.rs
Normal file
3
src/main.rs
Normal file
@@ -0,0 +1,3 @@
|
||||
fn main() {
|
||||
println!("Hello, world!");
|
||||
}
|
||||
Reference in New Issue
Block a user