diff options
| author | Baitinq <[email protected]> | 2025-04-06 16:17:22 +0200 |
|---|---|---|
| committer | Baitinq <[email protected]> | 2025-04-06 16:17:22 +0200 |
| commit | bd42f4899d09c8f6317ae1af1747ae5b6ac81650 (patch) | |
| tree | ed21afbbcca7f0be0751e4bf7104bf7cdc9f36e6 /src/parser.zig | |
| parent | Codegen: Fix GEP type (diff) | |
| download | pry-lang-bd42f4899d09c8f6317ae1af1747ae5b6ac81650.tar.gz pry-lang-bd42f4899d09c8f6317ae1af1747ae5b6ac81650.tar.bz2 pry-lang-bd42f4899d09c8f6317ae1af1747ae5b6ac81650.zip | |
Feature: Add char type and support underlying pointer values
Diffstat (limited to 'src/parser.zig')
| -rw-r--r-- | src/parser.zig | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/src/parser.zig b/src/parser.zig index 4f607be..7ed1cb3 100644 --- a/src/parser.zig +++ b/src/parser.zig @@ -57,6 +57,9 @@ pub const Node = union(enum) { BOOLEAN: struct { value: bool, }, + CHAR: struct { + value: u8, + }, STRING: struct { value: []const u8, }, @@ -429,7 +432,7 @@ pub const Parser = struct { } }); } - // PrimaryExpression ::= NUMBER | BOOLEAN | STRING | IDENTIFIER | FunctionCallStatement | FunctionDefinition | LPAREN Expression RPAREN + // PrimaryExpression ::= NUMBER | BOOLEAN | CHAR | STRING | IDENTIFIER | FunctionCallStatement | FunctionDefinition | LPAREN Expression RPAREN fn parse_primary_expression(self: *Parser) ParserError!*Node { errdefer if (!self.try_context) std.debug.print("Error parsing primary expression {any}\n", .{self.peek_token()}); @@ -458,6 +461,11 @@ pub const Parser = struct { .value = boolean_token, } }, }), + .CHAR => |char_token| try self.create_node(.{ + .PRIMARY_EXPRESSION = .{ .CHAR = .{ + .value = char_token, + } }, + }), .STRING => |string_token| try self.create_node(.{ .PRIMARY_EXPRESSION = .{ .STRING = .{ .value = try self.arena.dupe(u8, string_token), |