2026-03-13 07:58:38 -06:00
|
|
|
#include "parser.h"
|
|
|
|
|
#include "lexer.h"
|
|
|
|
|
#include <stdlib.h>
|
|
|
|
|
|
2026-03-24 21:04:36 -06:00
|
|
|
size_t node_lbp(ASTNode node) {
|
|
|
|
|
if (node.type == NODE_INTEGER) {
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
switch (node.data.binary.op) {
|
2026-03-13 07:58:38 -06:00
|
|
|
case OP_ADD:
|
|
|
|
|
case OP_SUB:
|
|
|
|
|
return 10;
|
|
|
|
|
break;
|
|
|
|
|
case OP_DIV:
|
|
|
|
|
case OP_MUL:
|
|
|
|
|
return 20;
|
2026-03-24 21:04:36 -06:00
|
|
|
default:
|
|
|
|
|
return 0;
|
2026-03-13 07:58:38 -06:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2026-03-24 21:04:36 -06:00
|
|
|
size_t node_rbp(ASTNode node) {
|
|
|
|
|
if (node.type == NODE_INTEGER) {
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
switch (node.data.binary.op) {
|
2026-03-13 07:58:38 -06:00
|
|
|
case OP_ADD:
|
|
|
|
|
case OP_SUB:
|
|
|
|
|
return 10;
|
|
|
|
|
break;
|
|
|
|
|
case OP_DIV:
|
|
|
|
|
case OP_MUL:
|
|
|
|
|
return 20;
|
|
|
|
|
}
|
|
|
|
|
}
|
2026-03-24 21:04:36 -06:00
|
|
|
|
|
|
|
|
|