Added quoted string, single quoted string, and comma lexing
This commit is contained in:
@@ -10,7 +10,7 @@
|
|||||||
//#include "eval.hpp"
|
//#include "eval.hpp"
|
||||||
|
|
||||||
class TokenType { public: enum Type { Whitespace, Identifier, Number, Operator, Parens_Open, Parens_Close,
|
class TokenType { public: enum Type { Whitespace, Identifier, Number, Operator, Parens_Open, Parens_Close,
|
||||||
Square_Open, Square_Close, Curly_Open, Curly_Close }; };
|
Square_Open, Square_Close, Curly_Open, Curly_Close, Comma, Quoted_String, Single_Quoted_String }; };
|
||||||
|
|
||||||
void debug_print(std::vector<Token> &tokens) {
|
void debug_print(std::vector<Token> &tokens) {
|
||||||
for (unsigned int i = 0; i < tokens.size(); ++i) {
|
for (unsigned int i = 0; i < tokens.size(); ++i) {
|
||||||
@@ -33,7 +33,10 @@ int main(int argc, char *argv[]) {
|
|||||||
lexer << Pattern("\\]", TokenType::Square_Close);
|
lexer << Pattern("\\]", TokenType::Square_Close);
|
||||||
lexer << Pattern("\\{", TokenType::Curly_Open);
|
lexer << Pattern("\\{", TokenType::Curly_Open);
|
||||||
lexer << Pattern("\\}", TokenType::Curly_Close);
|
lexer << Pattern("\\}", TokenType::Curly_Close);
|
||||||
|
lexer << Pattern(",", TokenType::Comma);
|
||||||
lexer << Pattern("[!@#$%^&*\\-+=/<>]+", TokenType::Operator);
|
lexer << Pattern("[!@#$%^&*\\-+=/<>]+", TokenType::Operator);
|
||||||
|
lexer << Pattern("\"(?:[^\"\\\\]|\\\\.)*\"", TokenType::Quoted_String);
|
||||||
|
lexer << Pattern("'(?:[^'\\\\]|\\\\.)*'", TokenType::Single_Quoted_String);
|
||||||
|
|
||||||
std::cout << "Expression> ";
|
std::cout << "Expression> ";
|
||||||
std::getline(std::cin, input);
|
std::getline(std::cin, input);
|
||||||
|
Reference in New Issue
Block a user