fixed double free of vector and parserlang and creating a parser by string should work now

This commit is contained in:
herbglitch 2024-12-04 00:54:24 -07:00
parent 5a5eaabc14
commit 4c3d357cb9
12 changed files with 298 additions and 82 deletions

View file

@ -46,6 +46,11 @@ typedef struct ARC_ParserTagToken {
*/
typedef void (* ARC_Parser_InitLexerRulesFn)(ARC_Lexer *lexer);
/**
* @brief TODO: write this
*/
typedef uint32_t (* ARC_Parser_GetStringIdFn)(ARC_String *string);
/**
* @brief TODO: write this
*/
@ -100,7 +105,7 @@ void ARC_Parser_CreateFromVector(ARC_Parser **parser, ARC_Vector *language, ARC_
* @param[in] language an arry of ARC_ParserLanguageTags defining a langauge
* @param[in] initLexerRulesFn a callback used to initalize the token rules the lexer within the parser will use
*/
void ARC_Parser_CreateFromString(ARC_Parser **parser, ARC_String *languageString, ARC_Parser_InitLexerRulesFn initLexerRulesFn);
void ARC_Parser_CreateFromString(ARC_Parser **parser, ARC_String *languageString, ARC_Parser_InitLexerRulesFn initLexerRulesFn, ARC_Parser_GetStringIdFn getStringIdFn, ARC_ParserData_CreateFn *createDataFn, ARC_ParserData_DestroyFn *destroyDataFn, void *userData);
/**
* @brief destroys an ARC_Parser type