change spec to markdown

This commit is contained in:
2022-09-22 20:55:32 +01:00
parent b3d0d4a0d0
commit 98c2f36a61

View File

@@ -1,10 +1,12 @@
ARGON 3 beta 1.0
------------------------------------------------------------------------------------------------------------
# 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.
@@ -12,15 +14,18 @@ Argon 3 is a programming language primarily designed for maths computation, it i
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
------------------------------------------------------------------------------------------------------------
(let/const or nothing) {NAME} = {ANY}
```
NAME = [a-zA-Z][a-za-z0-9]\*
spaces used in the pseudo REGEX should be taken as 1 or many spaces.
```
---
## set variable
`(let/const or nothing) {NAME} = {ANY}`
let 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.
@@ -35,30 +40,40 @@ example:
log(x, 'is bigger than 5')
]
---
------------------------------------------------------------------------------------------------------------
2 functions
------------------------------------------------------------------------------------------------------------
(let/const or nothing) {NAME}({PARAMS}) = {CODE}
## functions
the starting verb follows the rules set by (REF 1).
`(let/const or nothing) {NAME}({PARAMS}) = {CODE}`
the starting verb follows the rules set by [set variable](#set-variable).
function can be called by using its name followed by brackets with the params.
example:
const f(x) = x^2 + 2*x + 1
```
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}]
## 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.
@@ -72,3 +87,7 @@ example:
]
log('hello', name)
log('we do not know your age anymore because it got deleted when the wrap finished.')
```
```