From 68a91a7b440dd13bd4362a6960c0ce479997c823 Mon Sep 17 00:00:00 2001 From: Nilstrieb <48135649+Nilstrieb@users.noreply.github.com> Date: Wed, 3 Nov 2021 21:17:32 +0100 Subject: [PATCH] start bird --- README.md | 2 ++ src/bird/mem.rs | 12 ++++++++++++ src/bird/mod.rs | 8 ++++++++ src/lib.rs | 1 + std.md | 18 ++++++++++++++++++ 5 files changed, 41 insertions(+) create mode 100644 src/bird/mem.rs create mode 100644 src/bird/mod.rs create mode 100644 std.md diff --git a/README.md b/README.md index c59a58f..ff9319f 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,5 @@ +There is currently a tree-walking interpreter called `bird` in progress, but the plan is to have a bytecode vm in the end + language_name is a small embeddable scripting language language_name is inspired by Javascript, Lox, Lua, Python, Rust and more diff --git a/src/bird/mem.rs b/src/bird/mem.rs new file mode 100644 index 0000000..144c843 --- /dev/null +++ b/src/bird/mem.rs @@ -0,0 +1,12 @@ +use std::collections::HashMap; +use std::rc::Rc; + +#[derive(Debug, PartialEq, Clone, Hash)] +enum Value { + Null, + Bool(bool), + Number(f64), + String(String), + Object(HashMap), + Array(Vec), +} diff --git a/src/bird/mod.rs b/src/bird/mod.rs new file mode 100644 index 0000000..8214411 --- /dev/null +++ b/src/bird/mod.rs @@ -0,0 +1,8 @@ +mod mem; + +use crate::ast::Program; + +#[derive(Debug)] +struct Vm {} + +fn execute(program: Program) {} diff --git a/src/lib.rs b/src/lib.rs index d0fde03..c699edd 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -1,4 +1,5 @@ mod ast; +mod bird; mod errors; mod lex; mod parse; diff --git a/std.md b/std.md new file mode 100644 index 0000000..04783b7 --- /dev/null +++ b/std.md @@ -0,0 +1,18 @@ +# Std functions + +`x`, `y`, .. : arguments +`x?` : optional +`x(): int` : return type + +Available on the global scope for now: + +# IO + +`print(x)` + +`println(x)` + +`input(x?): string` + +`time(): number` +