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