restructure syntax

This commit is contained in:
nora 2022-04-26 20:13:34 +02:00
parent c916611bdc
commit 266eeb7327
96 changed files with 624 additions and 151 deletions

466
fuzz/Cargo.lock generated
View file

@ -2,12 +2,54 @@
# It is not intended for manual editing. # It is not intended for manual editing.
version = 3 version = 3
[[package]]
name = "adler"
version = "1.0.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe"
[[package]]
name = "aho-corasick"
version = "0.7.18"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1e37cfd5e7657ada45f742d6e99ca5788580b5c529dc78faf11ece6dc702656f"
dependencies = [
"memchr",
]
[[package]] [[package]]
name = "arbitrary" name = "arbitrary"
version = "1.0.2" version = "1.0.2"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "577b08a4acd7b99869f863c50011b01eb73424ccc798ecd996f2e24817adfca7" checksum = "577b08a4acd7b99869f863c50011b01eb73424ccc798ecd996f2e24817adfca7"
[[package]]
name = "autocfg"
version = "1.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa"
[[package]]
name = "base64"
version = "0.13.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "904dfeac50f3cdaba28fc6f57fdcddb75f49ed61346676a78c4ffe55877802fd"
[[package]]
name = "bincode"
version = "1.3.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b1f45e9417d87227c7a56d22e471c6206462cba514c7590c09aff4cf6d1ddcad"
dependencies = [
"serde",
]
[[package]]
name = "bitflags"
version = "1.3.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
[[package]] [[package]]
name = "bumpalo" name = "bumpalo"
version = "3.8.0" version = "3.8.0"
@ -20,11 +62,57 @@ version = "1.0.71"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "79c2681d6594606957bbb8631c4b90a7fcaaa72cdb714743a437b156d6a7eedd" checksum = "79c2681d6594606957bbb8631c4b90a7fcaaa72cdb714743a437b156d6a7eedd"
[[package]]
name = "cfg-if"
version = "1.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
[[package]]
name = "crc32fast"
version = "1.3.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b540bd8bc810d3885c6ea91e2018302f68baba2129ab3e88f32389ee9370880d"
dependencies = [
"cfg-if",
]
[[package]]
name = "dbg-pls"
version = "0.3.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3f28b65c59b1830ac65640335cf2ebef868e8c9982d1cbab01ce843ebe74d37a"
dependencies = [
"dbg-pls-derive",
"itoa",
"once_cell",
"prettyplease",
"proc-macro2",
"quote",
"ryu",
"syn",
"syntect",
"textwrap",
]
[[package]]
name = "dbg-pls-derive"
version = "0.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "18ad0d32e09e083b0bf764cc9c2f1956518afb16b6ae0e1110c909d056f8271f"
dependencies = [
"proc-macro2",
"quote",
"syn",
]
[[package]] [[package]]
name = "dilaria" name = "dilaria"
version = "0.1.0" version = "0.1.0"
dependencies = [ dependencies = [
"bumpalo", "bumpalo",
"dbg-pls",
"rustc-hash",
] ]
[[package]] [[package]]
@ -35,6 +123,64 @@ dependencies = [
"libfuzzer-sys", "libfuzzer-sys",
] ]
[[package]]
name = "flate2"
version = "1.0.23"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b39522e96686d38f4bc984b9198e3a0613264abaebaff2c5c918bfa6b6da09af"
dependencies = [
"cfg-if",
"crc32fast",
"libc",
"miniz_oxide",
]
[[package]]
name = "fnv"
version = "1.0.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1"
[[package]]
name = "hashbrown"
version = "0.11.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ab5ef0d4909ef3724cc8cce6ccc8572c5c817592e9285f5464f8e86f8bd3726e"
[[package]]
name = "indexmap"
version = "1.8.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0f647032dfaa1f8b6dc29bd3edb7bbef4861b8b8007ebb118d6db284fd59f6ee"
dependencies = [
"autocfg",
"hashbrown",
]
[[package]]
name = "itoa"
version = "1.0.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1aab8fc367588b89dcee83ab0fd66b72b50b72fa1904d7095045ace2b0c81c35"
[[package]]
name = "lazy_static"
version = "1.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
[[package]]
name = "lazycell"
version = "1.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55"
[[package]]
name = "libc"
version = "0.2.124"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "21a41fed9d98f27ab1c6d161da622a4fa35e8a54a8adc24bbf3ddd0ef70b0e50"
[[package]] [[package]]
name = "libfuzzer-sys" name = "libfuzzer-sys"
version = "0.4.2" version = "0.4.2"
@ -46,8 +192,328 @@ dependencies = [
"once_cell", "once_cell",
] ]
[[package]]
name = "line-wrap"
version = "0.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f30344350a2a51da54c1d53be93fade8a237e545dbcc4bdbe635413f2117cab9"
dependencies = [
"safemem",
]
[[package]]
name = "linked-hash-map"
version = "0.5.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7fb9b38af92608140b86b693604b9ffcc5824240a484d1ecd4795bacb2fe88f3"
[[package]]
name = "memchr"
version = "2.4.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "308cc39be01b73d0d18f82a0e7b2a3df85245f84af96fdddc5d202d27e47b86a"
[[package]]
name = "miniz_oxide"
version = "0.5.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d2b29bd4bc3f33391105ebee3589c19197c4271e3e5a9ec9bfe8127eeff8f082"
dependencies = [
"adler",
]
[[package]]
name = "num_threads"
version = "0.1.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "aba1801fb138d8e85e11d0fc70baf4fe1cdfffda7c6cd34a854905df588e5ed0"
dependencies = [
"libc",
]
[[package]] [[package]]
name = "once_cell" name = "once_cell"
version = "1.8.0" version = "1.8.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "692fcb63b64b1758029e0a96ee63e049ce8c5948587f2f7208df04625e5f6b56" checksum = "692fcb63b64b1758029e0a96ee63e049ce8c5948587f2f7208df04625e5f6b56"
[[package]]
name = "onig"
version = "6.3.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "67ddfe2c93bb389eea6e6d713306880c7f6dcc99a75b659ce145d962c861b225"
dependencies = [
"bitflags",
"lazy_static",
"libc",
"onig_sys",
]
[[package]]
name = "onig_sys"
version = "69.7.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5dd3eee045c84695b53b20255bb7317063df090b68e18bfac0abb6c39cf7f33e"
dependencies = [
"cc",
"pkg-config",
]
[[package]]
name = "pkg-config"
version = "0.3.25"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1df8c4ec4b0627e53bdf214615ad287367e482558cf84b109250b37464dc03ae"
[[package]]
name = "plist"
version = "1.3.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bd39bc6cdc9355ad1dc5eeedefee696bb35c34caf21768741e81826c0bbd7225"
dependencies = [
"base64",
"indexmap",
"line-wrap",
"serde",
"time",
"xml-rs",
]
[[package]]
name = "prettyplease"
version = "0.1.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d9e07e3a46d0771a8a06b5f4441527802830b43e679ba12f44960f48dd4c6803"
dependencies = [
"proc-macro2",
"syn",
]
[[package]]
name = "proc-macro2"
version = "1.0.37"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ec757218438d5fda206afc041538b2f6d889286160d649a86a24d37e1235afd1"
dependencies = [
"unicode-xid",
]
[[package]]
name = "quote"
version = "1.0.18"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a1feb54ed693b93a84e14094943b84b7c4eae204c512b7ccb95ab0c66d278ad1"
dependencies = [
"proc-macro2",
]
[[package]]
name = "regex"
version = "1.5.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1a11647b6b25ff05a515cb92c365cec08801e83423a235b51e231e1808747286"
dependencies = [
"aho-corasick",
"memchr",
"regex-syntax",
]
[[package]]
name = "regex-syntax"
version = "0.6.25"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f497285884f3fcff424ffc933e56d7cbca511def0c9831a7f9b5f6153e3cc89b"
[[package]]
name = "rustc-hash"
version = "1.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2"
[[package]]
name = "ryu"
version = "1.0.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "73b4b750c782965c211b42f022f59af1fbceabdd026623714f104152f1ec149f"
[[package]]
name = "safemem"
version = "0.3.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ef703b7cb59335eae2eb93ceb664c0eb7ea6bf567079d843e09420219668e072"
[[package]]
name = "same-file"
version = "1.0.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502"
dependencies = [
"winapi-util",
]
[[package]]
name = "serde"
version = "1.0.136"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ce31e24b01e1e524df96f1c2fdd054405f8d7376249a5110886fb4b658484789"
[[package]]
name = "serde_derive"
version = "1.0.136"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "08597e7152fcd306f41838ed3e37be9eaeed2b61c42e2117266a554fab4662f9"
dependencies = [
"proc-macro2",
"quote",
"syn",
]
[[package]]
name = "serde_json"
version = "1.0.79"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8e8d9fa5c3b304765ce1fd9c4c8a3de2c8db365a5b91be52f186efc675681d95"
dependencies = [
"itoa",
"ryu",
"serde",
]
[[package]]
name = "smawk"
version = "0.3.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f67ad224767faa3c7d8b6d91985b78e70a1324408abcb1cfcc2be4c06bc06043"
[[package]]
name = "syn"
version = "1.0.91"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b683b2b825c8eef438b77c36a06dc262294da3d5a5813fac20da149241dcd44d"
dependencies = [
"proc-macro2",
"quote",
"unicode-xid",
]
[[package]]
name = "syntect"
version = "4.6.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8b20815bbe80ee0be06e6957450a841185fcf690fe0178f14d77a05ce2caa031"
dependencies = [
"bincode",
"bitflags",
"flate2",
"fnv",
"lazy_static",
"lazycell",
"onig",
"plist",
"regex-syntax",
"serde",
"serde_derive",
"serde_json",
"walkdir",
"yaml-rust",
]
[[package]]
name = "textwrap"
version = "0.15.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b1141d4d61095b28419e22cb0bbf02755f5e54e0526f97f1e3d1d160e60885fb"
dependencies = [
"smawk",
"unicode-linebreak",
"unicode-width",
]
[[package]]
name = "time"
version = "0.3.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c2702e08a7a860f005826c6815dcac101b19b5eb330c27fe4a5928fec1d20ddd"
dependencies = [
"itoa",
"libc",
"num_threads",
]
[[package]]
name = "unicode-linebreak"
version = "0.1.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3a52dcaab0c48d931f7cc8ef826fa51690a08e1ea55117ef26f89864f532383f"
dependencies = [
"regex",
]
[[package]]
name = "unicode-width"
version = "0.1.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3ed742d4ea2bd1176e236172c8429aaf54486e7ac098db29ffe6529e0ce50973"
[[package]]
name = "unicode-xid"
version = "0.2.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8ccb82d61f80a663efe1f787a51b16b5a51e3314d6ac365b08639f52387b33f3"
[[package]]
name = "walkdir"
version = "2.3.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "808cf2735cd4b6866113f648b791c6adc5714537bc222d9347bb203386ffda56"
dependencies = [
"same-file",
"winapi",
"winapi-util",
]
[[package]]
name = "winapi"
version = "0.3.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419"
dependencies = [
"winapi-i686-pc-windows-gnu",
"winapi-x86_64-pc-windows-gnu",
]
[[package]]
name = "winapi-i686-pc-windows-gnu"
version = "0.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
[[package]]
name = "winapi-util"
version = "0.1.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178"
dependencies = [
"winapi",
]
[[package]]
name = "winapi-x86_64-pc-windows-gnu"
version = "0.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
[[package]]
name = "xml-rs"
version = "0.8.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d2d7d3948613f75c98fd9328cfdcc45acc4d360655289d0a7d4ec931392200a3"
[[package]]
name = "yaml-rust"
version = "0.4.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "56c1936c4cc7a1c9ab21a1ebb602eb942ba868cbd44a99cb7cdc5892335e1c85"
dependencies = [
"linked-hash-map",
]

View file

@ -5,13 +5,13 @@ use std::{cell::RefCell, rc::Rc};
use bumpalo::{collections::Vec, Bump}; use bumpalo::{collections::Vec, Bump};
use crate::{ use crate::{
ast::{
Assignment, BinaryOp, BinaryOpKind, Block, Call, CallKind, Declaration, ElsePart, Expr,
FnDecl, Ident, IfStmt, Literal, Program, Stmt, UnaryOp, WhileStmt,
},
bytecode::{FnBlock, Instr}, bytecode::{FnBlock, Instr},
errors::{CompilerError, Span}, errors::{CompilerError, Span},
gc::Symbol, gc::Symbol,
syntax::ast::{
Assignment, BinaryOp, BinaryOpKind, Block, Call, CallKind, Declaration, ElsePart, Expr,
FnDecl, Ident, IfStmt, Literal, Program, Stmt, UnaryOp, WhileStmt,
},
vm::Value, vm::Value,
HashMap, RtAlloc, HashMap, RtAlloc,
}; };

View file

@ -1,22 +1,22 @@
#![deny(clippy::disallowed_types)] #![deny(clippy::disallowed_types)]
mod ast;
mod bytecode; mod bytecode;
mod compile; mod compile;
mod errors; mod errors;
mod gc; mod gc;
mod lex; mod syntax;
mod parse;
mod util; mod util;
mod vm; mod vm;
use std::io::Write; use std::io::Write;
pub use bumpalo::Bump; pub use bumpalo::Bump;
pub use lex::*;
pub use parse::*;
use crate::{ast::Program, gc::RtAlloc}; pub use crate::syntax::{lex::*, parse::*};
use crate::{
gc::RtAlloc,
syntax::{ast::Program, lex, parse},
};
#[cfg(not(feature = "fxhash"))] #[cfg(not(feature = "fxhash"))]
#[allow(clippy::disallowed_types)] #[allow(clippy::disallowed_types)]

View file

@ -1,12 +0,0 @@
---
source: src/parse/test.rs
expression: ast
---
Literal(
Number(
10.0,
Span(
0..0,
),
),
)

View file

@ -1,12 +0,0 @@
---
source: src/parse/test.rs
expression: ast
---
Literal(
Number(
10.0,
Span(
0..0,
),
),
)

View file

@ -1,12 +0,0 @@
---
source: src/parse/test.rs
expression: ast
---
Literal(
Number(
10.0,
Span(
0..0,
),
),
)

View file

@ -1,12 +0,0 @@
---
source: src/parse/test.rs
expression: ast
---
Literal(
Number(
10.0,
Span(
0..0,
),
),
)

View file

@ -1,12 +0,0 @@
---
source: src/parse/test.rs
expression: ast
---
Literal(
Number(
10.0,
Span(
0..0,
),
),
)

3
src/syntax/mod.rs Normal file
View file

@ -0,0 +1,3 @@
pub mod ast;
pub mod lex;
pub mod parse;

View file

@ -11,9 +11,9 @@ use std::iter::Peekable;
use bumpalo::{collections::Vec, Bump}; use bumpalo::{collections::Vec, Bump};
use crate::{ use crate::{
ast::*,
errors::{CompilerError, Span}, errors::{CompilerError, Span},
lex::{Token, TokenKind}, lex::{Token, TokenKind},
syntax::ast::*,
}; };
#[derive(Debug)] #[derive(Debug)]

View file

@ -1,5 +1,5 @@
--- ---
source: src/parse/test.rs source: src/syntax/parse/test.rs
expression: ast expression: ast
--- ---
Assignment( Assignment(

View file

@ -1,5 +1,5 @@
--- ---
source: src/parse/test.rs source: src/syntax/parse/test.rs
expression: ast expression: ast
--- ---
Assignment( Assignment(

View file

@ -1,5 +1,5 @@
--- ---
source: src/parse/test.rs source: src/syntax/parse/test.rs
expression: ast expression: ast
--- ---
Block { Block {

View file

@ -1,5 +1,5 @@
--- ---
source: src/parse/test.rs source: src/syntax/parse/test.rs
expression: ast expression: ast
--- ---
Block { Block {

View file

@ -1,5 +1,5 @@
--- ---
source: src/parse/test.rs source: src/syntax/parse/test.rs
expression: ast expression: ast
--- ---
Block { Block {

View file

@ -1,5 +1,5 @@
--- ---
source: src/parse/test.rs source: src/syntax/parse/test.rs
expression: ast expression: ast
--- ---
Call( Call(

View file

@ -1,5 +1,5 @@
--- ---
source: src/parse/test.rs source: src/syntax/parse/test.rs
expression: ast expression: ast
--- ---
Call( Call(

View file

@ -1,5 +1,5 @@
--- ---
source: src/parse/test.rs source: src/syntax/parse/test.rs
expression: ast expression: ast
--- ---
Call( Call(

View file

@ -1,5 +1,5 @@
--- ---
source: src/parse/test.rs source: src/syntax/parse/test.rs
expression: ast expression: ast
--- ---
Call( Call(

View file

@ -1,5 +1,5 @@
--- ---
source: src/parse/test.rs source: src/syntax/parse/test.rs
expression: ast expression: ast
--- ---
Call( Call(

View file

@ -1,5 +1,5 @@
--- ---
source: src/parse/test.rs source: src/syntax/parse/test.rs
expression: ast expression: ast
--- ---
BinaryOp( BinaryOp(

View file

@ -1,5 +1,5 @@
--- ---
source: src/parse/test.rs source: src/syntax/parse/test.rs
expression: ast expression: ast
--- ---
BinaryOp( BinaryOp(

View file

@ -1,5 +1,5 @@
--- ---
source: src/parse/test.rs source: src/syntax/parse/test.rs
expression: ast expression: ast
--- ---
BinaryOp( BinaryOp(

View file

@ -1,5 +1,5 @@
--- ---
source: src/parse/test.rs source: src/syntax/parse/test.rs
expression: ast expression: ast
--- ---
BinaryOp( BinaryOp(

View file

@ -1,5 +1,5 @@
--- ---
source: src/parse/test.rs source: src/syntax/parse/test.rs
expression: ast expression: ast
--- ---
Literal( Literal(

View file

@ -1,5 +1,5 @@
--- ---
source: src/parse/test.rs source: src/syntax/parse/test.rs
expression: ast expression: ast
--- ---
BinaryOp( BinaryOp(

View file

@ -1,5 +1,5 @@
--- ---
source: src/parse/test.rs source: src/syntax/parse/test.rs
expression: ast expression: ast
--- ---
BinaryOp( BinaryOp(

View file

@ -1,5 +1,5 @@
--- ---
source: src/parse/test.rs source: src/syntax/parse/test.rs
expression: ast expression: ast
--- ---
Literal( Literal(

View file

@ -1,5 +1,5 @@
--- ---
source: src/parse/test.rs source: src/syntax/parse/test.rs
expression: ast expression: ast
--- ---
BinaryOp( BinaryOp(

View file

@ -1,5 +1,5 @@
--- ---
source: src/parse/test.rs source: src/syntax/parse/test.rs
expression: ast expression: ast
--- ---
BinaryOp( BinaryOp(

View file

@ -1,5 +1,5 @@
--- ---
source: src/parse/test.rs source: src/syntax/parse/test.rs
expression: ast expression: ast
--- ---
Literal( Literal(

View file

@ -1,5 +1,5 @@
--- ---
source: src/parse/test.rs source: src/syntax/parse/test.rs
expression: ast expression: ast
--- ---
BinaryOp( BinaryOp(

View file

@ -1,5 +1,5 @@
--- ---
source: src/parse/test.rs source: src/syntax/parse/test.rs
expression: ast expression: ast
--- ---
BinaryOp( BinaryOp(

View file

@ -1,5 +1,5 @@
--- ---
source: src/parse/test.rs source: src/syntax/parse/test.rs
expression: ast expression: ast
--- ---
BinaryOp( BinaryOp(

View file

@ -1,5 +1,5 @@
--- ---
source: src/parse/test.rs source: src/syntax/parse/test.rs
expression: ast expression: ast
--- ---
BinaryOp( BinaryOp(

View file

@ -1,5 +1,5 @@
--- ---
source: src/parse/test.rs source: src/syntax/parse/test.rs
expression: ast expression: ast
--- ---
Literal( Literal(

View file

@ -1,5 +1,5 @@
--- ---
source: src/parse/test.rs source: src/syntax/parse/test.rs
expression: ast expression: ast
--- ---
BinaryOp( BinaryOp(

View file

@ -0,0 +1,12 @@
---
source: src/syntax/parse/test.rs
expression: ast
---
Literal(
Number(
10.0,
Span(
0..0,
),
),
)

View file

@ -0,0 +1,12 @@
---
source: src/syntax/parse/test.rs
expression: ast
---
Literal(
Number(
10.0,
Span(
0..0,
),
),
)

View file

@ -1,5 +1,5 @@
--- ---
source: src/parse/test.rs source: src/syntax/parse/test.rs
expression: ast expression: ast
--- ---
BinaryOp( BinaryOp(

View file

@ -1,5 +1,5 @@
--- ---
source: src/parse/test.rs source: src/syntax/parse/test.rs
expression: ast expression: ast
--- ---
Literal( Literal(

View file

@ -1,5 +1,5 @@
--- ---
source: src/parse/test.rs source: src/syntax/parse/test.rs
expression: ast expression: ast
--- ---
Literal( Literal(

View file

@ -1,5 +1,5 @@
--- ---
source: src/parse/test.rs source: src/syntax/parse/test.rs
expression: ast expression: ast
--- ---
Literal( Literal(

View file

@ -1,5 +1,5 @@
--- ---
source: src/parse/test.rs source: src/syntax/parse/test.rs
expression: ast expression: ast
--- ---
Literal( Literal(

View file

@ -1,5 +1,5 @@
--- ---
source: src/parse/test.rs source: src/syntax/parse/test.rs
expression: ast expression: ast
--- ---
Ident( Ident(

View file

@ -1,5 +1,5 @@
--- ---
source: src/parse/test.rs source: src/syntax/parse/test.rs
expression: ast expression: ast
--- ---
Literal( Literal(

View file

@ -1,5 +1,5 @@
--- ---
source: src/parse/test.rs source: src/syntax/parse/test.rs
expression: ast expression: ast
--- ---
Literal( Literal(

View file

@ -1,5 +1,5 @@
--- ---
source: src/parse/test.rs source: src/syntax/parse/test.rs
expression: ast expression: ast
--- ---
Literal( Literal(

View file

@ -1,5 +1,5 @@
--- ---
source: src/parse/test.rs source: src/syntax/parse/test.rs
expression: ast expression: ast
--- ---
Literal( Literal(

View file

@ -0,0 +1,12 @@
---
source: src/syntax/parse/test.rs
expression: ast
---
Literal(
Number(
10.0,
Span(
0..0,
),
),
)

View file

@ -1,5 +1,5 @@
--- ---
source: src/parse/test.rs source: src/syntax/parse/test.rs
expression: ast expression: ast
--- ---
Literal( Literal(

View file

@ -1,5 +1,5 @@
--- ---
source: src/parse/test.rs source: src/syntax/parse/test.rs
expression: ast expression: ast
--- ---
Literal( Literal(

View file

@ -1,5 +1,5 @@
--- ---
source: src/parse/test.rs source: src/syntax/parse/test.rs
expression: ast expression: ast
--- ---
Literal( Literal(

View file

@ -1,5 +1,5 @@
--- ---
source: src/parse/test.rs source: src/syntax/parse/test.rs
expression: ast expression: ast
--- ---
Print( Print(

View file

@ -1,5 +1,5 @@
--- ---
source: src/parse/test.rs source: src/syntax/parse/test.rs
expression: ast expression: ast
--- ---
FnDecl( FnDecl(

View file

@ -1,5 +1,5 @@
--- ---
source: src/parse/test.rs source: src/syntax/parse/test.rs
expression: ast expression: ast
--- ---
FnDecl( FnDecl(

View file

@ -1,5 +1,5 @@
--- ---
source: src/parse/test.rs source: src/syntax/parse/test.rs
expression: ast expression: ast
--- ---
IfStmt { IfStmt {

View file

@ -1,5 +1,5 @@
--- ---
source: src/parse/test.rs source: src/syntax/parse/test.rs
expression: ast expression: ast
--- ---
IfStmt { IfStmt {

View file

@ -1,5 +1,5 @@
--- ---
source: src/parse/test.rs source: src/syntax/parse/test.rs
expression: ast expression: ast
--- ---
IfStmt { IfStmt {

View file

@ -1,5 +1,5 @@
--- ---
source: src/parse/test.rs source: src/syntax/parse/test.rs
expression: ast expression: ast
--- ---
IfStmt { IfStmt {

View file

@ -1,5 +1,5 @@
--- ---
source: src/parse/test.rs source: src/syntax/parse/test.rs
expression: ast expression: ast
--- ---
Loop( Loop(

View file

@ -1,5 +1,5 @@
--- ---
source: src/parse/test.rs source: src/syntax/parse/test.rs
expression: ast expression: ast
--- ---
Loop( Loop(

View file

@ -1,5 +1,5 @@
--- ---
source: src/parse/test.rs source: src/syntax/parse/test.rs
expression: ast expression: ast
--- ---
Loop( Loop(

View file

@ -1,5 +1,5 @@
--- ---
source: src/parse/test.rs source: src/syntax/parse/test.rs
expression: ast expression: ast
--- ---
While( While(

View file

@ -1,5 +1,5 @@
--- ---
source: src/parse/test.rs source: src/syntax/parse/test.rs
expression: ast expression: ast
--- ---
While( While(

View file

@ -1,5 +1,5 @@
--- ---
source: src/parse/test.rs source: src/syntax/parse/test.rs
expression: ast expression: ast
--- ---
BinaryOp( BinaryOp(

View file

@ -0,0 +1,12 @@
---
source: src/syntax/parse/test.rs
expression: ast
---
Literal(
Number(
10.0,
Span(
0..0,
),
),
)

View file

@ -1,5 +1,5 @@
--- ---
source: src/parse/test.rs source: src/syntax/parse/test.rs
expression: ast expression: ast
--- ---
BinaryOp( BinaryOp(

View file

@ -1,5 +1,5 @@
--- ---
source: src/parse/test.rs source: src/syntax/parse/test.rs
expression: ast expression: ast
--- ---
UnaryOp( UnaryOp(

View file

@ -1,5 +1,5 @@
--- ---
source: src/parse/test.rs source: src/syntax/parse/test.rs
expression: ast expression: ast
--- ---
UnaryOp( UnaryOp(

View file

@ -0,0 +1,12 @@
---
source: src/syntax/parse/test.rs
expression: ast
---
Literal(
Number(
10.0,
Span(
0..0,
),
),
)

View file

@ -11,8 +11,8 @@ use crate::{errors::Span, parse::Parser, RtAlloc};
mod prelude { mod prelude {
pub(super) use super::{parser, rt, test_literal_bin_op, test_number_literal, token}; pub(super) use super::{parser, rt, test_literal_bin_op, test_number_literal, token};
pub(super) use crate::{ pub(super) use crate::{
ast::{Expr, Stmt},
lex::TokenKind::*, lex::TokenKind::*,
syntax::ast::{Expr, Stmt},
}; };
pub type Token = crate::lex::Token; pub type Token = crate::lex::Token;
pub type TokenType = crate::lex::TokenKind; pub type TokenType = crate::lex::TokenKind;
@ -165,7 +165,7 @@ mod r#fn {
mod r#if { mod r#if {
use super::prelude::*; use super::prelude::*;
use crate::ast::IfStmt; use crate::syntax::ast::IfStmt;
fn parse_if(tokens: Vec<Token>, alloc: &Bump) -> IfStmt { fn parse_if(tokens: Vec<Token>, alloc: &Bump) -> IfStmt {
let mut parser = parser(tokens, alloc); let mut parser = parser(tokens, alloc);
@ -294,7 +294,7 @@ mod r#loop {
mod block { mod block {
use super::prelude::*; use super::prelude::*;
use crate::ast::Block; use crate::syntax::ast::Block;
fn parse_block(tokens: Vec<Token>, alloc: &Bump) -> Block { fn parse_block(tokens: Vec<Token>, alloc: &Bump) -> Block {
let mut parser = parser(tokens, alloc); let mut parser = parser(tokens, alloc);

View file

@ -1,5 +1,5 @@
--- ---
source: src/lex.rs source: src/syntax/lex.rs
expression: tokens expression: tokens
--- ---
[ [

View file

@ -1,5 +1,5 @@
--- ---
source: src/lex.rs source: src/syntax/lex.rs
expression: tokens expression: tokens
--- ---
[ [

View file

@ -1,5 +1,5 @@
--- ---
source: src/lex.rs source: src/syntax/lex.rs
expression: tokens expression: tokens
--- ---
[ [

View file

@ -1,5 +1,5 @@
--- ---
source: src/lex.rs source: src/syntax/lex.rs
expression: tokens expression: tokens
--- ---
[ [

View file

@ -1,5 +1,5 @@
--- ---
source: src/lex.rs source: src/syntax/lex.rs
expression: tokens expression: tokens
--- ---
[ [

View file

@ -1,5 +1,5 @@
--- ---
source: src/lex.rs source: src/syntax/lex.rs
expression: tokens expression: tokens
--- ---
[ [

View file

@ -1,5 +1,5 @@
--- ---
source: src/lex.rs source: src/syntax/lex.rs
expression: tokens expression: tokens
--- ---
[ [

View file

@ -1,5 +1,5 @@
--- ---
source: src/lex.rs source: src/syntax/lex.rs
expression: tokens expression: tokens
--- ---
[ [

View file

@ -1,5 +1,5 @@
--- ---
source: src/lex.rs source: src/syntax/lex.rs
expression: tokens expression: tokens
--- ---
[ [

View file

@ -1,5 +1,5 @@
--- ---
source: src/lex.rs source: src/syntax/lex.rs
expression: tokens expression: tokens
--- ---
[ [

View file

@ -1,5 +1,5 @@
--- ---
source: src/lex.rs source: src/syntax/lex.rs
expression: tokens expression: tokens
--- ---
[ [

View file

@ -1,5 +1,5 @@
--- ---
source: src/lex.rs source: src/syntax/lex.rs
expression: tokens expression: tokens
--- ---
[ [

View file

@ -1,5 +1,5 @@
--- ---
source: src/lex.rs source: src/syntax/lex.rs
expression: tokens expression: tokens
--- ---
[ [

View file

@ -1,5 +1,5 @@
--- ---
source: src/lex.rs source: src/syntax/lex.rs
expression: tokens expression: tokens
--- ---
[ [

View file

@ -1,5 +1,5 @@
--- ---
source: src/lex.rs source: src/syntax/lex.rs
expression: tokens expression: tokens
--- ---
[ [

View file

@ -1,5 +1,5 @@
--- ---
source: src/lex.rs source: src/syntax/lex.rs
expression: tokens expression: tokens
--- ---
[ [

View file

@ -1,5 +1,5 @@
--- ---
source: src/lex.rs source: src/syntax/lex.rs
expression: tokens expression: tokens
--- ---
[ [

View file

@ -1,5 +1,5 @@
--- ---
source: src/lex.rs source: src/syntax/lex.rs
expression: tokens expression: tokens
--- ---
[ [

View file

@ -1,5 +1,5 @@
--- ---
source: src/lex.rs source: src/syntax/lex.rs
expression: tokens expression: tokens
--- ---
[ [

View file

@ -1,5 +1,5 @@
--- ---
source: src/lex.rs source: src/syntax/lex.rs
expression: tokens expression: tokens
--- ---
[ [

View file

@ -1,6 +1,7 @@
#[macro_export] #[macro_export]
macro_rules! run_test { macro_rules! run_test {
($name:ident, $code:expr) => { ($(#[$attr:tt])* $name:ident, $code:expr) => {
$(#[$attr])*
#[test] #[test]
fn $name() { fn $name() {
let code = $code; let code = $code;

View file

@ -43,6 +43,7 @@ print "correct3";
); );
run_test!( run_test!(
#[ignore]
parameters, parameters,
r#" r#"
fn fancy_print(str) { fn fancy_print(str) {
@ -54,6 +55,7 @@ fancy_print("correct");
); );
run_test!( run_test!(
#[ignore]
parameters_and_return, parameters_and_return,
r#" r#"
fn add(a, b) { fn add(a, b) {
@ -71,6 +73,7 @@ if added == 6 {
); );
run_test!( run_test!(
#[ignore]
fib5, fib5,
r#" r#"
fn fib(n) { fn fib(n) {