Zig 0.17.0-dev (Split by item) This is an example of documentation generated by
ZigDoc , an alternative to Zig's built-in
Auto Doc feature. See also
examples in other modes/formats . The project being documented here (as the example) is the Zig standard library.
std › zig › Ast › parse Public Function parse Doc Source 149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170 pub fn parse (gpa : Allocator , source : [:0 ]const u8 , options : ParseOptions ) Allocator .Error !Ast {
var tokens = Ast .TokenList {};
defer tokens .deinit (gpa );
// Empirically, the zig std lib has an 8:1 ratio of source bytes to token count.
const estimated_token_count = source .len / 8 ;
try tokens .ensureTotalCapacity (gpa , estimated_token_count );
var tokenizer = std .zig .Tokenizer .init (source );
while (true ) {
const token = tokenizer .next ();
try tokens .append (gpa , .{
.tag = token .tag ,
.start = @intCast (token .loc .start ),
});
if (token .tag == .eof ) break ;
}
var tokens_slice = tokens .toOwnedSlice ();
errdefer tokens_slice .deinit (gpa );
return parseTokens (gpa , source , tokens_slice , options );
}
Result should be freed with tree.deinit() when there are no more references to any of the tokens or nodes.