diff --git a/CMakeLists.txt b/CMakeLists.txt index fda821c..0450cd5 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -11,7 +11,7 @@ set(CMAKE_CXX_STANDARD_REQUIRED ON) set(HEADER_FILES src/include/lex.hpp) set(SOURCE_FILES src/lex.cpp) -set(CXX_WARNING_FLAGS -Wall -Wextra -Wpedantic -pedantic -Werror) +set(CXX_WARNING_FLAGS -Wall -Wextra -Wpedantic -pedantic) # we're not actually shipping a library yet, # this is so we don't have to compile twice for main and tests. diff --git a/src/include/lex.hpp b/src/include/lex.hpp index c66b5b0..957e370 100644 --- a/src/include/lex.hpp +++ b/src/include/lex.hpp @@ -1,4 +1,5 @@ #pragma once +#include #include #include #include @@ -40,8 +41,8 @@ public: void feed(std::string); Token next(); - std::vector collect(); + std::deque collect(); }; // when you don't want to construct the object -std::vector lex(std::string); +std::deque lex(std::string); diff --git a/src/lex.cpp b/src/lex.cpp index b8ed457..e4011fd 100644 --- a/src/lex.cpp +++ b/src/lex.cpp @@ -9,14 +9,14 @@ using namespace std; std::ostream &operator<<(std::ostream &os, Token const &t) { os << "Token("; switch (t.type) { - case TokenType::OpenParen: os << "OpenParen)"; break; - case TokenType::CloseParen: os << "CloseParen)"; break; - case TokenType::Dollar: os << "Dollar)"; break; - case TokenType::Symbol: os << "Symbol, " << get(*t.value) << ")"; break; - case TokenType::String: os << "String, \"" << get(*t.value) << "\")"; break; - case TokenType::Int: os << "Int, " << get(*t.value) << ")"; break; - case TokenType::Double: os << "Double, " << get(*t.value) << ")"; break; - case TokenType::End: os << "END)"; break; + case OpenParen: os << "OpenParen)"; break; + case CloseParen: os << "CloseParen)"; break; + case Dollar: os << "Dollar)"; break; + case Symbol: os << "Symbol, " << get(*t.value) << ")"; break; + case String: os << "String, \"" << get(*t.value) << "\")"; break; + case Int: os << "Int, " << get(*t.value) << ")"; break; + case Double: os << "Double, " << get(*t.value) << ")"; break; + case End: os << "END)"; break; default: os << ")"; } @@ -146,8 +146,8 @@ Token Lexer::next() { } } -vector Lexer::collect() { - vector v; +deque Lexer::collect() { + deque v; while (true) { Token t = next(); if (t.type == TokenType::End) @@ -158,7 +158,7 @@ vector Lexer::collect() { return v; } -std::vector lex(std::string s) { +std::deque lex(std::string s) { Lexer l(s); return l.collect(); } diff --git a/src/main.cpp b/src/main.cpp index 5501e6c..9e20c1a 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -8,7 +8,6 @@ int main() { string s; getline(cin, s); cout << s << endl; - for (auto t : lex(s)) { cout << t << " "; }