bout halfway complete with parserlang, also added userdata to parser

This commit is contained in:
herbglitch 2024-12-02 02:34:01 -07:00
parent 7cfea02681
commit 16821e8411
6 changed files with 190 additions and 44 deletions

View file

@ -54,7 +54,7 @@ typedef void (* ARC_ParserData_CreateFn)(void **data, ARC_ParserTagToken *parsed
/**
* @brief TODO: write this
*/
typedef void (* ARC_ParserData_DestroyFn)(void *data);
typedef void (* ARC_ParserData_DestroyFn)(void *data, void *userData);
/**
* @brief creates an ARC_Parser type
@ -76,7 +76,7 @@ typedef void (* ARC_ParserData_DestroyFn)(void *data);
* @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_Create(ARC_Parser **parser, ARC_Array *language, ARC_Parser_InitLexerRulesFn initLexerRulesFn, ARC_ParserData_CreateFn *createDataFn, void *createUserData, ARC_ParserData_DestroyFn *destroyDataFn);
void ARC_Parser_Create(ARC_Parser **parser, ARC_Array *language, ARC_Parser_InitLexerRulesFn initLexerRulesFn, ARC_ParserData_CreateFn *createDataFn, ARC_ParserData_DestroyFn *destroyDataFn, void *userData);
/**
* @brief creates an ARC_Parser type from an arc vector
@ -85,7 +85,7 @@ void ARC_Parser_Create(ARC_Parser **parser, ARC_Array *language, ARC_Parser_Init
* @param[in] language an vector 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_CreateFromVector(ARC_Parser **parser, ARC_Vector *language, ARC_Parser_InitLexerRulesFn initLexerRulesFn, ARC_ParserData_CreateFn *createDataFn, void *createUserData, ARC_ParserData_DestroyFn *destroyDataFn);
void ARC_Parser_CreateFromVector(ARC_Parser **parser, ARC_Vector *language, ARC_Parser_InitLexerRulesFn initLexerRulesFn, ARC_ParserData_CreateFn *createDataFn, ARC_ParserData_DestroyFn *destroyDataFn, void *userData);
/**
* @brief creates an ARC_Parser type from a string

View file

@ -29,7 +29,7 @@ extern "C" {
/*
* @brief
*/
typedef uint32_t (* ARC_ParserLang_GetConstId)(ARC_String *constant);
typedef uint32_t (* ARC_ParserLang_GetIdFn)(ARC_String *constant);
/*
* @brief creates a parser for the Parser Lang
@ -39,7 +39,7 @@ typedef uint32_t (* ARC_ParserLang_GetConstId)(ARC_String *constant);
*
* @param[out] parser the parser to create
*/
void ARC_Parser_CreateAsParserLang(ARC_Parser **parser);
void ARC_Parser_CreateAsParserLang(ARC_Parser **parser, ARC_ParserLang_GetIdFn getIdFn);
#define ARC_PARSERLANG_TOKEN_NULL 0
#define ARC_PARSERLANG_TOKEN_NUMBER 1