Compare commits

..

No commits in common. "02c2055601508b7e53cad635dfa9f5f5ae354d54" and "830693d16d87054bfdf56d993209bc2a637af007" have entirely different histories.

2 changed files with 8 additions and 19 deletions

View file

@ -1,13 +1,12 @@
const ( //const (
Cock = 1 // Cock = 1
Ball = 2 + 3 // Ball = 2
Deals = 3 // Deals = 3
Businesses = 4 // Businesses = 4
) //)
fn main(a int) int { fn main(a int) int {
1 + 2 + 3 + 4 1 + 2 + 3 + 4
1 + 1 * 1 1 + 1 * 1
3 / (51 + 2) 3 / (51 + 2)
println(2 * 1956)
} }

View file

@ -91,12 +91,10 @@ pub const Parser = struct {
} }
fn consumeSingle(self: *Parser, ttype: TokenType) !Token { fn consumeSingle(self: *Parser, ttype: TokenType) !Token {
std.debug.warn("consume {}..?", ttype);
if (self.check(ttype)) { if (self.check(ttype)) {
var cur = self.peek(); var cur = self.peek();
_ = try self.nextToken(); _ = try self.nextToken();
std.debug.warn(" now has {}\n", self.peek()); std.debug.warn("consumed {}, now has {}\n", ttype, self.peek());
return cur; return cur;
} }
@ -381,7 +379,6 @@ pub const Parser = struct {
_ = try self.consumeSingle(.LeftBrace); _ = try self.consumeSingle(.LeftBrace);
while (self.peek().ttype != .RightBrace) { while (self.peek().ttype != .RightBrace) {
std.debug.warn("get smt with cur {}\n", self.peek().ttype);
var node = try self.parseStmt(); var node = try self.parseStmt();
ast.printNode(node, 0); ast.printNode(node, 0);
try stmts.append(node.Stmt); try stmts.append(node.Stmt);
@ -405,11 +402,7 @@ pub const Parser = struct {
fn parsePrintln(self: *@This()) !*Stmt { fn parsePrintln(self: *@This()) !*Stmt {
_ = try self.consumeSingle(.Println); _ = try self.consumeSingle(.Println);
_ = try self.consumeSingle(.LeftParen);
var expr = try self.parseExpr(); var expr = try self.parseExpr();
_ = try self.consumeSingle(.RightParen);
return try Stmt.mkPrintln(self.allocator, expr.Expr); return try Stmt.mkPrintln(self.allocator, expr.Expr);
} }
@ -516,10 +509,7 @@ pub const Parser = struct {
_ = try self.nextToken(); _ = try self.nextToken();
var expr = (try self.parseExpr()).Expr; var expr = (try self.parseExpr()).Expr;
_ = try self.consume(.RightParen, "Expected ')' after expression"); _ = try self.consume(.RightParen, "Expected ')' after expression");
break :blk try self.mkGrouping(expr);
// for groupings, we don't want to skip tokens as we already
// consumed RightParen.
return try self.mkGrouping(expr);
}, },
else => blk: { else => blk: {