creation and destruction in parser, also added some stuff to gitingore

This commit is contained in:
herbglitch 2024-10-16 05:14:53 -06:00
parent 5842197142
commit 60acfd075a
6 changed files with 151 additions and 4 deletions

View file

@ -0,0 +1,41 @@
#include "arc/std/parser.h"
#include "arc/std/lexer.h"
#include <stdint.h>
#include <stdlib.h>
#include <string.h>
struct ARC_Parser {
ARC_Array language;
ARC_Lexer *lexer;
};
void ARC_Parser_Create(ARC_Parser **parser, ARC_Array *language){
*parser = (ARC_Parser *)malloc(sizeof(ARC_Parser));
//set the language size to 0 and data to NULL in case the language is NULL
(*parser)->language.size = 0;
(*parser)->language.data = NULL;
//if the language exists, copy the language
if(language != NULL){
(*parser)->language.size = language->size;
(*parser)->language.data = malloc(sizeof(ARC_ParserLanguageTag) * language->size);
memcpy((*parser)->language.data, language->data, language->size);
}
//create the lexer
ARC_Lexer_Create(&((*parser)->lexer));
//TODO: register instructions to the lexer
//TODO: probs want to pass in a callback for this
}
void ARC_Parser_Destroy(ARC_Parser *parser){
free(parser->language.data);
ARC_Lexer_Destroy(parser->lexer);
free(parser);
}