diff --git a/README.md b/README.md new file mode 100644 index 0000000..7ed483e --- /dev/null +++ b/README.md @@ -0,0 +1,44 @@ +# Plonkus + +## About +This is a small hobby language that I created because I was bored. +It only supports [my own architecture](https://github.com/vanten-s/8bit-computer) but I'm planning to extend it to x86 some day. + +## Features +Currently the language has the following +- Expressions +- Scopes +- Functions +- Variables + +But more features like + +- If statements +- Loops +- Function calls in expressions +- Comments + +Are coming. + +## Syntax +Here is example of functions, built-ins and variables and Scopes + +```plonkus +fn main { + let a = 2; + { + let a = a + 1; + out(a); + } + test(a); + exit(); +}; + +fn test output { + let numberToOutput = output; + out(numberToOutput); +}; +``` + +This code prints 3 and then 2. + diff --git a/src/ast.rs b/src/ast.rs index dda9bcf..6414f36 100644 --- a/src/ast.rs +++ b/src/ast.rs @@ -310,7 +310,7 @@ impl Node for Expression { } let stack_position = state.variables.len() - - state.variables.iter().position(|x| x == name).unwrap() + - state.variables.iter().rposition(|x| x == name).unwrap() - 1; dbg!(&state.variables);