| 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 |