Luma 0.1.0
A low-level compiled alternative to C, C++, and more!
Loading...
Searching...
No Matches
Functions
expr.c File Reference

Expression parsing implementation for the programming language compiler. More...

#include <stdalign.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "parser.h"
Include dependency graph for expr.c:

Functions

Exprprimary (Parser *parser)
 
Exprunary (Parser *parser)
 
Exprgrouping (Parser *parser)
 
Exprbinary (Parser *parser, Expr *left, BindingPower bp)
 
Exprcall_expr (Parser *parser, Expr *left, BindingPower bp)
 
Exprassign_expr (Parser *parser, Expr *left, BindingPower bp)
 
Exprprefix_expr (Parser *parser, Expr *left, BindingPower bp)
 
Exprarray_expr (Parser *parser)
 
Exprstruct_expr (Parser *parser)
 
Exprnamed_struct_expr (Parser *parser, Expr *left, BindingPower bp)
 
Exprderef_expr (Parser *parser)
 
Expraddr_expr (Parser *parser)
 
Expralloc_expr (Parser *parser)
 
Exprfree_expr (Parser *parser)
 
Exprcast_expr (Parser *parser)
 
Exprinput_expr (Parser *parser)
 
Exprsystem_expr (Parser *parser)
 
Exprsyscall_expr (Parser *parser)
 
Exprsizeof_expr (Parser *parser)
 

Detailed Description

Expression parsing implementation for the programming language compiler.

This file contains implementations for parsing all types of expressions in the programming language. It works in conjunction with the Pratt parser implementation in parser.c to handle operator precedence and associativity correctly.

The expression parser handles:

All parsing functions follow the Pratt parser pattern, where expressions are built recursively based on operator precedence (binding power). The functions correspond to null denotation (nud) and left denotation (led) operations.

Author
Connor Harris
Date
2025
Version
1.0

Function Documentation

◆ addr_expr()

Expr * addr_expr ( Parser parser)

◆ alloc_expr()

Expr * alloc_expr ( Parser parser)

◆ array_expr()

Expr * array_expr ( Parser parser)

◆ assign_expr()

Expr * assign_expr ( Parser parser,
Expr left,
BindingPower  bp 
)

◆ binary()

Expr * binary ( Parser parser,
Expr left,
BindingPower  bp 
)

◆ call_expr()

Expr * call_expr ( Parser parser,
Expr left,
BindingPower  bp 
)

◆ cast_expr()

Expr * cast_expr ( Parser parser)

◆ deref_expr()

Expr * deref_expr ( Parser parser)

◆ free_expr()

Expr * free_expr ( Parser parser)

◆ grouping()

Expr * grouping ( Parser parser)

◆ input_expr()

Expr * input_expr ( Parser parser)

◆ named_struct_expr()

Expr * named_struct_expr ( Parser parser,
Expr left,
BindingPower  bp 
)

◆ prefix_expr()

Expr * prefix_expr ( Parser parser,
Expr left,
BindingPower  bp 
)

◆ primary()

Expr * primary ( Parser parser)

◆ sizeof_expr()

Expr * sizeof_expr ( Parser parser)

◆ struct_expr()

Expr * struct_expr ( Parser parser)

◆ syscall_expr()

Expr * syscall_expr ( Parser parser)

◆ system_expr()

Expr * system_expr ( Parser parser)

◆ unary()

Expr * unary ( Parser parser)