1#include "gsc/error.hpp"
2#include "gsc/interpreter.hpp"
3#include "gsc/parser.hpp"
4#include "gsc/scanner.hpp"
5#include "gsc/token.hpp"
10void runFile(std::string_view filename);
15int main(
int argc,
char *argv[]) {
17 std::cerr <<
"Usage: " << argv[0] <<
" [file.gsc]" << std::endl;
18 std::exit(EXIT_FAILURE);
19 }
else if (argc == 2) {
26std::string
readFile(std::string_view filename) {
27 std::ifstream file(filename.data());
30 std::cerr <<
"Could not open file: " << filename << std::endl;
31 std::exit(EXIT_FAILURE);
33 std::string content{std::istreambuf_iterator<
char>(file),
34 std::istreambuf_iterator<
char>()};
39void run(std::string_view program) {
40 Scanner scanner{program};
42 std::vector<Token> tokens = scanner.getTokens();
43 Parser parser{tokens};
44 std::vector<std::shared_ptr<Stmt>> statements = parser.parse();
47 std::cerr <<
"Error while parsing the program." << std::endl;
49 interpreter.interpret(statements);
54 std::string program = readFile(filename);
58 std::cerr <<
"Error while running file: " << filename << std::endl;
59 std::exit(EXIT_FAILURE);
60 }
else if (hadRuntimeError) {
61 std::cerr <<
"Runtime error occurred while running file: " << filename
63 std::exit(EXIT_FAILURE);
71 if (!std::getline(std::cin, line)) {
72 std::cout << std::endl;
int main(int argc, char *argv[])
void run(std::string_view program)
void runFile(std::string_view filename)
std::string readFile(std::string_view filename)