KCC - Kayte C Compiler 1.10.0
A C compiler implementation with preprocessor, lexer, parser, and code generator
Loading...
Searching...
No Matches
parser.h
1#ifndef PARSER_H
2#define PARSER_H
3
4#include "types.h"
5
6// Parser lifecycle functions
7Parser *parser_create(Lexer *lexer);
8void parser_destroy(Parser *parser);
9
10// Main parsing functions
11ASTNode *parser_parse(Parser *parser);
12ASTNode *parser_parse_program(Parser *parser);
13ASTNode *parser_parse_declaration(Parser *parser);
14ASTNode *parser_parse_function(Parser *parser, DataType return_type, char *name);
15ASTNode *parser_parse_function_definition(Parser *parser, DataType return_type, char *name);
16ASTNode *parser_parse_variable_declaration(Parser *parser, DataType var_type);
17
18// Statement parsing
19ASTNode *parser_parse_statement(Parser *parser);
20ASTNode *parser_parse_compound_statement(Parser *parser);
21ASTNode *parser_parse_expression_statement(Parser *parser);
22ASTNode *parser_parse_if_statement(Parser *parser);
23ASTNode *parser_parse_while_statement(Parser *parser);
24ASTNode *parser_parse_for_statement(Parser *parser);
25ASTNode *parser_parse_return_statement(Parser *parser);
26
27// Expression parsing
28ASTNode *parser_parse_expression(Parser *parser);
29ASTNode *parser_parse_assignment_expression(Parser *parser);
30ASTNode *parser_parse_logical_or_expression(Parser *parser);
31ASTNode *parser_parse_logical_and_expression(Parser *parser);
32ASTNode *parser_parse_equality_expression(Parser *parser);
33ASTNode *parser_parse_relational_expression(Parser *parser);
34ASTNode *parser_parse_additive_expression(Parser *parser);
35ASTNode *parser_parse_multiplicative_expression(Parser *parser);
36ASTNode *parser_parse_unary_expression(Parser *parser);
37ASTNode *parser_parse_primary_expression(Parser *parser);
38ASTNode *parser_parse_call_expression(Parser *parser, ASTNode *primary);
39
40// Parser utility functions
41void parser_advance(Parser *parser);
42bool parser_match(Parser *parser, TokenType type);
43bool parser_expect(Parser *parser, TokenType type);
44bool parser_is_type_specifier(TokenType type);
45DataType parser_parse_type_specifier(Parser *parser);
46
47// Helper functions for creating AST nodes
48ASTNode *parser_create_function_declaration(DataType return_type, const char *name);
49ASTNode *parser_create_variable_declaration(DataType type, const char *name);
50
51// Type conversion utilities
52DataType token_type_to_data_type(TokenType type);
53
54#endif // PARSER_H
AST Node structure.
Definition types.h:333
Lexer structure.
Definition types.h:499
Parser structure.
Definition types.h:516
Type definitions for KCC compiler with Objective-C support.
TokenType
Token types for lexical analysis.
Definition types.h:24
DataType
Data types supported by the compiler.
Definition types.h:193