#include "../lexer/lexer.h" #include "../parser/parser.h" #include #include extern void rava_ast_print(RavaASTNode_t *node, int depth); int main() { const char *source = "public class Calculator {\n" " public static int add(int a, int b) {\n" " int result = a + b;\n" " return result;\n" " }\n" "\n" " public static void main(String[] args) {\n" " int x = 10;\n" " int y = 20;\n" " int sum = add(x, y);\n" " if (sum > 0) {\n" " System.out.println(\"Positive result\");\n" " }\n" " }\n" "}\n"; printf("Source code:\n%s\n", source); printf("\nAbstract Syntax Tree:\n"); printf("================================================================================\n\n"); RavaLexer_t *lexer = rava_lexer_create(source); RavaParser_t *parser = rava_parser_create(lexer); RavaASTNode_t *ast = rava_parser_parse(parser); if (parser->had_error) { printf("Parse error: %s\n", parser->error_message ? parser->error_message : "Unknown error"); rava_parser_destroy(parser); rava_lexer_destroy(lexer); return 1; } rava_ast_print(ast, 0); rava_ast_node_destroy(ast); rava_parser_destroy(parser); rava_lexer_destroy(lexer); printf("\nParser test completed successfully!\n"); return 0; }