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 library itself.
Zig › std/ › zig/ › Ast.zig › fullWhileComponents
fullWhileComponents
Ast.fullWhileComponents
fn fullWhileComponents (tree : Ast , info : full .While .Components ) full .While
File
Code
fn fullWhileComponents (tree : Ast , info : full .While .Components ) full .While {
var result : full .While = .{
.ast = info ,
.inline_token = null ,
.label_token = null ,
.payload_token = null ,
.else_token = undefined ,
.error_token = null ,
};
var tok_i = info .while_token ;
if (tree .isTokenPrecededByTags (tok_i , &.{.keyword_inline })) {
result .inline_token = tok_i - 1 ;
tok_i = tok_i - 1 ;
}
if (tree .isTokenPrecededByTags (tok_i , &.{ .identifier , .colon })) {
result .label_token = tok_i - 2 ;
}
const last_cond_token = tree .lastToken (info .cond_expr );
if (tree .tokenTag (last_cond_token + 2 ) == .pipe ) {
result .payload_token = last_cond_token + 3 ;
}
if (info .else_expr != .none ) {
// ^ ^
result .else_token = tree .lastToken (info .then_expr ) + 1 ;
if (tree .tokenTag (result .else_token + 1 ) == .pipe ) {
result .error_token = result .else_token + 2 ;
}
}
return result ;
}