chore: remove trailing whitespace from README.md line 42

This commit is contained in:
2025-12-04 15:49:20 +00:00
parent ed69521892
commit ce7624e693
13 changed files with 1046 additions and 18 deletions
+44
View File
@@ -82,6 +82,41 @@ static bool _rava_semantic_analyze_class(RavaSemanticAnalyzer_t *analyzer, RavaA
return !analyzer->had_error;
}
static bool _rava_semantic_analyze_enum(RavaSemanticAnalyzer_t *analyzer, RavaASTNode_t *enum_node) {
if (enum_node->type != RAVA_AST_ENUM_DECL) return false;
char *enum_name = enum_node->data.enum_decl.name;
RavaType_t *enum_type = rava_type_create_class(enum_name);
RavaSymbol_t *enum_symbol = rava_symbol_create(RAVA_SYMBOL_ENUM, enum_name, enum_type);
enum_symbol->modifiers = enum_node->data.enum_decl.modifiers;
enum_symbol->modifiers_count = enum_node->data.enum_decl.modifiers_count;
enum_symbol->declaration = enum_node;
if (!rava_symbol_table_define(analyzer->symbol_table, enum_symbol)) {
_rava_semantic_error(analyzer, "Enum already defined", enum_node->line, enum_node->column);
rava_symbol_destroy(enum_symbol);
return false;
}
rava_symbol_table_enter_scope(analyzer->symbol_table, enum_name);
for (size_t i = 0; i < enum_node->data.enum_decl.constants_count; i++) {
char *const_name = enum_node->data.enum_decl.constants[i];
RavaType_t *const_type = rava_type_create_class(enum_name);
RavaSymbol_t *const_symbol = rava_symbol_create(RAVA_SYMBOL_FIELD, const_name, const_type);
rava_symbol_table_define(analyzer->symbol_table, const_symbol);
}
for (size_t i = 0; i < enum_node->children_count; i++) {
_rava_semantic_analyze_node(analyzer, enum_node->children[i]);
}
rava_symbol_table_exit_scope(analyzer->symbol_table);
return !analyzer->had_error;
}
static bool _rava_semantic_analyze_method(RavaSemanticAnalyzer_t *analyzer, RavaASTNode_t *method_node) {
if (method_node->type != RAVA_AST_METHOD_DECL) return false;
@@ -330,6 +365,12 @@ static RavaType_t* _rava_semantic_check_expression(RavaSemanticAnalyzer_t *analy
return rava_type_create_primitive(RAVA_TYPE_BOOLEAN);
} else if (strcmp(method, "compareTo") == 0) {
return rava_type_create_primitive(RAVA_TYPE_INT);
} else if (strcmp(method, "size") == 0) {
return rava_type_create_primitive(RAVA_TYPE_INT);
} else if (strcmp(method, "isEmpty") == 0) {
return rava_type_create_primitive(RAVA_TYPE_BOOLEAN);
} else if (strcmp(method, "containsKey") == 0) {
return rava_type_create_primitive(RAVA_TYPE_BOOLEAN);
}
}
return rava_type_create_primitive(RAVA_TYPE_INT);
@@ -458,6 +499,9 @@ static bool _rava_semantic_analyze_node(RavaSemanticAnalyzer_t *analyzer, RavaAS
case RAVA_AST_CLASS_DECL:
return _rava_semantic_analyze_class(analyzer, node);
case RAVA_AST_ENUM_DECL:
return _rava_semantic_analyze_enum(analyzer, node);
case RAVA_AST_METHOD_DECL:
return _rava_semantic_analyze_method(analyzer, node);
+1
View File
@@ -10,6 +10,7 @@
typedef enum {
RAVA_SYMBOL_CLASS,
RAVA_SYMBOL_ENUM,
RAVA_SYMBOL_METHOD,
RAVA_SYMBOL_FIELD,
RAVA_SYMBOL_VARIABLE,