authorgravatar for pfg@pfg.pwpfg <pfg@pfg.pw> 2021-10-01 16:06:30-04:00
committergravatar for pfg@pfg.pwpfg <pfg@pfg.pw> 2021-10-01 16:06:30-04:00
logd5c5824c8031bedeb8c2394099fcf66d1b4efb79
tree9a0e6853234bcfe5dfa04a58be7b4c7eaea937e4
parentde92925897e4bf10f58a081d850e3f7eb265e9b6

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


2 files changed, 12 insertions(+), 3 deletions(-)

doc/docgen.zig+10-1
...@@ -313,6 +313,7 @@ const SyntaxBlock = struct {...@@ -313,6 +313,7 @@ const SyntaxBlock = struct {
313 const SourceType = enum {313 const SourceType = enum {
314 zig,314 zig,
315 c,315 c,
316 peg,
316 javascript,317 javascript,
317 };318 };
318};319};
...@@ -666,6 +667,8 @@ fn genToc(allocator: *Allocator, tokenizer: *Tokenizer) !Toc {...@@ -666,6 +667,8 @@ fn genToc(allocator: *Allocator, tokenizer: *Tokenizer) !Toc {
666 source_type = SyntaxBlock.SourceType.zig;667 source_type = SyntaxBlock.SourceType.zig;
667 } else if (mem.eql(u8, source_type_str, "c")) {668 } else if (mem.eql(u8, source_type_str, "c")) {
668 source_type = SyntaxBlock.SourceType.c;669 source_type = SyntaxBlock.SourceType.c;
670 } else if (mem.eql(u8, source_type_str, "peg")) {
671 source_type = SyntaxBlock.SourceType.c;
669 } else if (mem.eql(u8, source_type_str, "javascript")) {672 } else if (mem.eql(u8, source_type_str, "javascript")) {
670 source_type = SyntaxBlock.SourceType.javascript;673 source_type = SyntaxBlock.SourceType.javascript;
671 } else {674 } else {
...@@ -979,7 +982,6 @@ fn tokenizeAndPrintRaw(...@@ -979,7 +982,6 @@ fn tokenizeAndPrintRaw(
979 },982 },
980983
981 .string_literal,984 .string_literal,
982 .multiline_string_literal_line,
983 .char_literal,985 .char_literal,
984 => {986 => {
985 try out.writeAll("<span class=\"tok-str\">");987 try out.writeAll("<span class=\"tok-str\">");
...@@ -987,6 +989,13 @@ fn tokenizeAndPrintRaw(...@@ -987,6 +989,13 @@ fn tokenizeAndPrintRaw(
987 try out.writeAll("</span>");989 try out.writeAll("</span>");
988 },990 },
989991
992 .multiline_string_literal_line,
993 => {
994 try out.writeAll("<span class=\"tok-str\">");
995 try writeEscaped(out, src[token.loc.start..token.loc.end - 1]);
996 try out.writeAll("</span>" ++ end_line ++ "\n" ++ start_line);
997 },
998
990 .builtin => {999 .builtin => {
991 try out.writeAll("<span class=\"tok-builtin\">");1000 try out.writeAll("<span class=\"tok-builtin\">");
992 try writeEscaped(out, src[token.loc.start..token.loc.end]);1001 try writeEscaped(out, src[token.loc.start..token.loc.end]);
doc/langref.html.in+2-2
...@@ -11644,7 +11644,7 @@ fn readU32Be() u32 {}...@@ -11644,7 +11644,7 @@ fn readU32Be() u32 {}
11644 {#header_close#}11644 {#header_close#}
1164511645
11646 {#header_open|Grammar#}11646 {#header_open|Grammar#}
11647 <pre><code>Root &lt;- skip container_doc_comment? ContainerMembers eof11647 {#syntax_block|peg|zig.peg#}Root &lt;- skip container_doc_comment? ContainerMembers eof
1164811648
11649# *** Top level ***11649# *** Top level ***
11650ContainerMembers &lt;- ContainerDeclarations (ContainerField COMMA)* (ContainerField / ContainerDeclarations)11650ContainerMembers &lt;- ContainerDeclarations (ContainerField COMMA)* (ContainerField / ContainerDeclarations)
...@@ -12202,7 +12202,7 @@ keyword &lt;- KEYWORD_align / KEYWORD_allowzero / KEYWORD_and / KEYWORD_anyframe...@@ -12202,7 +12202,7 @@ keyword &lt;- KEYWORD_align / KEYWORD_allowzero / KEYWORD_and / KEYWORD_anyframe
12202 / KEYWORD_test / KEYWORD_threadlocal / KEYWORD_try12202 / KEYWORD_test / KEYWORD_threadlocal / KEYWORD_try
12203 / KEYWORD_union / KEYWORD_unreachable12203 / KEYWORD_union / KEYWORD_unreachable
12204 / KEYWORD_usingnamespace / KEYWORD_var / KEYWORD_volatile / KEYWORD_while12204 / KEYWORD_usingnamespace / KEYWORD_var / KEYWORD_volatile / KEYWORD_while
12205</code></pre>12205{#end_syntax_block#}
12206 {#header_close#}12206 {#header_close#}
12207 {#header_open|Zen#}12207 {#header_open|Zen#}
12208 <ul>12208 <ul>