Phase 1: Core AST Extensions
Phase 1: Core AST Extensions
Objective
Add basic infrastructure for user-defined functions to the AST system.
Tasks
1. Extend AST Node Types
File: include/ast_node.h
- Add
AST_FUNCTION_DEFtoast_node_typeenum - Add
function_defstruct toast_node_dataunion
2. Create Function Definition Structure
New struct in include/ast_node.h:
typedef struct {
char* name; // Function name
char** parameters; // Parameter names array
size_t parameter_count; // Number of parameters
ast_node* body; // Function body (block statement)
} ast_function_def;
3. Function Storage
File: include/ast_evaluator.h
- Add function storage to
ast_evaluatorstruct - Create function lookup mechanism
4. AST Creation Function
New file: src/ast_create_function_def/ast_create_function_def.c
- Function to create
AST_FUNCTION_DEFnodes
5. Parser Extension
File: src/ast_parser/*.c (identify correct parser file)
- Add parsing for
function name param1 param2syntax - Handle function body parsing
6. Function Storage/Lookup
New files:
src/ast_evaluator_register_function/ast_evaluator_register_function.csrc/ast_evaluator_lookup_function/ast_evaluator_lookup_function.c
7. Update Function Call Handler
File: src/ast_evaluate_function_call/ast_evaluate_function_call.c
- Check for user-defined functions before built-ins
- Call user functions with parameter binding
8. Basic Test
New file: test/function/test_user_functions_basic.c
- Test function definition parsing
- Test function storage and lookup
- Test basic function calls
Implementation Order
- AST node extensions
- Function storage structures
- AST creation functions
- Parser updates
- Function registration/lookup
- Function call integration
- Basic tests
Success Criteria for Phase 1
- Parse
function add a bwithout errors - Store function in evaluator context
- Look up function by name
- Basic function call resolution works
- Unit tests pass