feat: add initial plot.py module with beast visualization logic
This commit introduces the core plotting module for the beast project, including the initial implementation of data visualization functions and chart generation utilities. The module provides the foundational structure for rendering beast-related metrics and graphical outputs.
This commit is contained in:
@@ -0,0 +1,157 @@
|
||||
CC = gcc
|
||||
CFLAGS = -Wall -Wextra -Werror -std=gnu99 -O3 -march=native -I.
|
||||
LDFLAGS = -ldl
|
||||
|
||||
LEXER_SOURCES = lexer/lexer_tokenizer.c lexer/lexer_keywords.c lexer/lexer_literals.c
|
||||
LEXER_OBJECTS = $(LEXER_SOURCES:.c=.o)
|
||||
|
||||
PARSER_SOURCES = parser/parser.c parser/parser_expressions.c parser/parser_statements.c parser/parser_declarations.c parser/parser_printer.c
|
||||
PARSER_OBJECTS = $(PARSER_SOURCES:.c=.o)
|
||||
|
||||
TYPES_SOURCES = types/types.c
|
||||
TYPES_OBJECTS = $(TYPES_SOURCES:.c=.o)
|
||||
|
||||
SEMANTIC_SOURCES = semantic/symbol_table.c semantic/semantic.c
|
||||
SEMANTIC_OBJECTS = $(SEMANTIC_SOURCES:.c=.o)
|
||||
|
||||
IR_SOURCES = ir/ir.c ir/ir_gen.c
|
||||
IR_OBJECTS = $(IR_SOURCES:.c=.o)
|
||||
|
||||
RUNTIME_SOURCES = runtime/runtime.c runtime/labeltable.c runtime/methodcache.c runtime/fastframe.c runtime/superinst.c
|
||||
RUNTIME_OBJECTS = $(RUNTIME_SOURCES:.c=.o)
|
||||
|
||||
PHASE0_SOURCES = runtime/fastframe.c runtime/labeltable.c runtime/methodcache.c
|
||||
PHASE0_OBJECTS = $(PHASE0_SOURCES:.c=.o)
|
||||
|
||||
TEST_LEXER_SOURCES = tests/test_lexer.c
|
||||
TEST_LEXER_OBJECTS = $(TEST_LEXER_SOURCES:.c=.o)
|
||||
|
||||
TEST_PARSER_SOURCES = tests/test_parser.c
|
||||
TEST_PARSER_OBJECTS = $(TEST_PARSER_SOURCES:.c=.o)
|
||||
|
||||
TEST_SEMANTIC_SOURCES = tests/test_semantic.c
|
||||
TEST_SEMANTIC_OBJECTS = $(TEST_SEMANTIC_SOURCES:.c=.o)
|
||||
|
||||
TEST_IR_SOURCES = tests/test_ir.c
|
||||
TEST_IR_OBJECTS = $(TEST_IR_SOURCES:.c=.o)
|
||||
|
||||
TEST_RUNTIME_SOURCES = tests/test_runtime.c
|
||||
TEST_RUNTIME_OBJECTS = $(TEST_RUNTIME_SOURCES:.c=.o)
|
||||
|
||||
TEST_STRINGS_SOURCES = tests/test_strings.c
|
||||
TEST_STRINGS_OBJECTS = $(TEST_STRINGS_SOURCES:.c=.o)
|
||||
|
||||
TEST_ARRAYS_SOURCES = tests/test_arrays.c
|
||||
TEST_ARRAYS_OBJECTS = $(TEST_ARRAYS_SOURCES:.c=.o)
|
||||
|
||||
TEST_OBJECTS_SOURCES = tests/test_objects.c
|
||||
TEST_OBJECTS_OBJECTS = $(TEST_OBJECTS_SOURCES:.c=.o)
|
||||
|
||||
TEST_INSTANCE_SOURCES = tests/test_instance_methods.c
|
||||
TEST_INSTANCE_OBJECTS = $(TEST_INSTANCE_SOURCES:.c=.o)
|
||||
|
||||
TEST_FILEIO_SOURCES = tests/test_fileio.c
|
||||
TEST_FILEIO_OBJECTS = $(TEST_FILEIO_SOURCES:.c=.o)
|
||||
|
||||
all: test_lexer test_parser test_semantic test_ir test_runtime test_strings test_arrays test_objects test_instance_methods test_fileio
|
||||
|
||||
test_lexer: $(LEXER_OBJECTS) $(TEST_LEXER_OBJECTS)
|
||||
$(CC) $(CFLAGS) -o $@ $^ $(LDFLAGS)
|
||||
|
||||
test_parser: $(LEXER_OBJECTS) $(PARSER_OBJECTS) $(TEST_PARSER_OBJECTS)
|
||||
$(CC) $(CFLAGS) -o $@ $^ $(LDFLAGS)
|
||||
|
||||
test_semantic: $(LEXER_OBJECTS) $(PARSER_OBJECTS) $(TYPES_OBJECTS) $(SEMANTIC_OBJECTS) $(TEST_SEMANTIC_OBJECTS)
|
||||
$(CC) $(CFLAGS) -o $@ $^ $(LDFLAGS)
|
||||
|
||||
test_ir: $(LEXER_OBJECTS) $(PARSER_OBJECTS) $(TYPES_OBJECTS) $(SEMANTIC_OBJECTS) $(IR_OBJECTS) runtime/labeltable.o $(TEST_IR_OBJECTS)
|
||||
$(CC) $(CFLAGS) -o $@ $^ $(LDFLAGS)
|
||||
|
||||
test_runtime: $(LEXER_OBJECTS) $(PARSER_OBJECTS) $(TYPES_OBJECTS) $(SEMANTIC_OBJECTS) $(IR_OBJECTS) $(RUNTIME_OBJECTS) $(TEST_RUNTIME_OBJECTS)
|
||||
$(CC) $(CFLAGS) -o $@ $^ $(LDFLAGS)
|
||||
|
||||
test_strings: $(LEXER_OBJECTS) $(PARSER_OBJECTS) $(TYPES_OBJECTS) $(SEMANTIC_OBJECTS) $(IR_OBJECTS) $(RUNTIME_OBJECTS) $(TEST_STRINGS_OBJECTS)
|
||||
$(CC) $(CFLAGS) -o $@ $^ $(LDFLAGS)
|
||||
|
||||
test_arrays: $(LEXER_OBJECTS) $(PARSER_OBJECTS) $(TYPES_OBJECTS) $(SEMANTIC_OBJECTS) $(IR_OBJECTS) $(RUNTIME_OBJECTS) $(TEST_ARRAYS_OBJECTS)
|
||||
$(CC) $(CFLAGS) -o $@ $^ $(LDFLAGS)
|
||||
|
||||
test_objects: $(LEXER_OBJECTS) $(PARSER_OBJECTS) $(TYPES_OBJECTS) $(SEMANTIC_OBJECTS) $(IR_OBJECTS) $(RUNTIME_OBJECTS) $(TEST_OBJECTS_OBJECTS)
|
||||
$(CC) $(CFLAGS) -o $@ $^ $(LDFLAGS)
|
||||
|
||||
test_instance_methods: $(LEXER_OBJECTS) $(PARSER_OBJECTS) $(TYPES_OBJECTS) $(SEMANTIC_OBJECTS) $(IR_OBJECTS) $(RUNTIME_OBJECTS) $(TEST_INSTANCE_OBJECTS)
|
||||
$(CC) $(CFLAGS) -o $@ $^ $(LDFLAGS)
|
||||
|
||||
test_fileio: $(LEXER_OBJECTS) $(PARSER_OBJECTS) $(TYPES_OBJECTS) $(SEMANTIC_OBJECTS) $(IR_OBJECTS) $(RUNTIME_OBJECTS) $(TEST_FILEIO_OBJECTS)
|
||||
$(CC) $(CFLAGS) -o $@ $^ $(LDFLAGS)
|
||||
|
||||
%.o: %.c
|
||||
$(CC) $(CFLAGS) -c $< -o $@
|
||||
|
||||
TEST_BENCHMARK_SOURCES = tests/test_benchmark.c
|
||||
TEST_BENCHMARK_OBJECTS = $(TEST_BENCHMARK_SOURCES:.c=.o)
|
||||
|
||||
test_benchmark: $(LEXER_OBJECTS) $(PARSER_OBJECTS) $(TYPES_OBJECTS) $(SEMANTIC_OBJECTS) $(IR_OBJECTS) $(RUNTIME_OBJECTS) $(TEST_BENCHMARK_OBJECTS)
|
||||
$(CC) $(CFLAGS) -o $@ $^ $(LDFLAGS)
|
||||
|
||||
benchmark: test_benchmark
|
||||
@echo ""
|
||||
@echo "========================================"
|
||||
@echo " RAVA INTERPRETER"
|
||||
@echo "========================================"
|
||||
@./test_benchmark
|
||||
@echo ""
|
||||
@echo "========================================"
|
||||
@echo " PYTHON 3"
|
||||
@echo "========================================"
|
||||
@python3 examples/benchmark.py
|
||||
@echo ""
|
||||
|
||||
test_nanbox: tests/test_nanbox.c runtime/nanbox.h
|
||||
$(CC) $(CFLAGS) -o $@ tests/test_nanbox.c $(LDFLAGS)
|
||||
|
||||
test_fastframe: tests/test_fastframe.c runtime/fastframe.c runtime/nanbox.h runtime/fastframe.h
|
||||
$(CC) $(CFLAGS) -o $@ tests/test_fastframe.c runtime/fastframe.c $(LDFLAGS)
|
||||
|
||||
test_labeltable: tests/test_labeltable.c runtime/labeltable.c $(IR_OBJECTS) $(TYPES_OBJECTS) $(SEMANTIC_OBJECTS)
|
||||
$(CC) $(CFLAGS) -o $@ tests/test_labeltable.c runtime/labeltable.c $(IR_OBJECTS) $(TYPES_OBJECTS) $(SEMANTIC_OBJECTS) $(LDFLAGS)
|
||||
|
||||
test_methodcache: tests/test_methodcache.c runtime/methodcache.c runtime/methodcache.h
|
||||
$(CC) $(CFLAGS) -o $@ tests/test_methodcache.c runtime/methodcache.c $(LDFLAGS)
|
||||
|
||||
test_phase0: test_nanbox test_fastframe test_labeltable test_methodcache
|
||||
@echo "=== Running Phase 0 Tests ==="
|
||||
@./test_nanbox
|
||||
@./test_fastframe
|
||||
@./test_labeltable
|
||||
@./test_methodcache
|
||||
@echo "=== All Phase 0 Tests Passed ==="
|
||||
|
||||
ALL_SOURCES = $(LEXER_SOURCES) $(PARSER_SOURCES) $(TYPES_SOURCES) $(SEMANTIC_SOURCES) $(IR_SOURCES) $(RUNTIME_SOURCES) $(TEST_BENCHMARK_SOURCES)
|
||||
|
||||
test_benchmark_pgo_gen:
|
||||
rm -f *.gcda */*.gcda
|
||||
$(CC) -Wall -Wextra -std=gnu99 -O3 -march=native -I. -fprofile-generate -o test_benchmark_pgo $(ALL_SOURCES) $(LDFLAGS)
|
||||
|
||||
pgo_run: test_benchmark_pgo_gen
|
||||
./test_benchmark_pgo
|
||||
./test_benchmark_pgo
|
||||
./test_benchmark_pgo
|
||||
|
||||
test_benchmark_pgo: pgo_run
|
||||
$(CC) -Wall -Wextra -std=gnu99 -O3 -march=native -I. -fprofile-use -fprofile-correction -o test_benchmark_pgo $(ALL_SOURCES) $(LDFLAGS)
|
||||
|
||||
pgo: test_benchmark_pgo
|
||||
@echo "=== PGO Benchmark ==="
|
||||
./test_benchmark_pgo
|
||||
|
||||
clean:
|
||||
rm -f $(LEXER_OBJECTS) $(PARSER_OBJECTS) $(TYPES_OBJECTS) $(SEMANTIC_OBJECTS) $(IR_OBJECTS) $(RUNTIME_OBJECTS) \
|
||||
$(PHASE0_OBJECTS) \
|
||||
$(TEST_LEXER_OBJECTS) $(TEST_PARSER_OBJECTS) $(TEST_SEMANTIC_OBJECTS) $(TEST_IR_OBJECTS) $(TEST_RUNTIME_OBJECTS) \
|
||||
$(TEST_STRINGS_OBJECTS) $(TEST_ARRAYS_OBJECTS) $(TEST_OBJECTS_OBJECTS) $(TEST_INSTANCE_OBJECTS) $(TEST_FILEIO_OBJECTS) \
|
||||
$(TEST_BENCHMARK_OBJECTS) \
|
||||
test_lexer test_parser test_semantic test_ir test_runtime test_strings test_arrays test_objects test_instance_methods test_fileio test_benchmark \
|
||||
test_nanbox test_fastframe test_labeltable test_methodcache test_benchmark_pgo *.gcda */*.gcda
|
||||
|
||||
.PHONY: all clean benchmark test_phase0 pgo test_benchmark_pgo_gen pgo_run test_benchmark_pgo
|
||||
Reference in New Issue
Block a user