diff options
Diffstat (limited to 'tests/lexers/zig/example.txt')
| -rw-r--r-- | tests/lexers/zig/example.txt | 2927 |
1 files changed, 2927 insertions, 0 deletions
diff --git a/tests/lexers/zig/example.txt b/tests/lexers/zig/example.txt new file mode 100644 index 00000000..ba2f58f4 --- /dev/null +++ b/tests/lexers/zig/example.txt @@ -0,0 +1,2927 @@ +---input--- +const std = @import("std"); +const Allocator = mem.Allocator; +const mem = std.mem; +const ast = std.zig.ast; +const Visib = @import("visib.zig").Visib; +const event = std.event; +const Value = @import("value.zig").Value; +const Token = std.zig.Token; +const errmsg = @import("errmsg.zig"); +const Scope = @import("scope.zig").Scope; +const Compilation = @import("compilation.zig").Compilation; + +pub const Decl = struct { + id: Id, + name: []const u8, + visib: Visib, + resolution: event.Future(Compilation.BuildError!void), + parent_scope: *Scope, + + // TODO when we destroy the decl, deref the tree scope + tree_scope: *Scope.AstTree, + + pub const Table = std.HashMap([]const u8, *Decl, mem.hash_slice_u8, mem.eql_slice_u8); + + pub fn cast(base: *Decl, comptime T: type) ?*T { + if (base.id != @field(Id, @typeName(T))) return null; + return @fieldParentPtr(T, "base", base); + } + + pub fn isExported(base: *const Decl, tree: *ast.Tree) bool { + switch (base.id) { + Id.Fn => { + const fn_decl = @fieldParentPtr(Fn, "base", base); + return fn_decl.isExported(tree); + }, + else => return false, + } + } + + pub fn getSpan(base: *const Decl) errmsg.Span { + switch (base.id) { + Id.Fn => { + const fn_decl = @fieldParentPtr(Fn, "base", base); + const fn_proto = fn_decl.fn_proto; + const start = fn_proto.fn_token; + const end = fn_proto.name_token orelse start; + return errmsg.Span{ + .first = start, + .last = end + 1, + }; + }, + else => @panic("TODO"), + } + } + + pub fn findRootScope(base: *const Decl) *Scope.Root { + return base.parent_scope.findRoot(); + } + + pub const Id = enum { + Var, + Fn, + CompTime, + }; + + pub const Var = struct { + base: Decl, + }; + + pub const Fn = struct { + base: Decl, + value: Val, + fn_proto: *ast.Node.FnProto, + + // TODO https://github.com/ziglang/zig/issues/683 and then make this anonymous + pub const Val = union(enum) { + Unresolved: void, + Fn: *Value.Fn, + FnProto: *Value.FnProto, + }; + + pub fn externLibName(self: Fn, tree: *ast.Tree) ?[]const u8 { + return if (self.fn_proto.extern_export_inline_token) |tok_index| x: { + const token = tree.tokens.at(tok_index); + break :x switch (token.id) { + Token.Id.Extern => tree.tokenSlicePtr(token), + else => null, + }; + } else null; + } + + pub fn isExported(self: Fn, tree: *ast.Tree) bool { + if (self.fn_proto.extern_export_inline_token) |tok_index| { + const token = tree.tokens.at(tok_index); + return token.id == Token.Id.Keyword_export; + } else { + return false; + } + } + }; + + pub const CompTime = struct { + base: Decl, + }; +}; + +pub const info_zen = + \\ + \\ * Communicate intent precisely. + \\ * Edge cases matter. + \\ * Favor reading code over writing code. + \\ * Only one obvious way to do things. + \\ * Runtime crashes are better than bugs. + \\ * Compile errors are better than runtime crashes. + \\ * Incremental improvements. + \\ * Avoid local maximums. + \\ * Reduce the amount one must remember. + \\ * Minimize energy spent on coding style. + \\ * Together we serve end users. + \\ + \\ +; + +fn cmdZen(allocator: *Allocator, args: []const []const u8) !void { + try stdout.write(info_zen); +} + +const usage_internal = + \\usage: zig internal [subcommand] + \\ + \\Sub-Commands: + \\ build-info Print static compiler build-info + \\ + \\ +; + +fn cmdInternal(allocator: *Allocator, args: []const []const u8) !void { + if (args.len == 0) { + try stderr.write(usage_internal); + os.exit(1); + } + + const sub_commands = []Command{Command{ + .name = "build-info", + .exec = cmdInternalBuildInfo, + }}; + + for (sub_commands) |sub_command| { + if (mem.eql(u8, sub_command.name, args[0])) { + try sub_command.exec(allocator, args[1..]); + return; + } + } + + try stderr.print("unknown sub command: {}\n\n", args[0]); + try stderr.write(usage_internal); +} + +fn cmdInternalBuildInfo(allocator: *Allocator, args: []const []const u8) !void { + try stdout.print( + \\ZIG_CMAKE_BINARY_DIR {} + \\ZIG_CXX_COMPILER {} + \\ZIG_LLVM_CONFIG_EXE {} + \\ZIG_LLD_INCLUDE_PATH {} + \\ZIG_LLD_LIBRARIES {} + \\ZIG_STD_FILES {} + \\ZIG_C_HEADER_FILES {} + \\ZIG_DIA_GUIDS_LIB {} + \\ + , + std.cstr.toSliceConst(c.ZIG_CMAKE_BINARY_DIR), + std.cstr.toSliceConst(c.ZIG_CXX_COMPILER), + std.cstr.toSliceConst(c.ZIG_LLVM_CONFIG_EXE), + std.cstr.toSliceConst(c.ZIG_LLD_INCLUDE_PATH), + std.cstr.toSliceConst(c.ZIG_LLD_LIBRARIES), + std.cstr.toSliceConst(c.ZIG_STD_FILES), + std.cstr.toSliceConst(c.ZIG_C_HEADER_FILES), + std.cstr.toSliceConst(c.ZIG_DIA_GUIDS_LIB), + ); +} + +fn test__floatuntisf(a: u128, expected: f32) void { + const x = __floatuntisf(a); + testing.expect(x == expected); +} + +test "floatuntisf" { + test__floatuntisf(0, 0.0); + + test__floatuntisf(1, 1.0); + test__floatuntisf(2, 2.0); + test__floatuntisf(20, 20.0); + + test__floatuntisf(0x7FFFFF8000000000, 0x1.FFFFFEp+62); + test__floatuntisf(0x7FFFFF0000000000, 0x1.FFFFFCp+62); + + test__floatuntisf(make_ti(0x8000008000000000, 0), 0x1.000001p+127); + test__floatuntisf(make_ti(0x8000000000000800, 0), 0x1.0p+127); + test__floatuntisf(make_ti(0x8000010000000000, 0), 0x1.000002p+127); + + test__floatuntisf(make_ti(0x8000000000000000, 0), 0x1.000000p+127); + + test__floatuntisf(0x0007FB72E8000000, 0x1.FEDCBAp+50); + + test__floatuntisf(0x0007FB72EA000000, 0x1.FEDCBA8p+50); + test__floatuntisf(0x0007FB72EB000000, 0x1.FEDCBACp+50); + + test__floatuntisf(0x0007FB72EC000000, 0x1.FEDCBBp+50); + + test__floatuntisf(0x0007FB72E6000000, 0x1.FEDCB98p+50); + test__floatuntisf(0x0007FB72E7000000, 0x1.FEDCB9Cp+50); + test__floatuntisf(0x0007FB72E4000000, 0x1.FEDCB9p+50); + + test__floatuntisf(0xFFFFFFFFFFFFFFFE, 0x1p+64); + test__floatuntisf(0xFFFFFFFFFFFFFFFF, 0x1p+64); + + test__floatuntisf(0x0007FB72E8000000, 0x1.FEDCBAp+50); + + test__floatuntisf(0x0007FB72EA000000, 0x1.FEDCBAp+50); + test__floatuntisf(0x0007FB72EB000000, 0x1.FEDCBAp+50); + test__floatuntisf(0x0007FB72EBFFFFFF, 0x1.FEDCBAp+50); + test__floatuntisf(0x0007FB72EC000000, 0x1.FEDCBCp+50); + test__floatuntisf(0x0007FB72E8000001, 0x1.FEDCBAp+50); + + test__floatuntisf(0x0007FB72E6000000, 0x1.FEDCBAp+50); + test__floatuntisf(0x0007FB72E7000000, 0x1.FEDCBAp+50); + test__floatuntisf(0x0007FB72E7FFFFFF, 0x1.FEDCBAp+50); + test__floatuntisf(0x0007FB72E4000001, 0x1.FEDCBAp+50); + test__floatuntisf(0x0007FB72E4000000, 0x1.FEDCB8p+50); + + test__floatuntisf(make_ti(0x0000000000001FED, 0xCB90000000000001), 0x1.FEDCBAp+76); + test__floatuntisf(make_ti(0x0000000000001FED, 0xCBA0000000000000), 0x1.FEDCBAp+76); + test__floatuntisf(make_ti(0x0000000000001FED, 0xCBAFFFFFFFFFFFFF), 0x1.FEDCBAp+76); + test__floatuntisf(make_ti(0x0000000000001FED, 0xCBB0000000000000), 0x1.FEDCBCp+76); + test__floatuntisf(make_ti(0x0000000000001FED, 0xCBB0000000000001), 0x1.FEDCBCp+76); + test__floatuntisf(make_ti(0x0000000000001FED, 0xCBBFFFFFFFFFFFFF), 0x1.FEDCBCp+76); + test__floatuntisf(make_ti(0x0000000000001FED, 0xCBC0000000000000), 0x1.FEDCBCp+76); + test__floatuntisf(make_ti(0x0000000000001FED, 0xCBC0000000000001), 0x1.FEDCBCp+76); + test__floatuntisf(make_ti(0x0000000000001FED, 0xCBD0000000000000), 0x1.FEDCBCp+76); + test__floatuntisf(make_ti(0x0000000000001FED, 0xCBD0000000000001), 0x1.FEDCBEp+76); + test__floatuntisf(make_ti(0x0000000000001FED, 0xCBDFFFFFFFFFFFFF), 0x1.FEDCBEp+76); + test__floatuntisf(make_ti(0x0000000000001FED, 0xCBE0000000000000), 0x1.FEDCBEp+76); +} + +fn trimStart(slice: []const u8, ch: u8) []const u8 { + var i: usize = 0; + const test_string = "test\"string"; + for (slice) |b| { + if (b == '\xa3') break; + if (b == '\ua3d3') break; + if (b == '\Ua3d3d3') break; + if (b == '\t') break; + if (b == '\n') break; + if (b == '\\') break; + if (b == '\'') break; + if (b == '"') break; + if (b != 'n') break; + if (b != '-') break; + i += 1; + } + + return slice[i..]; +} + +---tokens--- +'const' Keyword.Reserved +' ' Text.Whitespace +'std' Name +' ' Text.Whitespace +'=' Operator +' ' Text.Whitespace +'@import' Name.Builtin +'(' Punctuation +'"' Literal.String +'std' Literal.String +'"' Literal.String +')' Punctuation +';' Punctuation +'\n' Text.Whitespace + +'const' Keyword.Reserved +' ' Text.Whitespace +'Allocator' Name +' ' Text.Whitespace +'=' Operator +' ' Text.Whitespace +'mem' Name +'.' Punctuation +'Allocator' Name +';' Punctuation +'\n' Text.Whitespace + +'const' Keyword.Reserved +' ' Text.Whitespace +'mem' Name +' ' Text.Whitespace +'=' Operator +' ' Text.Whitespace +'std' Name +'.' Punctuation +'mem' Name +';' Punctuation +'\n' Text.Whitespace + +'const' Keyword.Reserved +' ' Text.Whitespace +'ast' Name +' ' Text.Whitespace +'=' Operator +' ' Text.Whitespace +'std' Name +'.' Punctuation +'zig' Name +'.' Punctuation +'ast' Name +';' Punctuation +'\n' Text.Whitespace + +'const' Keyword.Reserved +' ' Text.Whitespace +'Visib' Name +' ' Text.Whitespace +'=' Operator +' ' Text.Whitespace +'@import' Name.Builtin +'(' Punctuation +'"' Literal.String +'visib.zig' Literal.String +'"' Literal.String +')' Punctuation +'.' Punctuation +'Visib' Name +';' Punctuation +'\n' Text.Whitespace + +'const' Keyword.Reserved +' ' Text.Whitespace +'event' Name +' ' Text.Whitespace +'=' Operator +' ' Text.Whitespace +'std' Name +'.' Punctuation +'event' Name +';' Punctuation +'\n' Text.Whitespace + +'const' Keyword.Reserved +' ' Text.Whitespace +'Value' Name +' ' Text.Whitespace +'=' Operator +' ' Text.Whitespace +'@import' Name.Builtin +'(' Punctuation +'"' Literal.String +'value.zig' Literal.String +'"' Literal.String +')' Punctuation +'.' Punctuation +'Value' Name +';' Punctuation +'\n' Text.Whitespace + +'const' Keyword.Reserved +' ' Text.Whitespace +'Token' Name +' ' Text.Whitespace +'=' Operator +' ' Text.Whitespace +'std' Name +'.' Punctuation +'zig' Name +'.' Punctuation +'Token' Name +';' Punctuation +'\n' Text.Whitespace + +'const' Keyword.Reserved +' ' Text.Whitespace +'errmsg' Name +' ' Text.Whitespace +'=' Operator +' ' Text.Whitespace +'@import' Name.Builtin +'(' Punctuation +'"' Literal.String +'errmsg.zig' Literal.String +'"' Literal.String +')' Punctuation +';' Punctuation +'\n' Text.Whitespace + +'const' Keyword.Reserved +' ' Text.Whitespace +'Scope' Name +' ' Text.Whitespace +'=' Operator +' ' Text.Whitespace +'@import' Name.Builtin +'(' Punctuation +'"' Literal.String +'scope.zig' Literal.String +'"' Literal.String +')' Punctuation +'.' Punctuation +'Scope' Name +';' Punctuation +'\n' Text.Whitespace + +'const' Keyword.Reserved +' ' Text.Whitespace +'Compilation' Name +' ' Text.Whitespace +'=' Operator +' ' Text.Whitespace +'@import' Name.Builtin +'(' Punctuation +'"' Literal.String +'compilation.zig' Literal.String +'"' Literal.String +')' Punctuation +'.' Punctuation +'Compilation' Name +';' Punctuation +'\n' Text.Whitespace + +'\n' Text.Whitespace + +'pub' Keyword.Reserved +' ' Text.Whitespace +'const' Keyword.Reserved +' ' Text.Whitespace +'Decl' Name +' ' Text.Whitespace +'=' Operator +' ' Text.Whitespace +'struct' Keyword +' ' Text.Whitespace +'{' Punctuation +'\n' Text.Whitespace + +' ' Text.Whitespace +'id' Name +':' Operator +' ' Text.Whitespace +'Id' Name +',' Punctuation +'\n' Text.Whitespace + +' ' Text.Whitespace +'name' Name +':' Operator +' ' Text.Whitespace +'[' Punctuation +']' Punctuation +'const' Keyword.Reserved +' ' Text.Whitespace +'u8' Keyword.Type +',' Punctuation +'\n' Text.Whitespace + +' ' Text.Whitespace +'visib' Name +':' Operator +' ' Text.Whitespace +'Visib' Name +',' Punctuation +'\n' Text.Whitespace + +' ' Text.Whitespace +'resolution' Name +':' Operator +' ' Text.Whitespace +'event' Name +'.' Punctuation +'Future' Name +'(' Punctuation +'Compilation' Name +'.' Punctuation +'BuildError' Name +'!' Operator +'void' Keyword.Type +')' Punctuation +',' Punctuation +'\n' Text.Whitespace + +' ' Text.Whitespace +'parent_scope' Name +':' Operator +' ' Text.Whitespace +'*' Operator +'Scope' Name +',' Punctuation +'\n' Text.Whitespace + +'\n' Text.Whitespace + +' ' Text.Whitespace +'// TODO when we destroy the decl, deref the tree scope\n' Comment.Single + +' ' Text.Whitespace +'tree_scope' Name +':' Operator +' ' Text.Whitespace +'*' Operator +'Scope' Name +'.' Punctuation +'AstTree' Name +',' Punctuation +'\n' Text.Whitespace + +'\n' Text.Whitespace + +' ' Text.Whitespace +'pub' Keyword.Reserved +' ' Text.Whitespace +'const' Keyword.Reserved +' ' Text.Whitespace +'Table' Name +' ' Text.Whitespace +'=' Operator +' ' Text.Whitespace +'std' Name +'.' Punctuation +'HashMap' Name +'(' Punctuation +'[' Punctuation +']' Punctuation +'const' Keyword.Reserved +' ' Text.Whitespace +'u8' Keyword.Type +',' Punctuation +' ' Text.Whitespace +'*' Operator +'Decl' Name +',' Punctuation +' ' Text.Whitespace +'mem' Name +'.' Punctuation +'hash_slice_u8' Name +',' Punctuation +' ' Text.Whitespace +'mem' Name +'.' Punctuation +'eql_slice_u8' Name +')' Punctuation +';' Punctuation +'\n' Text.Whitespace + +'\n' Text.Whitespace + +' ' Text.Whitespace +'pub' Keyword.Reserved +' ' Text.Whitespace +'fn' Keyword +' ' Text.Whitespace +'cast' Name +'(' Punctuation +'base' Name +':' Operator +' ' Text.Whitespace +'*' Operator +'Decl' Name +',' Punctuation +' ' Text.Whitespace +'comptime' Keyword.Reserved +' ' Text.Whitespace +'T' Name +':' Operator +' ' Text.Whitespace +'type' Keyword.Type +')' Punctuation +' ' Text.Whitespace +'?' Operator +'*' Operator +'T' Name +' ' Text.Whitespace +'{' Punctuation +'\n' Text.Whitespace + +' ' Text.Whitespace +'if' Keyword +' ' Text.Whitespace +'(' Punctuation +'base' Name +'.' Punctuation +'id' Name +' ' Text.Whitespace +'!' Operator +'=' Operator +' ' Text.Whitespace +'@field' Name.Builtin +'(' Punctuation +'Id' Name +',' Punctuation +' ' Text.Whitespace +'@typeName' Name.Builtin +'(' Punctuation +'T' Name +')' Punctuation +')' Punctuation +')' Punctuation +' ' Text.Whitespace +'return' Keyword +' ' Text.Whitespace +'null' Keyword.Constant +';' Punctuation +'\n' Text.Whitespace + +' ' Text.Whitespace +'return' Keyword +' ' Text.Whitespace +'@fieldParentPtr' Name.Builtin +'(' Punctuation +'T' Name +',' Punctuation +' ' Text.Whitespace +'"' Literal.String +'base' Literal.String +'"' Literal.String +',' Punctuation +' ' Text.Whitespace +'base' Name +')' Punctuation +';' Punctuation +'\n' Text.Whitespace + +' ' Text.Whitespace +'}' Punctuation +'\n' Text.Whitespace + +'\n' Text.Whitespace + +' ' Text.Whitespace +'pub' Keyword.Reserved +' ' Text.Whitespace +'fn' Keyword +' ' Text.Whitespace +'isExported' Name +'(' Punctuation +'base' Name +':' Operator +' ' Text.Whitespace +'*' Operator +'const' Keyword.Reserved +' ' Text.Whitespace +'Decl' Name +',' Punctuation +' ' Text.Whitespace +'tree' Name +':' Operator +' ' Text.Whitespace +'*' Operator +'ast' Name +'.' Punctuation +'Tree' Name +')' Punctuation +' ' Text.Whitespace +'bool' Keyword.Type +' ' Text.Whitespace +'{' Punctuation +'\n' Text.Whitespace + +' ' Text.Whitespace +'switch' Keyword +' ' Text.Whitespace +'(' Punctuation +'base' Name +'.' Punctuation +'id' Name +')' Punctuation +' ' Text.Whitespace +'{' Punctuation +'\n' Text.Whitespace + +' ' Text.Whitespace +'Id' Name +'.' Punctuation +'Fn' Name +' ' Text.Whitespace +'=' Operator +'>' Operator +' ' Text.Whitespace +'{' Punctuation +'\n' Text.Whitespace + +' ' Text.Whitespace +'const' Keyword.Reserved +' ' Text.Whitespace +'fn_decl' Name +' ' Text.Whitespace +'=' Operator +' ' Text.Whitespace +'@fieldParentPtr' Name.Builtin +'(' Punctuation +'Fn' Name +',' Punctuation +' ' Text.Whitespace +'"' Literal.String +'base' Literal.String +'"' Literal.String +',' Punctuation +' ' Text.Whitespace +'base' Name +')' Punctuation +';' Punctuation +'\n' Text.Whitespace + +' ' Text.Whitespace +'return' Keyword +' ' Text.Whitespace +'fn_decl' Name +'.' Punctuation +'isExported' Name +'(' Punctuation +'tree' Name +')' Punctuation +';' Punctuation +'\n' Text.Whitespace + +' ' Text.Whitespace +'}' Punctuation +',' Punctuation +'\n' Text.Whitespace + +' ' Text.Whitespace +'else' Keyword +' ' Text.Whitespace +'=' Operator +'>' Operator +' ' Text.Whitespace +'return' Keyword +' ' Text.Whitespace +'false' Keyword.Constant +',' Punctuation +'\n' Text.Whitespace + +' ' Text.Whitespace +'}' Punctuation +'\n' Text.Whitespace + +' ' Text.Whitespace +'}' Punctuation +'\n' Text.Whitespace + +'\n' Text.Whitespace + +' ' Text.Whitespace +'pub' Keyword.Reserved +' ' Text.Whitespace +'fn' Keyword +' ' Text.Whitespace +'getSpan' Name +'(' Punctuation +'base' Name +':' Operator +' ' Text.Whitespace +'*' Operator +'const' Keyword.Reserved +' ' Text.Whitespace +'Decl' Name +')' Punctuation +' ' Text.Whitespace +'errmsg' Name +'.' Punctuation +'Span' Name +' ' Text.Whitespace +'{' Punctuation +'\n' Text.Whitespace + +' ' Text.Whitespace +'switch' Keyword +' ' Text.Whitespace +'(' Punctuation +'base' Name +'.' Punctuation +'id' Name +')' Punctuation +' ' Text.Whitespace +'{' Punctuation +'\n' Text.Whitespace + +' ' Text.Whitespace +'Id' Name +'.' Punctuation +'Fn' Name +' ' Text.Whitespace +'=' Operator +'>' Operator +' ' Text.Whitespace +'{' Punctuation +'\n' Text.Whitespace + +' ' Text.Whitespace +'const' Keyword.Reserved +' ' Text.Whitespace +'fn_decl' Name +' ' Text.Whitespace +'=' Operator +' ' Text.Whitespace +'@fieldParentPtr' Name.Builtin +'(' Punctuation +'Fn' Name +',' Punctuation +' ' Text.Whitespace +'"' Literal.String +'base' Literal.String +'"' Literal.String +',' Punctuation +' ' Text.Whitespace +'base' Name +')' Punctuation +';' Punctuation +'\n' Text.Whitespace + +' ' Text.Whitespace +'const' Keyword.Reserved +' ' Text.Whitespace +'fn_proto' Name +' ' Text.Whitespace +'=' Operator +' ' Text.Whitespace +'fn_decl' Name +'.' Punctuation +'fn_proto' Name +';' Punctuation +'\n' Text.Whitespace + +' ' Text.Whitespace +'const' Keyword.Reserved +' ' Text.Whitespace +'start' Name +' ' Text.Whitespace +'=' Operator +' ' Text.Whitespace +'fn_proto' Name +'.' Punctuation +'fn_token' Name +';' Punctuation +'\n' Text.Whitespace + +' ' Text.Whitespace +'const' Keyword.Reserved +' ' Text.Whitespace +'end' Name +' ' Text.Whitespace +'=' Operator +' ' Text.Whitespace +'fn_proto' Name +'.' Punctuation +'name_token' Name +' ' Text.Whitespace +'orelse' Keyword +' ' Text.Whitespace +'start' Name +';' Punctuation +'\n' Text.Whitespace + +' ' Text.Whitespace +'return' Keyword +' ' Text.Whitespace +'errmsg' Name +'.' Punctuation +'Span' Name +'{' Punctuation +'\n' Text.Whitespace + +' ' Text.Whitespace +'.' Punctuation +'first' Name +' ' Text.Whitespace +'=' Operator +' ' Text.Whitespace +'start' Name +',' Punctuation +'\n' Text.Whitespace + +' ' Text.Whitespace +'.' Punctuation +'last' Name +' ' Text.Whitespace +'=' Operator +' ' Text.Whitespace +'end' Name +' ' Text.Whitespace +'+' Operator +' ' Text.Whitespace +'1' Literal.Number.Integer +',' Punctuation +'\n' Text.Whitespace + +' ' Text.Whitespace +'}' Punctuation +';' Punctuation +'\n' Text.Whitespace + +' ' Text.Whitespace +'}' Punctuation +',' Punctuation +'\n' Text.Whitespace + +' ' Text.Whitespace +'else' Keyword +' ' Text.Whitespace +'=' Operator +'>' Operator +' ' Text.Whitespace +'@panic' Name.Builtin +'(' Punctuation +'"' Literal.String +'TODO' Literal.String +'"' Literal.String +')' Punctuation +',' Punctuation +'\n' Text.Whitespace + +' ' Text.Whitespace +'}' Punctuation +'\n' Text.Whitespace + +' ' Text.Whitespace +'}' Punctuation +'\n' Text.Whitespace + +'\n' Text.Whitespace + +' ' Text.Whitespace +'pub' Keyword.Reserved +' ' Text.Whitespace +'fn' Keyword +' ' Text.Whitespace +'findRootScope' Name +'(' Punctuation +'base' Name +':' Operator +' ' Text.Whitespace +'*' Operator +'const' Keyword.Reserved +' ' Text.Whitespace +'Decl' Name +')' Punctuation +' ' Text.Whitespace +'*' Operator +'Scope' Name +'.' Punctuation +'Root' Name +' ' Text.Whitespace +'{' Punctuation +'\n' Text.Whitespace + +' ' Text.Whitespace +'return' Keyword +' ' Text.Whitespace +'base' Name +'.' Punctuation +'parent_scope' Name +'.' Punctuation +'findRoot' Name +'(' Punctuation +')' Punctuation +';' Punctuation +'\n' Text.Whitespace + +' ' Text.Whitespace +'}' Punctuation +'\n' Text.Whitespace + +'\n' Text.Whitespace + +' ' Text.Whitespace +'pub' Keyword.Reserved +' ' Text.Whitespace +'const' Keyword.Reserved +' ' Text.Whitespace +'Id' Name +' ' Text.Whitespace +'=' Operator +' ' Text.Whitespace +'enum' Keyword +' ' Text.Whitespace +'{' Punctuation +'\n' Text.Whitespace + +' ' Text.Whitespace +'Var' Name +',' Punctuation +'\n' Text.Whitespace + +' ' Text.Whitespace +'Fn' Name +',' Punctuation +'\n' Text.Whitespace + +' ' Text.Whitespace +'CompTime' Name +',' Punctuation +'\n' Text.Whitespace + +' ' Text.Whitespace +'}' Punctuation +';' Punctuation +'\n' Text.Whitespace + +'\n' Text.Whitespace + +' ' Text.Whitespace +'pub' Keyword.Reserved +' ' Text.Whitespace +'const' Keyword.Reserved +' ' Text.Whitespace +'Var' Name +' ' Text.Whitespace +'=' Operator +' ' Text.Whitespace +'struct' Keyword +' ' Text.Whitespace +'{' Punctuation +'\n' Text.Whitespace + +' ' Text.Whitespace +'base' Name +':' Operator +' ' Text.Whitespace +'Decl' Name +',' Punctuation +'\n' Text.Whitespace + +' ' Text.Whitespace +'}' Punctuation +';' Punctuation +'\n' Text.Whitespace + +'\n' Text.Whitespace + +' ' Text.Whitespace +'pub' Keyword.Reserved +' ' Text.Whitespace +'const' Keyword.Reserved +' ' Text.Whitespace +'Fn' Name +' ' Text.Whitespace +'=' Operator +' ' Text.Whitespace +'struct' Keyword +' ' Text.Whitespace +'{' Punctuation +'\n' Text.Whitespace + +' ' Text.Whitespace +'base' Name +':' Operator +' ' Text.Whitespace +'Decl' Name +',' Punctuation +'\n' Text.Whitespace + +' ' Text.Whitespace +'value' Name +':' Operator +' ' Text.Whitespace +'Val' Name +',' Punctuation +'\n' Text.Whitespace + +' ' Text.Whitespace +'fn_proto' Name +':' Operator +' ' Text.Whitespace +'*' Operator +'ast' Name +'.' Punctuation +'Node' Name +'.' Punctuation +'FnProto' Name +',' Punctuation +'\n' Text.Whitespace + +'\n' Text.Whitespace + +' ' Text.Whitespace +'// TODO https://github.com/ziglang/zig/issues/683 and then make this anonymous\n' Comment.Single + +' ' Text.Whitespace +'pub' Keyword.Reserved +' ' Text.Whitespace +'const' Keyword.Reserved +' ' Text.Whitespace +'Val' Name +' ' Text.Whitespace +'=' Operator +' ' Text.Whitespace +'union' Keyword +'(' Punctuation +'enum' Keyword +')' Punctuation +' ' Text.Whitespace +'{' Punctuation +'\n' Text.Whitespace + +' ' Text.Whitespace +'Unresolved' Name +':' Operator +' ' Text.Whitespace +'void' Keyword.Type +',' Punctuation +'\n' Text.Whitespace + +' ' Text.Whitespace +'Fn' Name +':' Operator +' ' Text.Whitespace +'*' Operator +'Value' Name +'.' Punctuation +'Fn' Name +',' Punctuation +'\n' Text.Whitespace + +' ' Text.Whitespace +'FnProto' Name +':' Operator +' ' Text.Whitespace +'*' Operator +'Value' Name +'.' Punctuation +'FnProto' Name +',' Punctuation +'\n' Text.Whitespace + +' ' Text.Whitespace +'}' Punctuation +';' Punctuation +'\n' Text.Whitespace + +'\n' Text.Whitespace + +' ' Text.Whitespace +'pub' Keyword.Reserved +' ' Text.Whitespace +'fn' Keyword +' ' Text.Whitespace +'externLibName' Name +'(' Punctuation +'self' Name +':' Operator +' ' Text.Whitespace +'Fn' Name +',' Punctuation +' ' Text.Whitespace +'tree' Name +':' Operator +' ' Text.Whitespace +'*' Operator +'ast' Name +'.' Punctuation +'Tree' Name +')' Punctuation +' ' Text.Whitespace +'?' Operator +'[' Punctuation +']' Punctuation +'const' Keyword.Reserved +' ' Text.Whitespace +'u8' Keyword.Type +' ' Text.Whitespace +'{' Punctuation +'\n' Text.Whitespace + +' ' Text.Whitespace +'return' Keyword +' ' Text.Whitespace +'if' Keyword +' ' Text.Whitespace +'(' Punctuation +'self' Name +'.' Punctuation +'fn_proto' Name +'.' Punctuation +'extern_export_inline_token' Name +')' Punctuation +' ' Text.Whitespace +'|' Operator +'tok_index' Name +'|' Operator +' ' Text.Whitespace +'x' Name +':' Operator +' ' Text.Whitespace +'{' Punctuation +'\n' Text.Whitespace + +' ' Text.Whitespace +'const' Keyword.Reserved +' ' Text.Whitespace +'token' Name +' ' Text.Whitespace +'=' Operator +' ' Text.Whitespace +'tree' Name +'.' Punctuation +'tokens' Name +'.' Punctuation +'at' Name +'(' Punctuation +'tok_index' Name +')' Punctuation +';' Punctuation +'\n' Text.Whitespace + +' ' Text.Whitespace +'break' Keyword +' ' Text.Whitespace +':' Operator +'x' Name +' ' Text.Whitespace +'switch' Keyword +' ' Text.Whitespace +'(' Punctuation +'token' Name +'.' Punctuation +'id' Name +')' Punctuation +' ' Text.Whitespace +'{' Punctuation +'\n' Text.Whitespace + +' ' Text.Whitespace +'Token' Name +'.' Punctuation +'Id' Name +'.' Punctuation +'Extern' Name +' ' Text.Whitespace +'=' Operator +'>' Operator +' ' Text.Whitespace +'tree' Name +'.' Punctuation +'tokenSlicePtr' Name +'(' Punctuation +'token' Name +')' Punctuation +',' Punctuation +'\n' Text.Whitespace + +' ' Text.Whitespace +'else' Keyword +' ' Text.Whitespace +'=' Operator +'>' Operator +' ' Text.Whitespace +'null' Keyword.Constant +',' Punctuation +'\n' Text.Whitespace + +' ' Text.Whitespace +'}' Punctuation +';' Punctuation +'\n' Text.Whitespace + +' ' Text.Whitespace +'}' Punctuation +' ' Text.Whitespace +'else' Keyword +' ' Text.Whitespace +'null' Keyword.Constant +';' Punctuation +'\n' Text.Whitespace + +' ' Text.Whitespace +'}' Punctuation +'\n' Text.Whitespace + +'\n' Text.Whitespace + +' ' Text.Whitespace +'pub' Keyword.Reserved +' ' Text.Whitespace +'fn' Keyword +' ' Text.Whitespace +'isExported' Name +'(' Punctuation +'self' Name +':' Operator +' ' Text.Whitespace +'Fn' Name +',' Punctuation +' ' Text.Whitespace +'tree' Name +':' Operator +' ' Text.Whitespace +'*' Operator +'ast' Name +'.' Punctuation +'Tree' Name +')' Punctuation +' ' Text.Whitespace +'bool' Keyword.Type +' ' Text.Whitespace +'{' Punctuation +'\n' Text.Whitespace + +' ' Text.Whitespace +'if' Keyword +' ' Text.Whitespace +'(' Punctuation +'self' Name +'.' Punctuation +'fn_proto' Name +'.' Punctuation +'extern_export_inline_token' Name +')' Punctuation +' ' Text.Whitespace +'|' Operator +'tok_index' Name +'|' Operator +' ' Text.Whitespace +'{' Punctuation +'\n' Text.Whitespace + +' ' Text.Whitespace +'const' Keyword.Reserved +' ' Text.Whitespace +'token' Name +' ' Text.Whitespace +'=' Operator +' ' Text.Whitespace +'tree' Name +'.' Punctuation +'tokens' Name +'.' Punctuation +'at' Name +'(' Punctuation +'tok_index' Name +')' Punctuation +';' Punctuation +'\n' Text.Whitespace + +' ' Text.Whitespace +'return' Keyword +' ' Text.Whitespace +'token' Name +'.' Punctuation +'id' Name +' ' Text.Whitespace +'=' Operator +'=' Operator +' ' Text.Whitespace +'Token' Name +'.' Punctuation +'Id' Name +'.' Punctuation +'Keyword_export' Name +';' Punctuation +'\n' Text.Whitespace + +' ' Text.Whitespace +'}' Punctuation +' ' Text.Whitespace +'else' Keyword +' ' Text.Whitespace +'{' Punctuation +'\n' Text.Whitespace + +' ' Text.Whitespace +'return' Keyword +' ' Text.Whitespace +'false' Keyword.Constant +';' Punctuation +'\n' Text.Whitespace + +' ' Text.Whitespace +'}' Punctuation +'\n' Text.Whitespace + +' ' Text.Whitespace +'}' Punctuation +'\n' Text.Whitespace + +' ' Text.Whitespace +'}' Punctuation +';' Punctuation +'\n' Text.Whitespace + +'\n' Text.Whitespace + +' ' Text.Whitespace +'pub' Keyword.Reserved +' ' Text.Whitespace +'const' Keyword.Reserved +' ' Text.Whitespace +'CompTime' Name +' ' Text.Whitespace +'=' Operator +' ' Text.Whitespace +'struct' Keyword +' ' Text.Whitespace +'{' Punctuation +'\n' Text.Whitespace + +' ' Text.Whitespace +'base' Name +':' Operator +' ' Text.Whitespace +'Decl' Name +',' Punctuation +'\n' Text.Whitespace + +' ' Text.Whitespace +'}' Punctuation +';' Punctuation +'\n' Text.Whitespace + +'}' Punctuation +';' Punctuation +'\n' Text.Whitespace + +'\n' Text.Whitespace + +'pub' Keyword.Reserved +' ' Text.Whitespace +'const' Keyword.Reserved +' ' Text.Whitespace +'info_zen' Name +' ' Text.Whitespace +'=' Operator +'\n' Text.Whitespace + +' ' Text.Whitespace +'\\\\' Literal.String.Heredoc +'\n' Text.Whitespace + +' ' Text.Whitespace +'\\\\ * Communicate intent precisely.' Literal.String.Heredoc +'\n' Text.Whitespace + +' ' Text.Whitespace +'\\\\ * Edge cases matter.' Literal.String.Heredoc +'\n' Text.Whitespace + +' ' Text.Whitespace +'\\\\ * Favor reading code over writing code.' Literal.String.Heredoc +'\n' Text.Whitespace + +' ' Text.Whitespace +'\\\\ * Only one obvious way to do things.' Literal.String.Heredoc +'\n' Text.Whitespace + +' ' Text.Whitespace +'\\\\ * Runtime crashes are better than bugs.' Literal.String.Heredoc +'\n' Text.Whitespace + +' ' Text.Whitespace +'\\\\ * Compile errors are better than runtime crashes.' Literal.String.Heredoc +'\n' Text.Whitespace + +' ' Text.Whitespace +'\\\\ * Incremental improvements.' Literal.String.Heredoc +'\n' Text.Whitespace + +' ' Text.Whitespace +'\\\\ * Avoid local maximums.' Literal.String.Heredoc +'\n' Text.Whitespace + +' ' Text.Whitespace +'\\\\ * Reduce the amount one must remember.' Literal.String.Heredoc +'\n' Text.Whitespace + +' ' Text.Whitespace +'\\\\ * Minimize energy spent on coding style.' Literal.String.Heredoc +'\n' Text.Whitespace + +' ' Text.Whitespace +'\\\\ * Together we serve end users.' Literal.String.Heredoc +'\n' Text.Whitespace + +' ' Text.Whitespace +'\\\\' Literal.String.Heredoc +'\n' Text.Whitespace + +' ' Text.Whitespace +'\\\\' Literal.String.Heredoc +'\n' Text.Whitespace + +';' Punctuation +'\n' Text.Whitespace + +'\n' Text.Whitespace + +'fn' Keyword +' ' Text.Whitespace +'cmdZen' Name +'(' Punctuation +'allocator' Name +':' Operator +' ' Text.Whitespace +'*' Operator +'Allocator' Name +',' Punctuation +' ' Text.Whitespace +'args' Name +':' Operator +' ' Text.Whitespace +'[' Punctuation +']' Punctuation +'const' Keyword.Reserved +' ' Text.Whitespace +'[' Punctuation +']' Punctuation +'const' Keyword.Reserved +' ' Text.Whitespace +'u8' Keyword.Type +')' Punctuation +' ' Text.Whitespace +'!' Operator +'void' Keyword.Type +' ' Text.Whitespace +'{' Punctuation +'\n' Text.Whitespace + +' ' Text.Whitespace +'try' Keyword +' ' Text.Whitespace +'stdout' Name +'.' Punctuation +'write' Name +'(' Punctuation +'info_zen' Name +')' Punctuation +';' Punctuation +'\n' Text.Whitespace + +'}' Punctuation +'\n' Text.Whitespace + +'\n' Text.Whitespace + +'const' Keyword.Reserved +' ' Text.Whitespace +'usage_internal' Name +' ' Text.Whitespace +'=' Operator +'\n' Text.Whitespace + +' ' Text.Whitespace +'\\\\usage: zig internal [subcommand]' Literal.String.Heredoc +'\n' Text.Whitespace + +' ' Text.Whitespace +'\\\\' Literal.String.Heredoc +'\n' Text.Whitespace + +' ' Text.Whitespace +'\\\\Sub-Commands:' Literal.String.Heredoc +'\n' Text.Whitespace + +' ' Text.Whitespace +'\\\\ build-info Print static compiler build-info' Literal.String.Heredoc +'\n' Text.Whitespace + +' ' Text.Whitespace +'\\\\' Literal.String.Heredoc +'\n' Text.Whitespace + +' ' Text.Whitespace +'\\\\' Literal.String.Heredoc +'\n' Text.Whitespace + +';' Punctuation +'\n' Text.Whitespace + +'\n' Text.Whitespace + +'fn' Keyword +' ' Text.Whitespace +'cmdInternal' Name +'(' Punctuation +'allocator' Name +':' Operator +' ' Text.Whitespace +'*' Operator +'Allocator' Name +',' Punctuation +' ' Text.Whitespace +'args' Name +':' Operator +' ' Text.Whitespace +'[' Punctuation +']' Punctuation +'const' Keyword.Reserved +' ' Text.Whitespace +'[' Punctuation +']' Punctuation +'const' Keyword.Reserved +' ' Text.Whitespace +'u8' Keyword.Type +')' Punctuation +' ' Text.Whitespace +'!' Operator +'void' Keyword.Type +' ' Text.Whitespace +'{' Punctuation +'\n' Text.Whitespace + +' ' Text.Whitespace +'if' Keyword +' ' Text.Whitespace +'(' Punctuation +'args' Name +'.' Punctuation +'len' Name +' ' Text.Whitespace +'=' Operator +'=' Operator +' ' Text.Whitespace +'0' Literal.Number.Integer +')' Punctuation +' ' Text.Whitespace +'{' Punctuation +'\n' Text.Whitespace + +' ' Text.Whitespace +'try' Keyword +' ' Text.Whitespace +'stderr' Name +'.' Punctuation +'write' Name +'(' Punctuation +'usage_internal' Name +')' Punctuation +';' Punctuation +'\n' Text.Whitespace + +' ' Text.Whitespace +'os' Name +'.' Punctuation +'exit' Name +'(' Punctuation +'1' Literal.Number.Integer +')' Punctuation +';' Punctuation +'\n' Text.Whitespace + +' ' Text.Whitespace +'}' Punctuation +'\n' Text.Whitespace + +'\n' Text.Whitespace + +' ' Text.Whitespace +'const' Keyword.Reserved +' ' Text.Whitespace +'sub_commands' Name +' ' Text.Whitespace +'=' Operator +' ' Text.Whitespace +'[' Punctuation +']' Punctuation +'Command' Name +'{' Punctuation +'Command' Name +'{' Punctuation +'\n' Text.Whitespace + +' ' Text.Whitespace +'.' Punctuation +'name' Name +' ' Text.Whitespace +'=' Operator +' ' Text.Whitespace +'"' Literal.String +'build-info' Literal.String +'"' Literal.String +',' Punctuation +'\n' Text.Whitespace + +' ' Text.Whitespace +'.' Punctuation +'exec' Name +' ' Text.Whitespace +'=' Operator +' ' Text.Whitespace +'cmdInternalBuildInfo' Name +',' Punctuation +'\n' Text.Whitespace + +' ' Text.Whitespace +'}' Punctuation +'}' Punctuation +';' Punctuation +'\n' Text.Whitespace + +'\n' Text.Whitespace + +' ' Text.Whitespace +'for' Keyword +' ' Text.Whitespace +'(' Punctuation +'sub_commands' Name +')' Punctuation +' ' Text.Whitespace +'|' Operator +'sub_command' Name +'|' Operator +' ' Text.Whitespace +'{' Punctuation +'\n' Text.Whitespace + +' ' Text.Whitespace +'if' Keyword +' ' Text.Whitespace +'(' Punctuation +'mem' Name +'.' Punctuation +'eql' Name +'(' Punctuation +'u8' Keyword.Type +',' Punctuation +' ' Text.Whitespace +'sub_command' Name +'.' Punctuation +'name' Name +',' Punctuation +' ' Text.Whitespace +'args' Name +'[' Punctuation +'0' Literal.Number.Integer +']' Punctuation +')' Punctuation +')' Punctuation +' ' Text.Whitespace +'{' Punctuation +'\n' Text.Whitespace + +' ' Text.Whitespace +'try' Keyword +' ' Text.Whitespace +'sub_command' Name +'.' Punctuation +'exec' Name +'(' Punctuation +'allocator' Name +',' Punctuation +' ' Text.Whitespace +'args' Name +'[' Punctuation +'1' Literal.Number.Integer +'.' Punctuation +'.' Punctuation +']' Punctuation +')' Punctuation +';' Punctuation +'\n' Text.Whitespace + +' ' Text.Whitespace +'return' Keyword +';' Punctuation +'\n' Text.Whitespace + +' ' Text.Whitespace +'}' Punctuation +'\n' Text.Whitespace + +' ' Text.Whitespace +'}' Punctuation +'\n' Text.Whitespace + +'\n' Text.Whitespace + +' ' Text.Whitespace +'try' Keyword +' ' Text.Whitespace +'stderr' Name +'.' Punctuation +'print' Name +'(' Punctuation +'"' Literal.String +'unknown sub command: {}' Literal.String +'\\n' Literal.String.Escape +'\\n' Literal.String.Escape +'"' Literal.String +',' Punctuation +' ' Text.Whitespace +'args' Name +'[' Punctuation +'0' Literal.Number.Integer +']' Punctuation +')' Punctuation +';' Punctuation +'\n' Text.Whitespace + +' ' Text.Whitespace +'try' Keyword +' ' Text.Whitespace +'stderr' Name +'.' Punctuation +'write' Name +'(' Punctuation +'usage_internal' Name +')' Punctuation +';' Punctuation +'\n' Text.Whitespace + +'}' Punctuation +'\n' Text.Whitespace + +'\n' Text.Whitespace + +'fn' Keyword +' ' Text.Whitespace +'cmdInternalBuildInfo' Name +'(' Punctuation +'allocator' Name +':' Operator +' ' Text.Whitespace +'*' Operator +'Allocator' Name +',' Punctuation +' ' Text.Whitespace +'args' Name +':' Operator +' ' Text.Whitespace +'[' Punctuation +']' Punctuation +'const' Keyword.Reserved +' ' Text.Whitespace +'[' Punctuation +']' Punctuation +'const' Keyword.Reserved +' ' Text.Whitespace +'u8' Keyword.Type +')' Punctuation +' ' Text.Whitespace +'!' Operator +'void' Keyword.Type +' ' Text.Whitespace +'{' Punctuation +'\n' Text.Whitespace + +' ' Text.Whitespace +'try' Keyword +' ' Text.Whitespace +'stdout' Name +'.' Punctuation +'print' Name +'(' Punctuation +'\n' Text.Whitespace + +' ' Text.Whitespace +'\\\\ZIG_CMAKE_BINARY_DIR {}' Literal.String.Heredoc +'\n' Text.Whitespace + +' ' Text.Whitespace +'\\\\ZIG_CXX_COMPILER {}' Literal.String.Heredoc +'\n' Text.Whitespace + +' ' Text.Whitespace +'\\\\ZIG_LLVM_CONFIG_EXE {}' Literal.String.Heredoc +'\n' Text.Whitespace + +' ' Text.Whitespace +'\\\\ZIG_LLD_INCLUDE_PATH {}' Literal.String.Heredoc +'\n' Text.Whitespace + +' ' Text.Whitespace +'\\\\ZIG_LLD_LIBRARIES {}' Literal.String.Heredoc +'\n' Text.Whitespace + +' ' Text.Whitespace +'\\\\ZIG_STD_FILES {}' Literal.String.Heredoc +'\n' Text.Whitespace + +' ' Text.Whitespace +'\\\\ZIG_C_HEADER_FILES {}' Literal.String.Heredoc +'\n' Text.Whitespace + +' ' Text.Whitespace +'\\\\ZIG_DIA_GUIDS_LIB {}' Literal.String.Heredoc +'\n' Text.Whitespace + +' ' Text.Whitespace +'\\\\' Literal.String.Heredoc +'\n' Text.Whitespace + +' ' Text.Whitespace +',' Punctuation +'\n' Text.Whitespace + +' ' Text.Whitespace +'std' Name +'.' Punctuation +'cstr' Name +'.' Punctuation +'toSliceConst' Name +'(' Punctuation +'c' Name +'.' Punctuation +'ZIG_CMAKE_BINARY_DIR' Name +')' Punctuation +',' Punctuation +'\n' Text.Whitespace + +' ' Text.Whitespace +'std' Name +'.' Punctuation +'cstr' Name +'.' Punctuation +'toSliceConst' Name +'(' Punctuation +'c' Name +'.' Punctuation +'ZIG_CXX_COMPILER' Name +')' Punctuation +',' Punctuation +'\n' Text.Whitespace + +' ' Text.Whitespace +'std' Name +'.' Punctuation +'cstr' Name +'.' Punctuation +'toSliceConst' Name +'(' Punctuation +'c' Name +'.' Punctuation +'ZIG_LLVM_CONFIG_EXE' Name +')' Punctuation +',' Punctuation +'\n' Text.Whitespace + +' ' Text.Whitespace +'std' Name +'.' Punctuation +'cstr' Name +'.' Punctuation +'toSliceConst' Name +'(' Punctuation +'c' Name +'.' Punctuation +'ZIG_LLD_INCLUDE_PATH' Name +')' Punctuation +',' Punctuation +'\n' Text.Whitespace + +' ' Text.Whitespace +'std' Name +'.' Punctuation +'cstr' Name +'.' Punctuation +'toSliceConst' Name +'(' Punctuation +'c' Name +'.' Punctuation +'ZIG_LLD_LIBRARIES' Name +')' Punctuation +',' Punctuation +'\n' Text.Whitespace + +' ' Text.Whitespace +'std' Name +'.' Punctuation +'cstr' Name +'.' Punctuation +'toSliceConst' Name +'(' Punctuation +'c' Name +'.' Punctuation +'ZIG_STD_FILES' Name +')' Punctuation +',' Punctuation +'\n' Text.Whitespace + +' ' Text.Whitespace +'std' Name +'.' Punctuation +'cstr' Name +'.' Punctuation +'toSliceConst' Name +'(' Punctuation +'c' Name +'.' Punctuation +'ZIG_C_HEADER_FILES' Name +')' Punctuation +',' Punctuation +'\n' Text.Whitespace + +' ' Text.Whitespace +'std' Name +'.' Punctuation +'cstr' Name +'.' Punctuation +'toSliceConst' Name +'(' Punctuation +'c' Name +'.' Punctuation +'ZIG_DIA_GUIDS_LIB' Name +')' Punctuation +',' Punctuation +'\n' Text.Whitespace + +' ' Text.Whitespace +')' Punctuation +';' Punctuation +'\n' Text.Whitespace + +'}' Punctuation +'\n' Text.Whitespace + +'\n' Text.Whitespace + +'fn' Keyword +' ' Text.Whitespace +'test__floatuntisf' Name +'(' Punctuation +'a' Name +':' Operator +' ' Text.Whitespace +'u128' Keyword.Type +',' Punctuation +' ' Text.Whitespace +'expected' Name +':' Operator +' ' Text.Whitespace +'f32' Keyword.Type +')' Punctuation +' ' Text.Whitespace +'void' Keyword.Type +' ' Text.Whitespace +'{' Punctuation +'\n' Text.Whitespace + +' ' Text.Whitespace +'const' Keyword.Reserved +' ' Text.Whitespace +'x' Name +' ' Text.Whitespace +'=' Operator +' ' Text.Whitespace +'__floatuntisf' Name +'(' Punctuation +'a' Name +')' Punctuation +';' Punctuation +'\n' Text.Whitespace + +' ' Text.Whitespace +'testing' Name +'.' Punctuation +'expect' Name +'(' Punctuation +'x' Name +' ' Text.Whitespace +'=' Operator +'=' Operator +' ' Text.Whitespace +'expected' Name +')' Punctuation +';' Punctuation +'\n' Text.Whitespace + +'}' Punctuation +'\n' Text.Whitespace + +'\n' Text.Whitespace + +'test' Keyword +' ' Text.Whitespace +'"' Literal.String +'floatuntisf' Literal.String +'"' Literal.String +' ' Text.Whitespace +'{' Punctuation +'\n' Text.Whitespace + +' ' Text.Whitespace +'test__floatuntisf' Name +'(' Punctuation +'0' Literal.Number.Integer +',' Punctuation +' ' Text.Whitespace +'0.0' Literal.Number.Float +')' Punctuation +';' Punctuation +'\n' Text.Whitespace + +'\n' Text.Whitespace + +' ' Text.Whitespace +'test__floatuntisf' Name +'(' Punctuation +'1' Literal.Number.Integer +',' Punctuation +' ' Text.Whitespace +'1.0' Literal.Number.Float +')' Punctuation +';' Punctuation +'\n' Text.Whitespace + +' ' Text.Whitespace +'test__floatuntisf' Name +'(' Punctuation +'2' Literal.Number.Integer +',' Punctuation +' ' Text.Whitespace +'2.0' Literal.Number.Float +')' Punctuation +';' Punctuation +'\n' Text.Whitespace + +' ' Text.Whitespace +'test__floatuntisf' Name +'(' Punctuation +'20' Literal.Number.Integer +',' Punctuation +' ' Text.Whitespace +'20.0' Literal.Number.Float +')' Punctuation +';' Punctuation +'\n' Text.Whitespace + +'\n' Text.Whitespace + +' ' Text.Whitespace +'test__floatuntisf' Name +'(' Punctuation +'0x7FFFFF8000000000' Literal.Number.Hex +',' Punctuation +' ' Text.Whitespace +'0x1.FFFFFEp+62' Literal.Number.Float +')' Punctuation +';' Punctuation +'\n' Text.Whitespace + +' ' Text.Whitespace +'test__floatuntisf' Name +'(' Punctuation +'0x7FFFFF0000000000' Literal.Number.Hex +',' Punctuation +' ' Text.Whitespace +'0x1.FFFFFCp+62' Literal.Number.Float +')' Punctuation +';' Punctuation +'\n' Text.Whitespace + +'\n' Text.Whitespace + +' ' Text.Whitespace +'test__floatuntisf' Name +'(' Punctuation +'make_ti' Name +'(' Punctuation +'0x8000008000000000' Literal.Number.Hex +',' Punctuation +' ' Text.Whitespace +'0' Literal.Number.Integer +')' Punctuation +',' Punctuation +' ' Text.Whitespace +'0x1.000001p+127' Literal.Number.Float +')' Punctuation +';' Punctuation +'\n' Text.Whitespace + +' ' Text.Whitespace +'test__floatuntisf' Name +'(' Punctuation +'make_ti' Name +'(' Punctuation +'0x8000000000000800' Literal.Number.Hex +',' Punctuation +' ' Text.Whitespace +'0' Literal.Number.Integer +')' Punctuation +',' Punctuation +' ' Text.Whitespace +'0x1.0p+127' Literal.Number.Float +')' Punctuation +';' Punctuation +'\n' Text.Whitespace + +' ' Text.Whitespace +'test__floatuntisf' Name +'(' Punctuation +'make_ti' Name +'(' Punctuation +'0x8000010000000000' Literal.Number.Hex +',' Punctuation +' ' Text.Whitespace +'0' Literal.Number.Integer +')' Punctuation +',' Punctuation +' ' Text.Whitespace +'0x1.000002p+127' Literal.Number.Float +')' Punctuation +';' Punctuation +'\n' Text.Whitespace + +'\n' Text.Whitespace + +' ' Text.Whitespace +'test__floatuntisf' Name +'(' Punctuation +'make_ti' Name +'(' Punctuation +'0x8000000000000000' Literal.Number.Hex +',' Punctuation +' ' Text.Whitespace +'0' Literal.Number.Integer +')' Punctuation +',' Punctuation +' ' Text.Whitespace +'0x1.000000p+127' Literal.Number.Float +')' Punctuation +';' Punctuation +'\n' Text.Whitespace + +'\n' Text.Whitespace + +' ' Text.Whitespace +'test__floatuntisf' Name +'(' Punctuation +'0x0007FB72E8000000' Literal.Number.Hex +',' Punctuation +' ' Text.Whitespace +'0x1.FEDCBAp+50' Literal.Number.Float +')' Punctuation +';' Punctuation +'\n' Text.Whitespace + +'\n' Text.Whitespace + +' ' Text.Whitespace +'test__floatuntisf' Name +'(' Punctuation +'0x0007FB72EA000000' Literal.Number.Hex +',' Punctuation +' ' Text.Whitespace +'0x1.FEDCBA8p+50' Literal.Number.Float +')' Punctuation +';' Punctuation +'\n' Text.Whitespace + +' ' Text.Whitespace +'test__floatuntisf' Name +'(' Punctuation +'0x0007FB72EB000000' Literal.Number.Hex +',' Punctuation +' ' Text.Whitespace +'0x1.FEDCBACp+50' Literal.Number.Float +')' Punctuation +';' Punctuation +'\n' Text.Whitespace + +'\n' Text.Whitespace + +' ' Text.Whitespace +'test__floatuntisf' Name +'(' Punctuation +'0x0007FB72EC000000' Literal.Number.Hex +',' Punctuation +' ' Text.Whitespace +'0x1.FEDCBBp+50' Literal.Number.Float +')' Punctuation +';' Punctuation +'\n' Text.Whitespace + +'\n' Text.Whitespace + +' ' Text.Whitespace +'test__floatuntisf' Name +'(' Punctuation +'0x0007FB72E6000000' Literal.Number.Hex +',' Punctuation +' ' Text.Whitespace +'0x1.FEDCB98p+50' Literal.Number.Float +')' Punctuation +';' Punctuation +'\n' Text.Whitespace + +' ' Text.Whitespace +'test__floatuntisf' Name +'(' Punctuation +'0x0007FB72E7000000' Literal.Number.Hex +',' Punctuation +' ' Text.Whitespace +'0x1.FEDCB9Cp+50' Literal.Number.Float +')' Punctuation +';' Punctuation +'\n' Text.Whitespace + +' ' Text.Whitespace +'test__floatuntisf' Name +'(' Punctuation +'0x0007FB72E4000000' Literal.Number.Hex +',' Punctuation +' ' Text.Whitespace +'0x1.FEDCB9p+50' Literal.Number.Float +')' Punctuation +';' Punctuation +'\n' Text.Whitespace + +'\n' Text.Whitespace + +' ' Text.Whitespace +'test__floatuntisf' Name +'(' Punctuation +'0xFFFFFFFFFFFFFFFE' Literal.Number.Hex +',' Punctuation +' ' Text.Whitespace +'0x1p+64' Literal.Number.Float +')' Punctuation +';' Punctuation +'\n' Text.Whitespace + +' ' Text.Whitespace +'test__floatuntisf' Name +'(' Punctuation +'0xFFFFFFFFFFFFFFFF' Literal.Number.Hex +',' Punctuation +' ' Text.Whitespace +'0x1p+64' Literal.Number.Float +')' Punctuation +';' Punctuation +'\n' Text.Whitespace + +'\n' Text.Whitespace + +' ' Text.Whitespace +'test__floatuntisf' Name +'(' Punctuation +'0x0007FB72E8000000' Literal.Number.Hex +',' Punctuation +' ' Text.Whitespace +'0x1.FEDCBAp+50' Literal.Number.Float +')' Punctuation +';' Punctuation +'\n' Text.Whitespace + +'\n' Text.Whitespace + +' ' Text.Whitespace +'test__floatuntisf' Name +'(' Punctuation +'0x0007FB72EA000000' Literal.Number.Hex +',' Punctuation +' ' Text.Whitespace +'0x1.FEDCBAp+50' Literal.Number.Float +')' Punctuation +';' Punctuation +'\n' Text.Whitespace + +' ' Text.Whitespace +'test__floatuntisf' Name +'(' Punctuation +'0x0007FB72EB000000' Literal.Number.Hex +',' Punctuation +' ' Text.Whitespace +'0x1.FEDCBAp+50' Literal.Number.Float +')' Punctuation +';' Punctuation +'\n' Text.Whitespace + +' ' Text.Whitespace +'test__floatuntisf' Name +'(' Punctuation +'0x0007FB72EBFFFFFF' Literal.Number.Hex +',' Punctuation +' ' Text.Whitespace +'0x1.FEDCBAp+50' Literal.Number.Float +')' Punctuation +';' Punctuation +'\n' Text.Whitespace + +' ' Text.Whitespace +'test__floatuntisf' Name +'(' Punctuation +'0x0007FB72EC000000' Literal.Number.Hex +',' Punctuation +' ' Text.Whitespace +'0x1.FEDCBCp+50' Literal.Number.Float +')' Punctuation +';' Punctuation +'\n' Text.Whitespace + +' ' Text.Whitespace +'test__floatuntisf' Name +'(' Punctuation +'0x0007FB72E8000001' Literal.Number.Hex +',' Punctuation +' ' Text.Whitespace +'0x1.FEDCBAp+50' Literal.Number.Float +')' Punctuation +';' Punctuation +'\n' Text.Whitespace + +'\n' Text.Whitespace + +' ' Text.Whitespace +'test__floatuntisf' Name +'(' Punctuation +'0x0007FB72E6000000' Literal.Number.Hex +',' Punctuation +' ' Text.Whitespace +'0x1.FEDCBAp+50' Literal.Number.Float +')' Punctuation +';' Punctuation +'\n' Text.Whitespace + +' ' Text.Whitespace +'test__floatuntisf' Name +'(' Punctuation +'0x0007FB72E7000000' Literal.Number.Hex +',' Punctuation +' ' Text.Whitespace +'0x1.FEDCBAp+50' Literal.Number.Float +')' Punctuation +';' Punctuation +'\n' Text.Whitespace + +' ' Text.Whitespace +'test__floatuntisf' Name +'(' Punctuation +'0x0007FB72E7FFFFFF' Literal.Number.Hex +',' Punctuation +' ' Text.Whitespace +'0x1.FEDCBAp+50' Literal.Number.Float +')' Punctuation +';' Punctuation +'\n' Text.Whitespace + +' ' Text.Whitespace +'test__floatuntisf' Name +'(' Punctuation +'0x0007FB72E4000001' Literal.Number.Hex +',' Punctuation +' ' Text.Whitespace +'0x1.FEDCBAp+50' Literal.Number.Float +')' Punctuation +';' Punctuation +'\n' Text.Whitespace + +' ' Text.Whitespace +'test__floatuntisf' Name +'(' Punctuation +'0x0007FB72E4000000' Literal.Number.Hex +',' Punctuation +' ' Text.Whitespace +'0x1.FEDCB8p+50' Literal.Number.Float +')' Punctuation +';' Punctuation +'\n' Text.Whitespace + +'\n' Text.Whitespace + +' ' Text.Whitespace +'test__floatuntisf' Name +'(' Punctuation +'make_ti' Name +'(' Punctuation +'0x0000000000001FED' Literal.Number.Hex +',' Punctuation +' ' Text.Whitespace +'0xCB90000000000001' Literal.Number.Hex +')' Punctuation +',' Punctuation +' ' Text.Whitespace +'0x1.FEDCBAp+76' Literal.Number.Float +')' Punctuation +';' Punctuation +'\n' Text.Whitespace + +' ' Text.Whitespace +'test__floatuntisf' Name +'(' Punctuation +'make_ti' Name +'(' Punctuation +'0x0000000000001FED' Literal.Number.Hex +',' Punctuation +' ' Text.Whitespace +'0xCBA0000000000000' Literal.Number.Hex +')' Punctuation +',' Punctuation +' ' Text.Whitespace +'0x1.FEDCBAp+76' Literal.Number.Float +')' Punctuation +';' Punctuation +'\n' Text.Whitespace + +' ' Text.Whitespace +'test__floatuntisf' Name +'(' Punctuation +'make_ti' Name +'(' Punctuation +'0x0000000000001FED' Literal.Number.Hex +',' Punctuation +' ' Text.Whitespace +'0xCBAFFFFFFFFFFFFF' Literal.Number.Hex +')' Punctuation +',' Punctuation +' ' Text.Whitespace +'0x1.FEDCBAp+76' Literal.Number.Float +')' Punctuation +';' Punctuation +'\n' Text.Whitespace + +' ' Text.Whitespace +'test__floatuntisf' Name +'(' Punctuation +'make_ti' Name +'(' Punctuation +'0x0000000000001FED' Literal.Number.Hex +',' Punctuation +' ' Text.Whitespace +'0xCBB0000000000000' Literal.Number.Hex +')' Punctuation +',' Punctuation +' ' Text.Whitespace +'0x1.FEDCBCp+76' Literal.Number.Float +')' Punctuation +';' Punctuation +'\n' Text.Whitespace + +' ' Text.Whitespace +'test__floatuntisf' Name +'(' Punctuation +'make_ti' Name +'(' Punctuation +'0x0000000000001FED' Literal.Number.Hex +',' Punctuation +' ' Text.Whitespace +'0xCBB0000000000001' Literal.Number.Hex +')' Punctuation +',' Punctuation +' ' Text.Whitespace +'0x1.FEDCBCp+76' Literal.Number.Float +')' Punctuation +';' Punctuation +'\n' Text.Whitespace + +' ' Text.Whitespace +'test__floatuntisf' Name +'(' Punctuation +'make_ti' Name +'(' Punctuation +'0x0000000000001FED' Literal.Number.Hex +',' Punctuation +' ' Text.Whitespace +'0xCBBFFFFFFFFFFFFF' Literal.Number.Hex +')' Punctuation +',' Punctuation +' ' Text.Whitespace +'0x1.FEDCBCp+76' Literal.Number.Float +')' Punctuation +';' Punctuation +'\n' Text.Whitespace + +' ' Text.Whitespace +'test__floatuntisf' Name +'(' Punctuation +'make_ti' Name +'(' Punctuation +'0x0000000000001FED' Literal.Number.Hex +',' Punctuation +' ' Text.Whitespace +'0xCBC0000000000000' Literal.Number.Hex +')' Punctuation +',' Punctuation +' ' Text.Whitespace +'0x1.FEDCBCp+76' Literal.Number.Float +')' Punctuation +';' Punctuation +'\n' Text.Whitespace + +' ' Text.Whitespace +'test__floatuntisf' Name +'(' Punctuation +'make_ti' Name +'(' Punctuation +'0x0000000000001FED' Literal.Number.Hex +',' Punctuation +' ' Text.Whitespace +'0xCBC0000000000001' Literal.Number.Hex +')' Punctuation +',' Punctuation +' ' Text.Whitespace +'0x1.FEDCBCp+76' Literal.Number.Float +')' Punctuation +';' Punctuation +'\n' Text.Whitespace + +' ' Text.Whitespace +'test__floatuntisf' Name +'(' Punctuation +'make_ti' Name +'(' Punctuation +'0x0000000000001FED' Literal.Number.Hex +',' Punctuation +' ' Text.Whitespace +'0xCBD0000000000000' Literal.Number.Hex +')' Punctuation +',' Punctuation +' ' Text.Whitespace +'0x1.FEDCBCp+76' Literal.Number.Float +')' Punctuation +';' Punctuation +'\n' Text.Whitespace + +' ' Text.Whitespace +'test__floatuntisf' Name +'(' Punctuation +'make_ti' Name +'(' Punctuation +'0x0000000000001FED' Literal.Number.Hex +',' Punctuation +' ' Text.Whitespace +'0xCBD0000000000001' Literal.Number.Hex +')' Punctuation +',' Punctuation +' ' Text.Whitespace +'0x1.FEDCBEp+76' Literal.Number.Float +')' Punctuation +';' Punctuation +'\n' Text.Whitespace + +' ' Text.Whitespace +'test__floatuntisf' Name +'(' Punctuation +'make_ti' Name +'(' Punctuation +'0x0000000000001FED' Literal.Number.Hex +',' Punctuation +' ' Text.Whitespace +'0xCBDFFFFFFFFFFFFF' Literal.Number.Hex +')' Punctuation +',' Punctuation +' ' Text.Whitespace +'0x1.FEDCBEp+76' Literal.Number.Float +')' Punctuation +';' Punctuation +'\n' Text.Whitespace + +' ' Text.Whitespace +'test__floatuntisf' Name +'(' Punctuation +'make_ti' Name +'(' Punctuation +'0x0000000000001FED' Literal.Number.Hex +',' Punctuation +' ' Text.Whitespace +'0xCBE0000000000000' Literal.Number.Hex +')' Punctuation +',' Punctuation +' ' Text.Whitespace +'0x1.FEDCBEp+76' Literal.Number.Float +')' Punctuation +';' Punctuation +'\n' Text.Whitespace + +'}' Punctuation +'\n' Text.Whitespace + +'\n' Text.Whitespace + +'fn' Keyword +' ' Text.Whitespace +'trimStart' Name +'(' Punctuation +'slice' Name +':' Operator +' ' Text.Whitespace +'[' Punctuation +']' Punctuation +'const' Keyword.Reserved +' ' Text.Whitespace +'u8' Keyword.Type +',' Punctuation +' ' Text.Whitespace +'ch' Name +':' Operator +' ' Text.Whitespace +'u8' Keyword.Type +')' Punctuation +' ' Text.Whitespace +'[' Punctuation +']' Punctuation +'const' Keyword.Reserved +' ' Text.Whitespace +'u8' Keyword.Type +' ' Text.Whitespace +'{' Punctuation +'\n' Text.Whitespace + +' ' Text.Whitespace +'var' Keyword.Reserved +' ' Text.Whitespace +'i' Name +':' Operator +' ' Text.Whitespace +'usize' Keyword.Type +' ' Text.Whitespace +'=' Operator +' ' Text.Whitespace +'0' Literal.Number.Integer +';' Punctuation +'\n' Text.Whitespace + +' ' Text.Whitespace +'const' Keyword.Reserved +' ' Text.Whitespace +'test_string' Name +' ' Text.Whitespace +'=' Operator +' ' Text.Whitespace +'"' Literal.String +'test' Literal.String +'\\"' Literal.String.Escape +'string' Literal.String +'"' Literal.String +';' Punctuation +'\n' Text.Whitespace + +' ' Text.Whitespace +'for' Keyword +' ' Text.Whitespace +'(' Punctuation +'slice' Name +')' Punctuation +' ' Text.Whitespace +'|' Operator +'b' Name +'|' Operator +' ' Text.Whitespace +'{' Punctuation +'\n' Text.Whitespace + +' ' Text.Whitespace +'if' Keyword +' ' Text.Whitespace +'(' Punctuation +'b' Name +' ' Text.Whitespace +'=' Operator +'=' Operator +' ' Text.Whitespace +"'\\xa3'" Literal.String.Escape +')' Punctuation +' ' Text.Whitespace +'break' Keyword +';' Punctuation +'\n' Text.Whitespace + +' ' Text.Whitespace +'if' Keyword +' ' Text.Whitespace +'(' Punctuation +'b' Name +' ' Text.Whitespace +'=' Operator +'=' Operator +' ' Text.Whitespace +"'\\ua3d3'" Literal.String.Escape +')' Punctuation +' ' Text.Whitespace +'break' Keyword +';' Punctuation +'\n' Text.Whitespace + +' ' Text.Whitespace +'if' Keyword +' ' Text.Whitespace +'(' Punctuation +'b' Name +' ' Text.Whitespace +'=' Operator +'=' Operator +' ' Text.Whitespace +"'\\Ua3d3d3'" Literal.String.Escape +')' Punctuation +' ' Text.Whitespace +'break' Keyword +';' Punctuation +'\n' Text.Whitespace + +' ' Text.Whitespace +'if' Keyword +' ' Text.Whitespace +'(' Punctuation +'b' Name +' ' Text.Whitespace +'=' Operator +'=' Operator +' ' Text.Whitespace +"'\\t'" Literal.String.Escape +')' Punctuation +' ' Text.Whitespace +'break' Keyword +';' Punctuation +'\n' Text.Whitespace + +' ' Text.Whitespace +'if' Keyword +' ' Text.Whitespace +'(' Punctuation +'b' Name +' ' Text.Whitespace +'=' Operator +'=' Operator +' ' Text.Whitespace +"'\\n'" Literal.String.Escape +')' Punctuation +' ' Text.Whitespace +'break' Keyword +';' Punctuation +'\n' Text.Whitespace + +' ' Text.Whitespace +'if' Keyword +' ' Text.Whitespace +'(' Punctuation +'b' Name +' ' Text.Whitespace +'=' Operator +'=' Operator +' ' Text.Whitespace +"'\\\\'" Literal.String.Escape +')' Punctuation +' ' Text.Whitespace +'break' Keyword +';' Punctuation +'\n' Text.Whitespace + +' ' Text.Whitespace +'if' Keyword +' ' Text.Whitespace +'(' Punctuation +'b' Name +' ' Text.Whitespace +'=' Operator +'=' Operator +' ' Text.Whitespace +"'\\''" Literal.String.Escape +')' Punctuation +' ' Text.Whitespace +'break' Keyword +';' Punctuation +'\n' Text.Whitespace + +' ' Text.Whitespace +'if' Keyword +' ' Text.Whitespace +'(' Punctuation +'b' Name +' ' Text.Whitespace +'=' Operator +'=' Operator +' ' Text.Whitespace +'\'"\'' Literal.String +')' Punctuation +' ' Text.Whitespace +'break' Keyword +';' Punctuation +'\n' Text.Whitespace + +' ' Text.Whitespace +'if' Keyword +' ' Text.Whitespace +'(' Punctuation +'b' Name +' ' Text.Whitespace +'!' Operator +'=' Operator +' ' Text.Whitespace +"'n'" Literal.String +')' Punctuation +' ' Text.Whitespace +'break' Keyword +';' Punctuation +'\n' Text.Whitespace + +' ' Text.Whitespace +'if' Keyword +' ' Text.Whitespace +'(' Punctuation +'b' Name +' ' Text.Whitespace +'!' Operator +'=' Operator +' ' Text.Whitespace +"'-'" Literal.String +')' Punctuation +' ' Text.Whitespace +'break' Keyword +';' Punctuation +'\n' Text.Whitespace + +' ' Text.Whitespace +'i' Name +' ' Text.Whitespace +'+' Operator +'=' Operator +' ' Text.Whitespace +'1' Literal.Number.Integer +';' Punctuation +'\n' Text.Whitespace + +' ' Text.Whitespace +'}' Punctuation +'\n' Text.Whitespace + +'\n' Text.Whitespace + +' ' Text.Whitespace +'return' Keyword +' ' Text.Whitespace +'slice' Name +'[' Punctuation +'i' Name +'.' Punctuation +'.' Punctuation +']' Punctuation +';' Punctuation +'\n' Text.Whitespace + +'}' Punctuation +'\n' Text.Whitespace |
