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:
+160
@@ -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
|
||||
Reference in New Issue
Block a user