#define parse_exit()
#endif
+typedef struct {
+ int precedence;
+ int token;
+ AST* (*parse)(Parser* p, AST* expr);
+} OpDef_T;
+
+AST* if_expr(Parser* p, AST* expr);
+AST* block_expr(Parser* p, AST* expr);
+AST* paren_expr(Parser* p, AST* expr);
+AST* binop_expr(Parser* p, AST* expr);
+AST* fncall_expr(Parser* p, AST* expr);
+
+OpDef_T PrefixOps[] = {
+ { 0, T_IF, if_expr }, /* If expression */
+ { 0, '{', block_expr }, /* Expression block */
+ { 0, '(', paren_expr }, /* Parenthese grouping */
+};
+
+OpDef_T InfixOps[] = {
+ { 0, '.', binop_expr }, /* If expression */
+ { 0, '(', fncall_expr }, /* Parenthese grouping */
+};
+
+/* Operator Parsing Routines
+ *****************************************************************************/
+AST* if_expr(Parser* p, AST* expr) {
+ return NULL;
+}
+
+AST* block_expr(Parser* p, AST* expr) {
+ return NULL;
+}
+
+AST* paren_expr(Parser* p, AST* expr) {
+ return NULL;
+}
+
+AST* binop_expr(Parser* p, AST* expr) {
+ return NULL;
+}
+
+AST* fncall_expr(Parser* p, AST* expr) {
+ return NULL;
+}
+
/* Parsing Routines
*****************************************************************************/
static Tok* peek(Parser* p) {