diff --git a/apps/interpreter/source/main.cpp b/apps/interpreter/source/main.cpp index d559fb2..393fcce 100644 --- a/apps/interpreter/source/main.cpp +++ b/apps/interpreter/source/main.cpp @@ -4,6 +4,7 @@ #include #include +#include #include #include #include @@ -81,7 +82,7 @@ int main(int argc, char ** argv) try { filenames.push_back(argv[arg]); - parsed.push_back(parser::parse(argv[arg])); + parsed.push_back(parser::parse(filenames.back())); } catch (pslang::parser::parse_error const & error) { diff --git a/libs/parser/include/pslang/parser/parser.hpp b/libs/parser/include/pslang/parser/parser.hpp index 9cb1206..6090dbb 100644 --- a/libs/parser/include/pslang/parser/parser.hpp +++ b/libs/parser/include/pslang/parser/parser.hpp @@ -2,11 +2,11 @@ #include -#include +#include namespace pslang::parser { - ast::statement_list_ptr parse(std::filesystem::path const & file); + ast::statement_list_ptr parse(std::string_view path); } diff --git a/libs/parser/source/parser.cpp b/libs/parser/source/parser.cpp index 5e3aa2b..ecd346e 100644 --- a/libs/parser/source/parser.cpp +++ b/libs/parser/source/parser.cpp @@ -8,15 +8,13 @@ namespace pslang::parser { - ast::statement_list_ptr parse(std::filesystem::path const & file) + ast::statement_list_ptr parse(std::string_view path) { - auto filename = file.string(); - - yyin = fopen(filename.c_str(), "r"); + yyin = fopen(path.data(), "r"); if (!yyin) throw std::system_error(std::make_error_code(static_cast(errno))); - ast::location location{filename}; + ast::location location{path}; indented_statement_list result; context ctx{location, result};