Rust · 458 bytes Raw Blame History
1 #![no_main]
2
3 use libfuzzer_sys::fuzz_target;
4 use armfortas::lexer::{self, SourceForm};
5 use armfortas::parser::Parser;
6
7 fuzz_target!(|data: &[u8]| {
8 // Feed arbitrary bytes through lexer → parser. Neither may panic.
9 if let Ok(src) = std::str::from_utf8(data) {
10 if let Ok(tokens) = lexer::tokenize(src, 0, SourceForm::FreeForm) {
11 let mut parser = Parser::new(&tokens);
12 let _ = parser.parse_file();
13 }
14 }
15 });
16