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);