Skip to content

Commit 3bb5804

Browse files
authored
Update main.zig
1 parent 31ee14a commit 3bb5804

File tree

1 file changed

+35
-1
lines changed

1 file changed

+35
-1
lines changed

hacker-parser/main.zig

Lines changed: 35 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
const std = @import("std");
22
const parse = @import("parse.zig");
33
const utils = @import("utils.zig");
4+
45
pub fn main() !void {
56
var gpa = std.heap.GeneralPurposeAllocator(.{}){};
67
defer _ = gpa.deinit();
@@ -26,6 +27,7 @@ pub fn main() !void {
2627
defer utils.deinitParseResult(&res, allocator);
2728
try outputJson(res);
2829
}
30+
2931
fn outputJson(res: parse.ParseResult) !void {
3032
const stdout = std.io.getStdOut().writer();
3133
try stdout.print("{{", .{});
@@ -58,6 +60,17 @@ fn outputJson(res: parse.ParseResult) !void {
5860
try std.json.encodeJsonString(entry.value_ptr.*, .{}, stdout);
5961
}
6062
try stdout.print("}},", .{});
63+
try stdout.print("\"local_vars\":{{", .{});
64+
first = true;
65+
var local_vars_it = res.local_vars.iterator();
66+
while (local_vars_it.next()) |entry| {
67+
if (!first) try stdout.print(",", .{});
68+
first = false;
69+
try std.json.encodeJsonString(entry.key_ptr.*, .{}, stdout);
70+
try stdout.print(":", .{});
71+
try std.json.encodeJsonString(entry.value_ptr.*, .{}, stdout);
72+
}
73+
try stdout.print("}},", .{});
6174
try stdout.print("\"cmds\":[", .{});
6275
first = true;
6376
for (res.cmds.items) |c| {
@@ -87,9 +100,30 @@ fn outputJson(res: parse.ParseResult) !void {
87100
for (res.plugins.items) |p| {
88101
if (!first) try stdout.print(",", .{});
89102
first = false;
90-
try std.json.encodeJsonString(p, .{}, stdout);
103+
try stdout.print("{{", .{});
104+
try stdout.print("\"path\":", .{});
105+
try std.json.encodeJsonString(p.path, .{}, stdout);
106+
try stdout.print(",\"super\":{}", .{p.is_super});
107+
try stdout.print("}}", .{});
91108
}
92109
try stdout.print("],", .{});
110+
try stdout.print("\"functions\":{{", .{});
111+
first = true;
112+
var func_it = res.functions.iterator();
113+
while (func_it.next()) |entry| {
114+
if (!first) try stdout.print(",", .{});
115+
first = false;
116+
try std.json.encodeJsonString(entry.key_ptr.*, .{}, stdout);
117+
try stdout.print(":[", .{});
118+
var first2 = true;
119+
for (entry.value_ptr.items) |c| {
120+
if (!first2) try stdout.print(",", .{});
121+
first2 = false;
122+
try std.json.encodeJsonString(c, .{}, stdout);
123+
}
124+
try stdout.print("]", .{});
125+
}
126+
try stdout.print("}},", .{});
93127
try stdout.print("\"errors\":[", .{});
94128
first = true;
95129
for (res.errors.items) |e| {

0 commit comments

Comments
 (0)