KCC - Kayte C Compiler
1.10.0
A C compiler implementation with preprocessor, lexer, parser, and code generator
Loading...
Searching...
No Matches
include
ast.h
1
#ifndef AST_H
2
#define AST_H
3
4
#include "
types.h
"
5
6
7
// AST creation functions
8
ASTNode
*ast_create_program(
void
);
9
ASTNode
*ast_create_function_decl(
DataType
return_type,
const
char
*name,
ASTNode
**params,
ASTNode
*body);
10
ASTNode
*ast_create_var_decl(
DataType
var_type,
const
char
*name,
ASTNode
*initializer);
11
ASTNode
*ast_create_parameter(
DataType
param_type,
const
char
*name);
12
ASTNode
*ast_create_compound_stmt(
void
);
13
ASTNode
*ast_create_expression_stmt(
ASTNode
*expression);
14
ASTNode
*ast_create_return_stmt(
ASTNode
*expression);
15
ASTNode
*ast_create_if_stmt(
ASTNode
*condition,
ASTNode
*then_stmt,
ASTNode
*else_stmt);
16
ASTNode
*ast_create_while_stmt(
ASTNode
*condition,
ASTNode
*body);
17
ASTNode
*ast_create_for_stmt(
ASTNode
*init,
ASTNode
*condition,
ASTNode
*update,
ASTNode
*body);
18
ASTNode
*ast_create_break_stmt(
void
);
19
ASTNode
*ast_create_continue_stmt(
void
);
20
ASTNode
*ast_create_binary_expr(
TokenType
operator
,
ASTNode
*left,
ASTNode
*right);
21
ASTNode
*ast_create_unary_expr(
TokenType
operator
,
ASTNode
*operand);
22
ASTNode
*ast_create_call_expr(
const
char
*function_name);
23
ASTNode
*ast_create_identifier(
const
char
*name);
24
ASTNode
*ast_create_number(
int
value);
25
ASTNode
*ast_create_string(
const
char
*value);
26
ASTNode
*ast_create_assignment(
const
char
*variable,
ASTNode
*value);
27
28
// AST manipulation functions
29
void
ast_add_declaration(
ASTNode
*program,
ASTNode
*declaration);
30
void
ast_add_parameter(
ASTNode
*function,
ASTNode
*parameter);
31
void
ast_add_statement(
ASTNode
*compound_stmt,
ASTNode
*statement);
32
void
ast_add_argument(
ASTNode
*call_expr,
ASTNode
*argument);
33
34
// AST utility functions
35
void
ast_destroy(
ASTNode
*node);
36
// In the ast.c header file
37
void
ast_print(
ASTNode
*node,
int
indent);
38
const
char
*ast_node_type_to_string(
ASTNodeType
type);
39
const
char
*data_type_to_string(
DataType
type);
40
DataType
token_to_data_type(
TokenType
token);
41
42
#endif
// AST_H
ASTNode
AST Node structure.
Definition
types.h:333
types.h
Type definitions for KCC compiler with Objective-C support.
ASTNodeType
ASTNodeType
AST Node types.
Definition
types.h:215
TokenType
TokenType
Token types for lexical analysis.
Definition
types.h:24
DataType
DataType
Data types supported by the compiler.
Definition
types.h:193
Generated by
1.14.0