aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJan Tuomi <jans.tuomi@gmail.com>2016-08-31 19:15:13 +0000
committerJan Tuomi <jans.tuomi@gmail.com>2016-08-31 19:15:13 +0000
commitb7eeb6676b8f67be7cc1560d9586f2672a5ad0eb (patch)
tree651f5c1dd84041b076b20ca2f4370ba6999b3d5f
parent251a9af5e8c4976373b71935457d1ce17c6888a1 (diff)
Print parsed tokens
-rw-r--r--main.cpp3
-rw-r--r--parser.cpp18
-rw-r--r--parser.h6
-rw-r--r--token.cpp3
-rw-r--r--token.h1
5 files changed, 31 insertions, 0 deletions
diff --git a/main.cpp b/main.cpp
index 22d58b9..0e8e367 100644
--- a/main.cpp
+++ b/main.cpp
@@ -21,5 +21,8 @@ int main(int argc, char** argv) {
std::string input = readFile(filename);
std::cout << input;
+ Parser parser(input);
+ parser.printTokens();
+
return 0;
}
diff --git a/parser.cpp b/parser.cpp
index 76da588..828b574 100644
--- a/parser.cpp
+++ b/parser.cpp
@@ -1,4 +1,5 @@
#include "parser.h"
+#include <iostream>
#include <string>
#include <vector>
#include "token.h"
@@ -9,6 +10,10 @@ Parser::Parser(std::string& input) {
bool isString = false;
std::string tmp;
for (auto& c : input) {
+ if (std::isspace(c)) {
+ continue;
+ }
+
if (c == '"' && !isString) {
isString = true;
continue;
@@ -31,4 +36,17 @@ Parser::Parser(std::string& input) {
tmp += c;
}
}
+
+ m_tokens = result;
+}
+
+std::vector<Token>& Parser::getTokens() {
+ return m_tokens;
+}
+
+void Parser::printTokens() {
+ for (auto& token : getTokens()) {
+ std::cout << "Token[" << token.getLexeme() << "] ";
+ }
+ std::cout << std::endl;
}
diff --git a/parser.h b/parser.h
index c29d8f1..eab8354 100644
--- a/parser.h
+++ b/parser.h
@@ -1,7 +1,13 @@
#pragma once
#include <string>
+#include "token.h"
+#include <vector>
class Parser {
+ private:
+ std::vector<Token> m_tokens;
public:
Parser(std::string&);
+ std::vector<Token>& getTokens();
+ void printTokens();
};
diff --git a/token.cpp b/token.cpp
index 560f89e..df8c82a 100644
--- a/token.cpp
+++ b/token.cpp
@@ -5,3 +5,6 @@ Token::Token(std::string& lexeme, bool isString) :
}
+const std::string& Token::getLexeme() const {
+ return m_lexeme;
+}
diff --git a/token.h b/token.h
index b6ad24d..0d3a314 100644
--- a/token.h
+++ b/token.h
@@ -8,4 +8,5 @@ class Token {
public:
Token(std::string& lexeme, bool isString);
+ const std::string& getLexeme() const;
};