diff --git a/afl-fuzz/.gitignore b/afl-fuzz/.gitignore deleted file mode 100644 index 3ed9c74..0000000 --- a/afl-fuzz/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -target -out \ No newline at end of file diff --git a/afl-fuzz/Cargo.lock b/afl-fuzz/Cargo.lock deleted file mode 100644 index 57114ff..0000000 --- a/afl-fuzz/Cargo.lock +++ /dev/null @@ -1,225 +0,0 @@ -# This file is automatically @generated by Cargo. -# It is not intended for manual editing. -version = 3 - -[[package]] -name = "afl" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a11168df76afe8cbf3a60e3bb5d9ec5d57cfc482a7bc96afc22006970bc04264" -dependencies = [ - "cc", - "clap", - "libc", - "rustc_version", - "xdg", -] - -[[package]] -name = "afl-fuzz" -version = "0.1.0" -dependencies = [ - "afl", - "script_lang", -] - -[[package]] -name = "ansi_term" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee49baf6cb617b853aa8d93bf420db2383fab46d314482ca2803b40d5fde979b" -dependencies = [ - "winapi", -] - -[[package]] -name = "atty" -version = "0.2.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8" -dependencies = [ - "hermit-abi", - "libc", - "winapi", -] - -[[package]] -name = "bitflags" -version = "1.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" - -[[package]] -name = "cc" -version = "1.0.71" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "79c2681d6594606957bbb8631c4b90a7fcaaa72cdb714743a437b156d6a7eedd" - -[[package]] -name = "cfg-if" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" - -[[package]] -name = "clap" -version = "2.33.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37e58ac78573c40708d45522f0d80fa2f01cc4f9b4e2bf749807255454312002" -dependencies = [ - "ansi_term", - "atty", - "bitflags", - "strsim", - "textwrap", - "unicode-width", - "vec_map", -] - -[[package]] -name = "dirs" -version = "3.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30baa043103c9d0c2a57cf537cc2f35623889dc0d405e6c3cccfadbc81c71309" -dependencies = [ - "dirs-sys", -] - -[[package]] -name = "dirs-sys" -version = "0.3.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03d86534ed367a67548dc68113a0f5db55432fdfbb6e6f9d77704397d95d5780" -dependencies = [ - "libc", - "redox_users", - "winapi", -] - -[[package]] -name = "getrandom" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7fcd999463524c52659517fe2cea98493cfe485d10565e7b0fb07dbba7ad2753" -dependencies = [ - "cfg-if", - "libc", - "wasi", -] - -[[package]] -name = "hermit-abi" -version = "0.1.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33" -dependencies = [ - "libc", -] - -[[package]] -name = "libc" -version = "0.2.106" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a60553f9a9e039a333b4e9b20573b9e9b9c0bb3a11e201ccc48ef4283456d673" - -[[package]] -name = "redox_syscall" -version = "0.2.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8383f39639269cde97d255a32bdb68c047337295414940c68bdd30c2e13203ff" -dependencies = [ - "bitflags", -] - -[[package]] -name = "redox_users" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "528532f3d801c87aec9def2add9ca802fe569e44a544afe633765267840abe64" -dependencies = [ - "getrandom", - "redox_syscall", -] - -[[package]] -name = "rustc_version" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366" -dependencies = [ - "semver", -] - -[[package]] -name = "script_lang" -version = "0.1.0" - -[[package]] -name = "semver" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "568a8e6258aa33c13358f81fd834adb854c6f7c9468520910a9b1e8fac068012" - -[[package]] -name = "strsim" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ea5119cdb4c55b55d432abb513a0429384878c15dde60cc77b1c99de1a95a6a" - -[[package]] -name = "textwrap" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d326610f408c7a4eb6f51c37c330e496b08506c9457c9d34287ecc38809fb060" -dependencies = [ - "unicode-width", -] - -[[package]] -name = "unicode-width" -version = "0.1.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ed742d4ea2bd1176e236172c8429aaf54486e7ac098db29ffe6529e0ce50973" - -[[package]] -name = "vec_map" -version = "0.8.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1bddf1187be692e79c5ffeab891132dfb0f236ed36a43c7ed39f1165ee20191" - -[[package]] -name = "wasi" -version = "0.10.2+wasi-snapshot-preview1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd6fbd9a79829dd1ad0cc20627bf1ed606756a7f77edff7b66b7064f9cb327c6" - -[[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-x86_64-pc-windows-gnu" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" - -[[package]] -name = "xdg" -version = "2.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a23fe958c70412687039c86f578938b4a0bb50ec788e96bce4d6ab00ddd5803" -dependencies = [ - "dirs", -] diff --git a/afl-fuzz/Cargo.toml b/afl-fuzz/Cargo.toml deleted file mode 100644 index 90d3211..0000000 --- a/afl-fuzz/Cargo.toml +++ /dev/null @@ -1,10 +0,0 @@ -[package] -name = "afl-fuzz" -version = "0.1.0" -edition = "2021" - -# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html - -[dependencies] -afl = "0.11.0" -script_lang = { path = ".." } diff --git a/afl-fuzz/in/program1 b/afl-fuzz/in/program1 deleted file mode 100644 index e38afd8..0000000 --- a/afl-fuzz/in/program1 +++ /dev/null @@ -1,9 +0,0 @@ -fn main() { - let x = 1 * 1 + 5; - print("hallo"); - main(); - - fn dead_at_this_point(test) { - print("cool" + 5); - } -} \ No newline at end of file diff --git a/afl-fuzz/src/main.rs b/afl-fuzz/src/main.rs deleted file mode 100644 index cb77ed3..0000000 --- a/afl-fuzz/src/main.rs +++ /dev/null @@ -1,13 +0,0 @@ -#[macro_use] -extern crate afl; - -fn main() { - fuzz!(|data: &[u8]| { - if let Ok(s) = std::str::from_utf8(data) { - let tokens = script_lang::Lexer::lex(s).collect::, _>>(); - if let Ok(tokens) = tokens { - let _ = script_lang::parse(tokens); - } - } - }); -} diff --git a/fuzz/Cargo.lock b/fuzz/Cargo.lock index 04a062b..664d30d 100644 --- a/fuzz/Cargo.lock +++ b/fuzz/Cargo.lock @@ -8,12 +8,33 @@ version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "577b08a4acd7b99869f863c50011b01eb73424ccc798ecd996f2e24817adfca7" +[[package]] +name = "bumpalo" +version = "3.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f1e260c3a9040a7c19a12468758f4c16f31a81a1fe087482be9570ec864bb6c" + [[package]] name = "cc" version = "1.0.71" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "79c2681d6594606957bbb8631c4b90a7fcaaa72cdb714743a437b156d6a7eedd" +[[package]] +name = "dilaria" +version = "0.1.0" +dependencies = [ + "bumpalo", +] + +[[package]] +name = "dilaria-fuzz" +version = "0.0.0" +dependencies = [ + "dilaria", + "libfuzzer-sys", +] + [[package]] name = "libfuzzer-sys" version = "0.4.2" @@ -30,15 +51,3 @@ name = "once_cell" version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "692fcb63b64b1758029e0a96ee63e049ce8c5948587f2f7208df04625e5f6b56" - -[[package]] -name = "script_lang" -version = "0.1.0" - -[[package]] -name = "script_lang-fuzz" -version = "0.0.0" -dependencies = [ - "libfuzzer-sys", - "script_lang", -] diff --git a/fuzz/Cargo.toml b/fuzz/Cargo.toml index 3ca8e57..99832a3 100644 --- a/fuzz/Cargo.toml +++ b/fuzz/Cargo.toml @@ -1,5 +1,5 @@ [package] -name = "script_lang-fuzz" +name = "dilaria-fuzz" version = "0.0.0" authors = ["Automatically generated"] publish = false @@ -11,7 +11,7 @@ cargo-fuzz = true [dependencies] libfuzzer-sys = "0.4" -[dependencies.script_lang] +[dependencies.dilaria] path = ".." # Prevent this from interfering with workspaces diff --git a/fuzz/fuzz_targets/lex.rs b/fuzz/fuzz_targets/lex.rs index 8373a10..a1ab5ec 100644 --- a/fuzz/fuzz_targets/lex.rs +++ b/fuzz/fuzz_targets/lex.rs @@ -2,6 +2,6 @@ use libfuzzer_sys::fuzz_target; fuzz_target!(|data: String| { - let lexer = script_lang::Lexer::lex(&data); - let _tokens = lexer.collect::>(); + let lexer = dilaria::Lexer::new(&data); + for _ in lexer {} }); diff --git a/fuzz/fuzz_targets/lex_parse.rs b/fuzz/fuzz_targets/lex_parse.rs index 750fa4b..c330781 100644 --- a/fuzz/fuzz_targets/lex_parse.rs +++ b/fuzz/fuzz_targets/lex_parse.rs @@ -2,10 +2,9 @@ use libfuzzer_sys::fuzz_target; fuzz_target!(|data: String| { - let lexer = script_lang::Lexer::lex(&data); - let tokens = lexer.collect::, _>>(); + let ast_alloc = dilaria::Bump::new(); - if let Ok(tokens) = tokens { - let _ast = script_lang::parse(tokens); - } + let lexer = dilaria::Lexer::new(&data); + + let _ast = dilaria::parse(lexer, &ast_alloc); }); diff --git a/src/lib.rs b/src/lib.rs index f40facc..f0da6cf 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -9,8 +9,8 @@ mod parse; mod value; use crate::ast::Program; -use bumpalo::Bump; +pub use bumpalo::Bump; pub use lex::*; pub use parse::*; diff --git a/src/parse.rs b/src/parse.rs index c082fbd..bf26f1f 100644 --- a/src/parse.rs +++ b/src/parse.rs @@ -546,7 +546,7 @@ where span: next.span, })) } - TokenKind::Error(error) => Err(error), + TokenKind::Error(error) => Err(*error), _ => Err(CompilerError::new( next.span, format!("invalid token in expression: `{:?}`", next.kind), @@ -570,7 +570,7 @@ where span, }) } - TokenKind::Error(error) => Err(error), + TokenKind::Error(error) => Err(*error), _ => { return Err(CompilerError::new( span, @@ -665,7 +665,7 @@ where if token.kind == kind { Ok(token) } else if let TokenKind::Error(err) = token.kind { - Err(err) + Err(*err) } else { Err(CompilerError::new( token.span, diff --git a/src/value.rs b/src/value.rs index 797e3f7..34db50c 100644 --- a/src/value.rs +++ b/src/value.rs @@ -1,3 +1,5 @@ +#![allow(dead_code)] + use std::collections::LinkedList; use std::fmt::{Debug, Formatter}; use std::ops::Deref;