From a0e33835ed343e319bf2a5eb46c8095ab0776ab9 Mon Sep 17 00:00:00 2001 From: nils <48135649+Nilstrieb@users.noreply.github.com> Date: Mon, 18 Jul 2022 16:17:57 +0200 Subject: [PATCH] add file resolver --- parser/src/pre/mod.rs | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) 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 }