mymarkdown

My markdown
git clone https://git.grace.moe/mymarkdown
Log | Files | Refs

commit bd0bdd9c77b55e65f23535c3530a88cd83a6edae
parent 63e46f804ff19a077cd7232bcb2c46bb8ee81db7
Author: gracefu <81774659+gracefuu@users.noreply.github.com>
Date:   Wed, 21 May 2025 13:00:04 +0800

Organise imports

Diffstat:
Msrc/Ast.zig | 5++---
Msrc/AstGen.zig | 21++++++++++-----------
Msrc/AstGen2.zig | 17++++++++---------
Msrc/AstGen3.zig | 19+++++++++----------
Msrc/IndentationScanner.zig | 31++++++++++++++-----------------
Msrc/main.zig | 13+++++--------
Msrc/root.zig | 4++--
7 files changed, 50 insertions(+), 60 deletions(-)

diff --git a/src/Ast.zig b/src/Ast.zig @@ -1,11 +1,10 @@ const std = @import("std"); -const Allocator = std.mem.Allocator; const assert = std.debug.assert; const tracy = @import("tracy"); -const utils = @import("utils.zig"); const str = @import("str.zig"); +const utils = @import("utils.zig"); const Ast = @This(); @@ -137,7 +136,7 @@ pub const Tagged = struct { pub const empty: Tagged = .{ .nodes = &.{}, .errors = &.{}, .extra = &.{} }; }; -pub fn toTagged(self: Ast, gpa: Allocator) !Tagged { +pub fn toTagged(self: Ast, gpa: std.mem.Allocator) !Tagged { const nodes = try gpa.alloc(Node.Tagged, self.nodes.len); const errors = try gpa.alloc(Error.Tagged, self.errors.len); const extra = try gpa.dupe(u32, self.extra); diff --git a/src/AstGen.zig b/src/AstGen.zig @@ -1,14 +1,13 @@ const std = @import("std"); -const Allocator = std.mem.Allocator; const assert = std.debug.assert; const tracy = @import("tracy"); -const utils = @import("utils.zig"); -const str = @import("str.zig"); const Ast = @import("Ast.zig"); const Node = Ast.Node; const Error = Ast.Error; +const str = @import("str.zig"); +const utils = @import("utils.zig"); const AstGen = @This(); @@ -29,7 +28,7 @@ fn nextNodeIdx(self: AstGen) Node.Idx { @setRuntimeSafety(true); return @enumFromInt(self.nodes.items.len); } -fn appendNode(self: *AstGen, gpa: Allocator, node: Node.Tagged) !Node.Idx { +fn appendNode(self: *AstGen, gpa: std.mem.Allocator, node: Node.Tagged) !Node.Idx { if (self.nodes.items.len > std.math.maxInt( @typeInfo(Node.Idx).@"enum".tag_type, )) return error.OutOfNodeIdx; @@ -38,7 +37,7 @@ fn appendNode(self: *AstGen, gpa: Allocator, node: Node.Tagged) !Node.Idx { return @enumFromInt(idx); } -pub fn deinit(self: *AstGen, gpa: Allocator) void { +pub fn deinit(self: *AstGen, gpa: std.mem.Allocator) void { self.nodes.deinit(gpa); self.errors.deinit(gpa); self.extra.deinit(gpa); @@ -51,8 +50,8 @@ pub fn deinit(self: *AstGen, gpa: Allocator) void { /// and any allocations returned will be allocated on this. /// input: The input slice to be parsed. pub fn parse( - gpa: Allocator, - output_gpa: ?Allocator, + gpa: std.mem.Allocator, + output_gpa: ?std.mem.Allocator, input: []const u8, ) error{ InputTooLarge, // When the input length exceeds 2^32 bytes @@ -146,7 +145,7 @@ fn calcOffset(self: *AstGen, c: *u8) u32 { return @intCast(c - self.input_base); } -fn findIndentedColumn(self: *AstGen, gpa: Allocator, lines_: [][]u8, node_idx: Node.Idx) ![][]u8 { +fn findIndentedColumn(self: *AstGen, gpa: std.mem.Allocator, lines_: [][]u8, node_idx: Node.Idx) ![][]u8 { const tracy_frame = tracy.trace(@src()); defer tracy_frame.end(); var lines = lines_; @@ -188,7 +187,7 @@ fn findIndentedColumn(self: *AstGen, gpa: Allocator, lines_: [][]u8, node_idx: N return lines; } -fn parseInlineBlock(self: *AstGen, gpa: Allocator, lines_: [][]u8, parent_idx: Node.Idx) !void { +fn parseInlineBlock(self: *AstGen, gpa: std.mem.Allocator, lines_: [][]u8, parent_idx: Node.Idx) !void { const tracy_frame = tracy.trace(@src()); defer tracy_frame.end(); var lines = lines_; @@ -280,7 +279,7 @@ fn parseInlineBlock(self: *AstGen, gpa: Allocator, lines_: [][]u8, parent_idx: N } } -fn parseColumn(self: *AstGen, gpa: Allocator, lines_: [][]u8, parent_idx: Node.Idx) !void { +fn parseColumn(self: *AstGen, gpa: std.mem.Allocator, lines_: [][]u8, parent_idx: Node.Idx) !void { const tracy_frame = tracy.trace(@src()); defer tracy_frame.end(); var lines = lines_; @@ -479,7 +478,7 @@ const block_specs = blockSpecs(struct { /// Appends the suitable block node to the ast, /// then returns how parsing should proceed for the children of this block. /// Also returns the idx of the container node created. -fn parseBlockStart(self: *AstGen, gpa: Allocator, line: []u8) !struct { ParseMode, Node.Idx } { +fn parseBlockStart(self: *AstGen, gpa: std.mem.Allocator, line: []u8) !struct { ParseMode, Node.Idx } { const tracy_frame = tracy.trace(@src()); defer tracy_frame.end(); if (block_specs[line[0]] == null) { diff --git a/src/AstGen2.zig b/src/AstGen2.zig @@ -1,23 +1,20 @@ const std = @import("std"); -const Allocator = std.mem.Allocator; const assert = std.debug.assert; const tracy = @import("tracy"); -const utils = @import("utils.zig"); -const str = @import("str.zig"); const Ast = @import("Ast.zig"); const StrOffset = Ast.StrOffset; const StrLen = Ast.StrLen; const Node = Ast.Node; const Error = Ast.Error; - -const Column = u10; +const str = @import("str.zig"); +const utils = @import("utils.zig"); const AstGen = @This(); -gpa: Allocator, -output_gpa: Allocator, +gpa: std.mem.Allocator, +output_gpa: std.mem.Allocator, output_gpa_same_as_gpa: bool, input: []const u8, cursor: []const u8, // suffix of input @@ -26,6 +23,8 @@ nodes: std.ArrayListUnmanaged(Node), errors: std.ArrayListUnmanaged(Error), extra: std.ArrayListUnmanaged(u32), +const Column = u10; + fn cursorOffset(self: *AstGen) StrOffset { return @intCast(self.cursor.ptr - self.input.ptr); } @@ -138,8 +137,8 @@ pub fn deinit(self: *AstGen) void { /// : `IndentationTooLong` /// + This implementation of mymarkdown supports up to 1023 characters of indentation. pub fn parse( - gpa: Allocator, - output_gpa: ?Allocator, + gpa: std.mem.Allocator, + output_gpa: ?std.mem.Allocator, input: []const u8, ) !Ast { const tracy_frame = tracy.trace(@src()); diff --git a/src/AstGen3.zig b/src/AstGen3.zig @@ -1,25 +1,24 @@ const std = @import("std"); -const Allocator = std.mem.Allocator; const assert = std.debug.assert; const tracy = @import("tracy"); -const utils = @import("utils.zig"); -const str = @import("str.zig"); const Ast = @import("Ast.zig"); const StrOffset = Ast.StrOffset; const StrLen = Ast.StrLen; const Node = Ast.Node; const Error = Ast.Error; -const PaddedSlice = @import("padded_str.zig").PaddedSlice; -const PaddedMany = @import("padded_str.zig").PaddedMany; const IndentationScanner = @import("IndentationScanner.zig"); const IndentAlignment = IndentationScanner.IndentAlignment; +const PaddedMany = @import("padded_str.zig").PaddedMany; +const PaddedSlice = @import("padded_str.zig").PaddedSlice; +const str = @import("str.zig"); +const utils = @import("utils.zig"); const AstGen = @This(); -gpa: Allocator, -output_gpa: Allocator, +gpa: std.mem.Allocator, +output_gpa: std.mem.Allocator, output_gpa_same_as_gpa: bool, input: PaddedSlice, scanner: IndentationScanner, @@ -126,8 +125,8 @@ pub fn deinit(self: *AstGen) void { /// : `IndentationTooLong` /// + This implementation of mymarkdown supports up to 1023 characters of indentation. pub fn parse( - gpa: Allocator, - output_gpa: ?Allocator, + gpa: std.mem.Allocator, + output_gpa: ?std.mem.Allocator, input_: []const u8, ) !Ast { const tracy_frame = tracy.trace(@src()); @@ -194,7 +193,7 @@ fn parseColumn( MarkerTooLong, OutOfNodeIdx, OutOfErrorIdx, -} || Allocator.Error)!void { +} || std.mem.Allocator.Error)!void { return self.parseColumnImpl(parent_idx); } diff --git a/src/IndentationScanner.zig b/src/IndentationScanner.zig @@ -166,6 +166,18 @@ //! line 3 //! == +const std = @import("std"); +const maxInt = std.math.maxInt; +const assert = std.debug.assert; +const testing = std.testing; + +const padded_str = @import("padded_str.zig"); +const PaddedMany = @import("padded_str.zig").PaddedMany; +const PaddedSlice = @import("padded_str.zig").PaddedSlice; +const str = @import("str.zig"); + +const IndentationScanner = @This(); + // ================================== // Fields Fields Fields Fields Fields @@ -302,22 +314,8 @@ fn curExpectedIndents(it: *const IndentationScanner) ExpectedIndent { return it._expected_indents.buffer[it._expected_indents.len - 1]; } -// ======================================= -// Imports Imports Imports Imports Imports -// Types Types Types Types Types Types - -const std = @import("std"); -const maxInt = std.math.maxInt; -const assert = std.debug.assert; -const Allocator = std.mem.Allocator; - -const str = @import("str.zig"); -const padded_str = @import("padded_str.zig"); - -const IndentationScanner = @This(); - -const PaddedSlice = @import("padded_str.zig").PaddedSlice; -const PaddedMany = @import("padded_str.zig").PaddedMany; +// =================================== +// Types Types Types Types Types Types const NumSpaces = usize; const MAX_SPACES = maxInt(NumSpaces); @@ -357,7 +355,6 @@ pub const PeekResult = ?struct { IndentAlignment, PaddedSlice }; // ======================================= // Testing Testing Testing Testing Testing -const testing = std.testing; inline fn expectEqualDeep(comptime T: type, expected: T, actual: T) !void { try testing.expectEqualDeep(expected, actual); } diff --git a/src/main.zig b/src/main.zig @@ -1,10 +1,7 @@ const std = @import("std"); -const tracy = @import("tracy"); const mymarkdown = @import("mymarkdown"); -const Ast = mymarkdown.Ast; - -const ArenaAllocator = std.heap.ArenaAllocator; +const tracy = @import("tracy"); fn readInput(gpa: std.mem.Allocator, arena: std.mem.Allocator) !std.ArrayList(u8) { const stdin = std.io.getStdIn(); @@ -35,7 +32,7 @@ pub fn main() !void { }; }; defer _ = if (is_debug) debug_allocator.deinit(); - var arena_instance: ArenaAllocator = .init(gpa); + var arena_instance: std.heap.ArenaAllocator = .init(gpa); defer arena_instance.deinit(); const arena = arena_instance.allocator(); @@ -123,7 +120,7 @@ pub fn main() !void { } if (!bench1 and !bench2 and !bench3) { - const ast: Ast = if (run1) blk: { + const ast: mymarkdown.Ast = if (run1) blk: { const tracy_frame = tracy.namedFrame("parse 1"); defer tracy_frame.end(); break :blk try mymarkdown.parse( @@ -132,7 +129,7 @@ pub fn main() !void { input, ); } else .empty; - const ast2: Ast = if (run2) blk: { + const ast2: mymarkdown.Ast = if (run2) blk: { const tracy_frame = tracy.namedFrame("parse 2"); defer tracy_frame.end(); break :blk try mymarkdown.parse2( @@ -141,7 +138,7 @@ pub fn main() !void { input, ); } else .empty; - const ast3: Ast = if (run3) blk: { + const ast3: mymarkdown.Ast = if (run3) blk: { const tracy_frame = tracy.namedFrame("parse 3"); defer tracy_frame.end(); break :blk try mymarkdown.parse3( diff --git a/src/root.zig b/src/root.zig @@ -2,10 +2,10 @@ const std = @import("std"); pub const Ast = @import("Ast.zig"); pub const AstGen = @import("AstGen.zig"); -pub const AstGen2 = @import("AstGen2.zig"); -pub const AstGen3 = @import("AstGen3.zig"); pub const parse = AstGen.parse; +pub const AstGen2 = @import("AstGen2.zig"); pub const parse2 = AstGen2.parse; +pub const AstGen3 = @import("AstGen3.zig"); pub const parse3 = AstGen3.parse; test {