diff --git a/parser/src/pre/mod.rs b/parser/src/pre/mod.rs index d03a8a6..1ff4bb3 100644 --- a/parser/src/pre/mod.rs +++ b/parser/src/pre/mod.rs @@ -1,12 +1,32 @@ mod lexer; +use std::{io, path::Path}; + use lexer::PLexer; pub use lexer::{PToken, Punctuator}; use crate::Span; +enum IncludeKind { + AngleBracketed, + Quoted, +} + +trait FileResolver { + fn resolve_file(&self, file_name: &Path, kind: IncludeKind) -> io::Result>; +} + +struct Todo; + +impl FileResolver for Todo { + fn resolve_file(&self, file_name: &Path, kind: IncludeKind) -> io::Result> { + todo!() + } +} + pub struct Preprocessor { lexer: L, + resolver: Box, } impl<'src, L> Iterator for Preprocessor @@ -23,7 +43,10 @@ where pub fn preprocess_tokens(src: &str) -> impl Iterator, Span)> { let lexer = PLexer::new(src); - let preprocessor = Preprocessor { lexer }; + let preprocessor = Preprocessor { + lexer, + resolver: Box::new(Todo), + }; preprocessor }