From 853b8e505e007c30fe9ad26ad4f611874f4e7d4f Mon Sep 17 00:00:00 2001 From: Bruce Hill Date: Tue, 13 Feb 2024 20:27:19 -0500 Subject: Add secret structs --- parse.c | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) (limited to 'parse.c') diff --git a/parse.c b/parse.c index e0690ff8..a74a43e3 100644 --- a/parse.c +++ b/parse.c @@ -1400,6 +1400,21 @@ PARSER(parse_struct_def) { arg_ast_t *fields = parse_args(ctx, &pos, false); + whitespace(&pos); + bool secret = false; + if (match(&pos, ";")) { // Extra flags + for (bool done = false; !done; done = true) { + whitespace(&pos); + if (match_word(&pos, "secret")) { + secret = true; + done = false; + } + whitespace(&pos); + match(&pos, ","); + match(&pos, ";"); + } + } + expect_closing(ctx, &pos, ")", "I wasn't able to parse the rest of this struct"); const char *ns_pos = pos; @@ -1412,7 +1427,7 @@ PARSER(parse_struct_def) { } if (!namespace) namespace = NewAST(ctx->file, pos, pos, Block, .statements=NULL); - return NewAST(ctx->file, start, pos, StructDef, .name=name, .fields=fields, .namespace=namespace); + return NewAST(ctx->file, start, pos, StructDef, .name=name, .fields=fields, .namespace=namespace, .secret=secret); } ast_t *parse_enum_def(parse_ctx_t *ctx, const char *pos) { -- cgit v1.2.3