From f0140881999f9229a7a2e385bf9dddea1579ff05 Mon Sep 17 00:00:00 2001 From: Garrett Dickinson Date: Wed, 9 Feb 2022 13:11:01 -0600 Subject: [PATCH] Initial Commit --- compile | 3 +++ lexer.cpp | 30 ++++++++++++++++++++++++++++++ lexer.h | 14 ++++++++++++++ main | Bin 0 -> 18896 bytes main.cpp | 15 +++++++++++++++ parser.cpp | 8 ++++++++ parser.h | 14 ++++++++++++++ script.prog | 3 +++ token.cpp | 0 token.h | 0 10 files changed, 87 insertions(+) create mode 100755 compile create mode 100644 lexer.cpp create mode 100644 lexer.h create mode 100755 main create mode 100644 main.cpp create mode 100644 parser.cpp create mode 100644 parser.h create mode 100644 script.prog create mode 100644 token.cpp create mode 100644 token.h diff --git a/compile b/compile new file mode 100755 index 0000000..99920a4 --- /dev/null +++ b/compile @@ -0,0 +1,3 @@ +#!/bin/bash + +g++ parser.cpp lexer.cpp main.cpp -o main \ No newline at end of file diff --git a/lexer.cpp b/lexer.cpp new file mode 100644 index 0000000..58146cc --- /dev/null +++ b/lexer.cpp @@ -0,0 +1,30 @@ +#include +#include +#include +#include "lexer.h" + +char c; +FILE* input_file; + +Lexer::Lexer(std::string &file_name) { + input_file = fopen(file_name.c_str(),"r"); + if(input_file == nullptr) { + std::cout << "[Error] Script " << input_file << " could not be read\n"; + exit(1); + } + + c = getc(input_file); + if (c == EOF) { + //do something related to eof here? + fclose(input_file); + } +} + +char nextChar() { + if (c != EOF) { + c = getc(input_file); + } else { + c = EOF; + } + return c; +} \ No newline at end of file diff --git a/lexer.h b/lexer.h new file mode 100644 index 0000000..1109ab2 --- /dev/null +++ b/lexer.h @@ -0,0 +1,14 @@ +#include + +#ifndef LEXER_H +#define LEXER_H + +class Lexer +{ + private: + std::string extension = ".prog"; + public: + Lexer(std::string &file_name); +}; + +#endif \ No newline at end of file diff --git a/main b/main new file mode 100755 index 0000000000000000000000000000000000000000..9df8f189f84e926e00cdb7534a2a89d03690accb GIT binary patch literal 18896 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 +#include +#include + +#include "lexer.h" + +int main(int argc, char *argv[]) { + if (argc > 1) { + std::string file_name(argv[1]); + Lexer lex(file_name); + } else { + std::cout << "[Error] No input file provided\n"; + } + return 0; +} \ No newline at end of file diff --git a/parser.cpp b/parser.cpp new file mode 100644 index 0000000..b2ee857 --- /dev/null +++ b/parser.cpp @@ -0,0 +1,8 @@ +#include +#include + +#include "parser.h" + +Parser::Parser(std::string input_file) { + +} \ No newline at end of file diff --git a/parser.h b/parser.h new file mode 100644 index 0000000..3ed0240 --- /dev/null +++ b/parser.h @@ -0,0 +1,14 @@ +#include + +#ifndef PARSER_H +#define PARSER_H + +class Parser +{ + private: + + public: + Parser(std::string input_file); +}; + +#endif \ No newline at end of file diff --git a/script.prog b/script.prog new file mode 100644 index 0000000..dd449f8 --- /dev/null +++ b/script.prog @@ -0,0 +1,3 @@ +hello world, this is a lexer test +hello world +Kanye's new name is Ye \ No newline at end of file diff --git a/token.cpp b/token.cpp new file mode 100644 index 0000000..e69de29 diff --git a/token.h b/token.h new file mode 100644 index 0000000..e69de29