Begin working on a table struct to hold information during runtime.
This commit is contained in:
parent
3254f5741f
commit
a27bdc37f5
|
@ -8,7 +8,7 @@ project(libabacus)
|
|||
|
||||
add_compile_options(-pedantic -Wall)
|
||||
|
||||
add_library(abacus STATIC src/lexer.c src/libabacus_util.c)
|
||||
add_library(abacus STATIC src/lexer.c src/libabacus_util.c src/table.c)
|
||||
add_executable(libabacus src/main.c)
|
||||
add_subdirectory(external/liblex)
|
||||
|
||||
|
|
61
include/table.h
Normal file
61
include/table.h
Normal file
|
@ -0,0 +1,61 @@
|
|||
#ifndef LIBABACUS_TABLE_H
|
||||
#define LIBABACUS_TABLE_H
|
||||
|
||||
#include "ht.h"
|
||||
#include "libabacus.h"
|
||||
|
||||
/**
|
||||
* A struct that represents a structure
|
||||
* similar to a symbol table. This structure
|
||||
* is used to keep track of definitions such
|
||||
* as types, functions, and variables in an
|
||||
* environment with scopes.
|
||||
*/
|
||||
struct table {
|
||||
/**
|
||||
* The "parent" scope of this table.
|
||||
*/
|
||||
struct table* parent;
|
||||
/**
|
||||
* The hash table used to store the data.
|
||||
*/
|
||||
ht table;
|
||||
};
|
||||
|
||||
/**
|
||||
* Enum that represents the type of a table
|
||||
* entry.
|
||||
*/
|
||||
enum table_entry_variant {
|
||||
ENTRY_VALUE,
|
||||
ENTRY_TYPE,
|
||||
ENTRY_FUNCTION
|
||||
};
|
||||
|
||||
/**
|
||||
* An entry in the table.
|
||||
*/
|
||||
struct table_entry {
|
||||
/**
|
||||
* The type of this entry.
|
||||
*/
|
||||
enum table_entry_variant variant;
|
||||
};
|
||||
|
||||
typedef struct table table;
|
||||
typedef enum table_entry_variant table_entry_variant;
|
||||
typedef struct table_entry table_entry;
|
||||
|
||||
/**
|
||||
* Initializes the given table.
|
||||
* @param table the table to initialize.
|
||||
*/
|
||||
void table_init(table* table);
|
||||
/**
|
||||
* Frees the resources allocated by the
|
||||
* given table.
|
||||
* @param table the table to free.
|
||||
*/
|
||||
void table_free(table* table);
|
||||
|
||||
#endif
|
11
src/table.c
Normal file
11
src/table.c
Normal file
|
@ -0,0 +1,11 @@
|
|||
#include "table.h"
|
||||
#include <stdlib.h>
|
||||
|
||||
void table_init(table* table) {
|
||||
ht_init(&table->table);
|
||||
table->parent = NULL;
|
||||
}
|
||||
|
||||
void table_free(table* table) {
|
||||
ht_free(&table->table);
|
||||
}
|
Loading…
Reference in New Issue
Block a user