Compare commits

..

No commits in common. "61951d703449d1da0ed1a640c592ed030b589a45" and "e956c0e3a569e6180750a8f3cea6bfec35643db0" have entirely different histories.

5 changed files with 21 additions and 46 deletions

View file

@ -4,35 +4,33 @@
#include <string> #include <string>
//list of keywords //list of keywords
//types denoted by the index within the enum class
//this is so its easy to pass this info to the parser
enum class Keywords { enum class Keywords {
identifier, //type 0 identifier,
integer, //type 1 integer,
floatpnt, //type 2 floatpnt,
string, //type 3 string,
character, //type 4 character,
boolean, //type 5 boolean,
plus, //type 6 plus,
minus, //type 7 minus,
multiply, //type 8 multiply,
divide, //type 9 divide,
l_Paren, //type 10 l_Paren,
r_Paren, //type 11 r_Paren,
l_Brace, //type 12 l_Brace,
r_Brace, //type 13 r_Brace,
l_Brack, //type 14 l_Brack,
r_Brack, //type 15 r_Brack,
semicolon, //type 16 semicolon,
end_of_file, //type 17 end_of_file,
unknown //type 18 unknown
}; };
struct Token { struct Token {
Keywords type; Keywords type;
std::string value; std::string value;
Token(Keywords type, std::string value) : type(type), value(value) {} Token(Keywords type, std::string value) : type(type), value(value) {}
}; };

View file

@ -1,9 +0,0 @@
Type: 0, Value: int
Type: 0, Value: main
Type: 10, Value: (
Type: 11, Value: )
Type: 12, Value: {
Type: 0, Value: return
Type: 1, Value: 0
Type: 16, Value: ;
Type: 13, Value: }

Binary file not shown.

View file

@ -49,7 +49,7 @@ Lexer::Lexer(const std::string &input) {
Token Lexer::getNextToken() { Token Lexer::getNextToken() {
while (currentChar != '\0') { while (currentChar != '\0') {
//std::cout << currentChar << std::endl; std::cout << currentChar << std::endl;
if (std::isspace(currentChar)) { if (std::isspace(currentChar)) {
skipWhiteSpace(); skipWhiteSpace();

View file

@ -5,10 +5,6 @@
#include "/home/mason/code-shit/ProfaneC/headers/lexer.h" #include "/home/mason/code-shit/ProfaneC/headers/lexer.h"
//overloads the << operator to output token type as an integer
//followed by the token value
//the integers corrispond to the order defined in the Keywords enum class
//reference lexer.h for map of token types to indecies
std::ostream& operator<<(std::ostream& os, const Token& token) { std::ostream& operator<<(std::ostream& os, const Token& token) {
os << "Type: " << static_cast<int>(token.type) << ", Value: " << token.value; os << "Type: " << static_cast<int>(token.type) << ", Value: " << token.value;
return os; return os;
@ -48,15 +44,5 @@ int main() {
std::cout << tokenVec.at(i) << std::endl; std::cout << tokenVec.at(i) << std::endl;
} }
std::ofstream file_out("/home/mason/code-shit/ProfaneC/lexerOutput.txt");
if (file_out.is_open()) {
for (int i = 0; i < tokenVec.size(); i++) {
file_out << tokenVec.at(i) << std::endl;
}
}
file_out.close();
return 0; return 0;
} }