diff --git a/lint/server.cc b/lint/server.cc index 71b0e21..57b4dd6 100644 --- a/lint/server.cc +++ b/lint/server.cc @@ -265,9 +265,25 @@ bool parse_code(const string& text, peg::parser& peg, string& json, shared_ptr

& syntax, const vector& source) @@ -275,8 +291,8 @@ int run_server(int port, const vector& syntax, const vector& source) Server svr; svr.get("/", [&](const Request& req, Response& res) { - replace_text(indexHTML, "{{syntax}}", string(syntax.data(), syntax.size())); - replace_text(indexHTML, "{{source}}", string(source.data(), source.size())); + indexHTML = replace_all(indexHTML, "{{syntax}}", string(syntax.data(), syntax.size()).c_str()); + indexHTML = replace_all(indexHTML, "{{source}}", string(source.data(), source.size()).c_str()); res.set_content(indexHTML, "text/html"); }); @@ -297,7 +313,10 @@ int run_server(int port, const vector& syntax, const vector& source) shared_ptr ast; if (parse_code(codeText, peg, codeResult, ast)) { astResult = peg::ast_to_s(ast); + astResult = replace_all(astResult, "\n", "\\n"); + astResultOptimized = peg::ast_to_s(peg::AstOptimizer(true).optimize(ast)); + astResultOptimized = replace_all(astResultOptimized, "\n", "\\n"); } } diff --git a/peglib.h b/peglib.h index 214d5e2..8d41773 100644 --- a/peglib.h +++ b/peglib.h @@ -2142,10 +2142,10 @@ void ast_to_s(const std::shared_ptr& ptr, std::string& s, int level = 0) { name = ast.original_name + " (" + ast.name + ")"; } if (ast.is_token) { - s += "- " + name + "(" + ast.token + ")\\n"; + s += "- " + name + "(" + ast.token + ")\n"; } else { - s += "+ " + name + "\\n"; + s += "+ " + name + "\n"; } for (auto node : ast.nodes) { ast_to_s(node, s, level + 1);