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 › compiler/ › translate-c/ › MacroTranslator.zig › parseCExpr
parseCExpr
MacroTranslator.parseCExpr
fn parseCExpr (mt : *MacroTranslator , scope : *Scope ) ParseError !ZigNode
File
Code
fn parseCExpr (mt : *MacroTranslator , scope : *Scope ) ParseError !ZigNode {
const arena = mt .t .arena ;
var block_scope = try Scope .Block .init (mt .t , scope , true );
defer block_scope .deinit ();
const node = try mt .parseCCondExpr (&block_scope .base );
if (!mt .eat (.comma )) return node ;
var last = node ;
while (true ) {
const ignore = try ZigTag .discard .create (arena , .{ .should_skip = false , .value = last });
try block_scope .statements .append (mt .t .gpa , ignore );
last = try mt .parseCCondExpr (&block_scope .base );
if (!mt .eat (.comma )) break ;
}
const break_node = try ZigTag .break_val .create (arena , .{
.label = block_scope .label ,
.val = last ,
});
try block_scope .statements .append (mt .t .gpa , break_node );
return try block_scope .complete ();
}