Add new lex() function to streamline lexing, change main to reflect this
This commit is contained in:
		@@ -40,3 +40,5 @@ public:
 | 
			
		||||
    std::vector<Token> collect();
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
// when you don't want to construct the object
 | 
			
		||||
std::vector<Token> lex(std::string);
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										14
									
								
								src/lex.cpp
									
									
									
									
									
								
							
							
						
						
									
										14
									
								
								src/lex.cpp
									
									
									
									
									
								
							@@ -135,5 +135,19 @@ Token Lexer::next() {
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
vector<Token> Lexer::collect() {
 | 
			
		||||
    vector<Token> v;
 | 
			
		||||
    while (true) {
 | 
			
		||||
        Token t = next();
 | 
			
		||||
        if (t.type == TokenType::End)
 | 
			
		||||
            break;
 | 
			
		||||
 | 
			
		||||
        v.push_back(t);
 | 
			
		||||
    }
 | 
			
		||||
    return v;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
std::vector<Token> lex(std::string s) {
 | 
			
		||||
    Lexer l(s);
 | 
			
		||||
    return l.collect();
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										11
									
								
								src/main.cpp
									
									
									
									
									
								
							
							
						
						
									
										11
									
								
								src/main.cpp
									
									
									
									
									
								
							@@ -1,14 +1,17 @@
 | 
			
		||||
#include <iostream>
 | 
			
		||||
#include <lex.hpp>
 | 
			
		||||
#include <sstream>
 | 
			
		||||
#include <string>
 | 
			
		||||
 | 
			
		||||
using namespace std;
 | 
			
		||||
 | 
			
		||||
int main() {
 | 
			
		||||
    string s;
 | 
			
		||||
    cin >> s;
 | 
			
		||||
    getline(cin, s);
 | 
			
		||||
    cout << s << endl;
 | 
			
		||||
    
 | 
			
		||||
    Lexer l(s);
 | 
			
		||||
    cout << l.next() << endl;
 | 
			
		||||
    for (auto t : lex(s)) {
 | 
			
		||||
        cout << t << " ";
 | 
			
		||||
    }
 | 
			
		||||
    cout << endl;
 | 
			
		||||
    return 0;
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user