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:
2025-12-02 05:54:32 +00:00
commit f9c7a0fa78
58 changed files with 9092 additions and 0 deletions
+160
View File
@@ -0,0 +1,160 @@
#ifndef RAVA_LEXER_H
#define RAVA_LEXER_H
#include <stddef.h>
#include <stdint.h>
#include <stdbool.h>
typedef enum {
RAVA_TOKEN_EOF,
RAVA_TOKEN_KEYWORD_ABSTRACT,
RAVA_TOKEN_KEYWORD_ASSERT,
RAVA_TOKEN_KEYWORD_BOOLEAN,
RAVA_TOKEN_KEYWORD_BREAK,
RAVA_TOKEN_KEYWORD_BYTE,
RAVA_TOKEN_KEYWORD_CASE,
RAVA_TOKEN_KEYWORD_CATCH,
RAVA_TOKEN_KEYWORD_CHAR,
RAVA_TOKEN_KEYWORD_CLASS,
RAVA_TOKEN_KEYWORD_CONST,
RAVA_TOKEN_KEYWORD_CONTINUE,
RAVA_TOKEN_KEYWORD_DEFAULT,
RAVA_TOKEN_KEYWORD_DO,
RAVA_TOKEN_KEYWORD_DOUBLE,
RAVA_TOKEN_KEYWORD_ELSE,
RAVA_TOKEN_KEYWORD_ENUM,
RAVA_TOKEN_KEYWORD_EXTENDS,
RAVA_TOKEN_KEYWORD_FINAL,
RAVA_TOKEN_KEYWORD_FINALLY,
RAVA_TOKEN_KEYWORD_FLOAT,
RAVA_TOKEN_KEYWORD_FOR,
RAVA_TOKEN_KEYWORD_GOTO,
RAVA_TOKEN_KEYWORD_IF,
RAVA_TOKEN_KEYWORD_IMPLEMENTS,
RAVA_TOKEN_KEYWORD_IMPORT,
RAVA_TOKEN_KEYWORD_INSTANCEOF,
RAVA_TOKEN_KEYWORD_INT,
RAVA_TOKEN_KEYWORD_INTERFACE,
RAVA_TOKEN_KEYWORD_LONG,
RAVA_TOKEN_KEYWORD_NATIVE,
RAVA_TOKEN_KEYWORD_NEW,
RAVA_TOKEN_KEYWORD_PACKAGE,
RAVA_TOKEN_KEYWORD_PRIVATE,
RAVA_TOKEN_KEYWORD_PROTECTED,
RAVA_TOKEN_KEYWORD_PUBLIC,
RAVA_TOKEN_KEYWORD_RETURN,
RAVA_TOKEN_KEYWORD_SHORT,
RAVA_TOKEN_KEYWORD_STATIC,
RAVA_TOKEN_KEYWORD_STRICTFP,
RAVA_TOKEN_KEYWORD_SUPER,
RAVA_TOKEN_KEYWORD_SWITCH,
RAVA_TOKEN_KEYWORD_SYNCHRONIZED,
RAVA_TOKEN_KEYWORD_THIS,
RAVA_TOKEN_KEYWORD_THROW,
RAVA_TOKEN_KEYWORD_THROWS,
RAVA_TOKEN_KEYWORD_TRANSIENT,
RAVA_TOKEN_KEYWORD_TRY,
RAVA_TOKEN_KEYWORD_VOID,
RAVA_TOKEN_KEYWORD_VOLATILE,
RAVA_TOKEN_KEYWORD_WHILE,
RAVA_TOKEN_LITERAL_TRUE,
RAVA_TOKEN_LITERAL_FALSE,
RAVA_TOKEN_LITERAL_NULL,
RAVA_TOKEN_LITERAL_INTEGER,
RAVA_TOKEN_LITERAL_LONG,
RAVA_TOKEN_LITERAL_FLOAT,
RAVA_TOKEN_LITERAL_DOUBLE,
RAVA_TOKEN_LITERAL_CHARACTER,
RAVA_TOKEN_LITERAL_STRING,
RAVA_TOKEN_IDENTIFIER,
RAVA_TOKEN_LPAREN,
RAVA_TOKEN_RPAREN,
RAVA_TOKEN_LBRACE,
RAVA_TOKEN_RBRACE,
RAVA_TOKEN_LBRACKET,
RAVA_TOKEN_RBRACKET,
RAVA_TOKEN_SEMICOLON,
RAVA_TOKEN_COMMA,
RAVA_TOKEN_DOT,
RAVA_TOKEN_ELLIPSIS,
RAVA_TOKEN_AT,
RAVA_TOKEN_COLONCOLON,
RAVA_TOKEN_ASSIGN,
RAVA_TOKEN_GT,
RAVA_TOKEN_LT,
RAVA_TOKEN_BANG,
RAVA_TOKEN_TILDE,
RAVA_TOKEN_QUESTION,
RAVA_TOKEN_COLON,
RAVA_TOKEN_ARROW,
RAVA_TOKEN_EQUAL,
RAVA_TOKEN_GE,
RAVA_TOKEN_LE,
RAVA_TOKEN_NE,
RAVA_TOKEN_AND,
RAVA_TOKEN_OR,
RAVA_TOKEN_INC,
RAVA_TOKEN_DEC,
RAVA_TOKEN_PLUS,
RAVA_TOKEN_MINUS,
RAVA_TOKEN_STAR,
RAVA_TOKEN_SLASH,
RAVA_TOKEN_AMP,
RAVA_TOKEN_PIPE,
RAVA_TOKEN_CARET,
RAVA_TOKEN_PERCENT,
RAVA_TOKEN_LSHIFT,
RAVA_TOKEN_RSHIFT,
RAVA_TOKEN_URSHIFT,
RAVA_TOKEN_PLUSASSIGN,
RAVA_TOKEN_MINUSASSIGN,
RAVA_TOKEN_STARASSIGN,
RAVA_TOKEN_SLASHASSIGN,
RAVA_TOKEN_ANDASSIGN,
RAVA_TOKEN_ORASSIGN,
RAVA_TOKEN_CARETASSIGN,
RAVA_TOKEN_PERCENTASSIGN,
RAVA_TOKEN_LSHIFTASSIGN,
RAVA_TOKEN_RSHIFTASSIGN,
RAVA_TOKEN_URSHIFTASSIGN,
RAVA_TOKEN_ERROR
} RavaTokenType_e;
typedef union {
int64_t int_value;
double float_value;
char *string_value;
char char_value;
} RavaLiteralValue_u;
typedef struct {
RavaTokenType_e type;
char *lexeme;
int line;
int column;
RavaLiteralValue_u value;
} RavaToken_t;
typedef struct {
const char *source;
size_t source_length;
size_t current;
size_t start;
int line;
int column;
int start_column;
char *error_message;
} RavaLexer_t;
RavaLexer_t* rava_lexer_create(const char *source);
void rava_lexer_destroy(RavaLexer_t *lexer);
RavaToken_t* rava_lexer_next_token(RavaLexer_t *lexer);
void rava_token_destroy(RavaToken_t *token);
#endif