fix line numbers on multiline strings, add line numbers to peg grammar

This commit is contained in:
pfg 2021-10-01 16:06:30 -04:00
parent de92925897
commit d5c5824c80
2 changed files with 12 additions and 3 deletions

View File

@ -313,6 +313,7 @@ const SyntaxBlock = struct {
const SourceType = enum {
zig,
c,
peg,
javascript,
};
};
@ -666,6 +667,8 @@ fn genToc(allocator: *Allocator, tokenizer: *Tokenizer) !Toc {
source_type = SyntaxBlock.SourceType.zig;
} else if (mem.eql(u8, source_type_str, "c")) {
source_type = SyntaxBlock.SourceType.c;
} else if (mem.eql(u8, source_type_str, "peg")) {
source_type = SyntaxBlock.SourceType.c;
} else if (mem.eql(u8, source_type_str, "javascript")) {
source_type = SyntaxBlock.SourceType.javascript;
} else {
@ -979,7 +982,6 @@ fn tokenizeAndPrintRaw(
},
.string_literal,
.multiline_string_literal_line,
.char_literal,
=> {
try out.writeAll("<span class=\"tok-str\">");
@ -987,6 +989,13 @@ fn tokenizeAndPrintRaw(
try out.writeAll("</span>");
},
.multiline_string_literal_line,
=> {
try out.writeAll("<span class=\"tok-str\">");
try writeEscaped(out, src[token.loc.start..token.loc.end - 1]);
try out.writeAll("</span>" ++ end_line ++ "\n" ++ start_line);
},
.builtin => {
try out.writeAll("<span class=\"tok-builtin\">");
try writeEscaped(out, src[token.loc.start..token.loc.end]);

View File

@ -11644,7 +11644,7 @@ fn readU32Be() u32 {}
{#header_close#}
{#header_open|Grammar#}
<pre><code>Root &lt;- skip container_doc_comment? ContainerMembers eof
{#syntax_block|peg|zig.peg#}Root &lt;- skip container_doc_comment? ContainerMembers eof
# *** Top level ***
ContainerMembers &lt;- ContainerDeclarations (ContainerField COMMA)* (ContainerField / ContainerDeclarations)
@ -12202,7 +12202,7 @@ keyword &lt;- KEYWORD_align / KEYWORD_allowzero / KEYWORD_and / KEYWORD_anyframe
/ KEYWORD_test / KEYWORD_threadlocal / KEYWORD_try
/ KEYWORD_union / KEYWORD_unreachable
/ KEYWORD_usingnamespace / KEYWORD_var / KEYWORD_volatile / KEYWORD_while
</code></pre>
{#end_syntax_block#}
{#header_close#}
{#header_open|Zen#}
<ul>