Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Config config;
- config.grammar.start = "re";
- config.grammar.variables = {"re"};
- std::ifstream infile("regexLexer.lxs");
- config.grammar.terminals = lxs::input::InputParser::getTokens(infile);
- // config.grammar.terminals = {"CHAR"};
- config.parserType = "SLR(1)";
- config.lexesisFile = "regexLexer.lxs";
- //RULES
- config.grammar.rules.push_back(std::make_shared<Rule>(Rule("re", {"re", "PIPE", "re"}, "or", std::make_pair(true, std::make_pair(5,PrecedenceType::LEFT)))));
- config.grammar.rules.push_back(std::make_shared<Rule>(Rule("re", {"LPAREN", "re", "RPAREN"}, "paren", std::make_pair(true, std::make_pair(4,PrecedenceType::LEFT)))));
- config.grammar.rules.push_back(std::make_shared<Rule>(Rule("re", {"re", "STAR"}, "star", std::make_pair(true, std::make_pair(1,PrecedenceType::LEFT)))));
- config.grammar.rules.push_back(std::make_shared<Rule>(Rule("re", {"re", "PLUS"}, "plus", std::make_pair(true, std::make_pair(1,PrecedenceType::LEFT)))));
- config.grammar.rules.push_back(std::make_shared<Rule>(Rule("re", {"re", "QUESTIONMARK"}, "optional", std::make_pair(true, std::make_pair(1,PrecedenceType::LEFT)))));
- config.grammar.rules.push_back(std::make_shared<Rule>(Rule("re", {"re", "re"}, "concat", std::make_pair(true, std::make_pair(2,PrecedenceType::LEFT)))));
- for(auto term: config.grammar.terminals) {
- if(term == "STAR" || term == "PLUS" || term == "QUESTIONMARK" || term == "PIPE" || term == "LPAREN" || term == "RPAREN")
- continue;
- config.grammar.rules.push_back(std::make_shared<Rule>(Rule("re", {term}, "char", std::make_pair(true, std::make_pair(2,PrecedenceType::LEFT)))));
- }
- config.grammar.precedence["QUESTIONMARK"] = std::make_pair(1,PrecedenceType::LEFT);
- config.grammar.precedence["PLUS"] = std::make_pair(1,PrecedenceType::LEFT);
- config.grammar.precedence["STAR"] = std::make_pair(1,PrecedenceType::LEFT);
- config.grammar.precedence["PIPE"] = std::make_pair(5,PrecedenceType::LEFT);
- config.grammar.precedence["LPAREN"] = std::make_pair(2,PrecedenceType::LEFT);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement