@@ -29,25 +29,25 @@ const BindingPower -> enum {
2929};
3030
3131pub const Parser -> struct {
32- tks: *lexer:: Token,
32+ tks: *Token,
3333 path: *char,
3434 pos: int,
3535
36- init_parser -> fn (tks: *lexer:: Token, path: *char) void {
36+ init_parser -> fn (tks: *Token, path: *char) void {
3737 self.path = path;
3838 self.tks = tks;
3939 self.pos = 0;
4040 },
4141};
4242
43- // TODO: Add in resolution types for namespaces/modules ex: *ast:: Expr, ast::NodeType,
43+ // TODO: Add in resolution types for namespaces/modules ex: *Expr, ast::NodeType,
4444// TODO: and fix the types for the module system for enums and structs with it.
4545
4646const at_end -> fn (psr: *Parser) int { return cast<int>(psr.pos >= psr.tks.size); }
47- const peek -> fn (psr: *Parser) lexer:: Token { return psr.tks.list[psr.pos]; }
47+ const peek -> fn (psr: *Parser) Token { return psr.tks.list[psr.pos]; }
4848const advance -> fn (psr: *Parser) void { psr.pos = psr.pos + 1; }
4949
50- const parse_expr -> fn (psr: *Parser, bp: int) *ast:: Expr;
50+ const parse_expr -> fn (psr: *Parser, bp: int) *Expr;
5151
5252const get_infix_bp -> fn (token_type: int) int {
5353 switch (token_type) {
@@ -57,8 +57,8 @@ const get_infix_bp -> fn (token_type: int) int {
5757 }
5858}
5959
60- const parse_literal -> fn (psr: *Parser) *ast:: Expr {
61- let tok: lexer:: Token = peek(psr);
60+ const parse_literal -> fn (psr: *Parser) *Expr {
61+ let tok: Token = peek(psr);
6262
6363 switch (tok.type) {
6464 0 -> { //number
@@ -83,15 +83,15 @@ const parse_literal -> fn (psr: *Parser) *ast::Expr {
8383 }
8484}
8585
86- const nud -> fn (psr: *Parser) *ast:: Expr {
87- let tok: lexer:: Token = peek(psr);
86+ const nud -> fn (psr: *Parser) *Expr {
87+ let tok: Token = peek(psr);
8888
8989 switch (tok.type) {
9090 0, 1, 2 -> { return parse_literal(psr); } //number, ident, string
9191 6 -> { //(
9292 advance(psr);
93- let expr: *ast:: Expr = parse_expr(psr, BindingPower::BP_NONE);
94- let next_tok: lexer:: Token = peek(psr);
93+ let expr: *Expr = parse_expr(psr, BindingPower::BP_NONE);
94+ let next_tok: Token = peek(psr);
9595 if (next_tok.type != 7) { //)
9696 output("Expected closing parenthesis\n");
9797 return cast<*Expr>(0);
@@ -102,37 +102,37 @@ const nud -> fn (psr: *Parser) *ast::Expr {
102102 16, 17 -> { //+, -
103103 let op: *char = tok.value;
104104 advance(psr);
105- let right: *ast:: Expr = parse_expr(psr, BindingPower::BP_UNARY);
105+ let right: *Expr = parse_expr(psr, BindingPower::BP_UNARY);
106106 return ast::create_unary_node(op[0], right);
107107 }
108108 _ -> {
109109 output("Unexpected token in prefix position\n");
110- return cast<*ast:: Expr>(0);
110+ return cast<*Expr>(0);
111111 }
112112 }
113113}
114114
115- const led -> fn (psr: *Parser, left: *ast:: Expr, token: lexer:: Token) *ast:: Expr {
115+ const led -> fn (psr: *Parser, left: *Expr, token: Token) *Expr {
116116 switch (token.type) {
117117 12, 13, 16, 17, 18, 19 -> { //==, !=, +, -, *, /
118118 let op: *char = psr.tks.list[psr.pos].value;
119119 advance(psr);
120- let right: *ast:: Expr = parse_expr(psr, get_infix_bp(token.type));
120+ let right: *Expr = parse_expr(psr, get_infix_bp(token.type));
121121 return ast::create_binary_node(op[0], left, right);
122122 }
123123 _ -> {
124124 output("Unexpected token in infix position\n");
125- return cast<*ast:: Expr>(0);
125+ return cast<*Expr>(0);
126126 }
127127 }
128128}
129129
130- const parse_expr -> fn (psr: *Parser, bp: int) *ast:: Expr {
131- let left: *ast:: Expr = nud(psr);
130+ const parse_expr -> fn (psr: *Parser, bp: int) *Expr {
131+ let left: *Expr = nud(psr);
132132
133133 // Inline the led logic here
134134 loop (at_end(psr) == 0 && bp < get_infix_bp(peek(psr).type)) {
135- let tok: lexer:: Token = peek(psr);
135+ let tok: Token = peek(psr);
136136 let next_bp: int = get_infix_bp(tok.type);
137137
138138 left = led(psr, left, tok);
@@ -141,11 +141,11 @@ const parse_expr -> fn (psr: *Parser, bp: int) *ast::Expr {
141141 return left;
142142}
143143
144- pub const parse -> fn (tks: *lexer:: Token, path: *char) *ast:: Stmt {
144+ pub const parse -> fn (tks: *Token, path: *char) *Stmt {
145145 let psr: Parser;
146146 psr.init_parser(tks, path);
147147
148- let node: *ast:: Expr = parse_expr(&psr, BindingPower::BP_NONE);
148+ let node: *Expr = parse_expr(&psr, BindingPower::BP_NONE);
149149
150150 return ast::create_program_node(node);
151151}
0 commit comments