parser fixed (still probably needs more testing, but current tests work), parserlang still not working
This commit is contained in:
parent
6d64a17b1d
commit
84c4dffc85
4 changed files with 153 additions and 161 deletions
|
|
@ -15,21 +15,6 @@ extern "C" {
|
|||
*/
|
||||
typedef struct ARC_Parser ARC_Parser;
|
||||
|
||||
/**
|
||||
* @brief TODO: write this
|
||||
*/
|
||||
typedef void (* ARC_ParserData_CreateFn)(void **data);
|
||||
|
||||
/**
|
||||
* @brief TODO: write this
|
||||
*/
|
||||
typedef void (* ARC_ParserData_DestroyFn)(void *data);
|
||||
|
||||
/**
|
||||
* @brief TODO: write this
|
||||
*/
|
||||
typedef void (* ARC_ParserTag_AddDataFn)(void **data, uint32_t tagId, uint32_t tagIndex, ARC_LexerToken *token, void *userData);
|
||||
|
||||
/**
|
||||
* @brief a langue tag type for the parser //TODO: explain this better
|
||||
*/
|
||||
|
|
@ -41,7 +26,11 @@ typedef struct ARC_ParserTag {
|
|||
} ARC_ParserTag;
|
||||
|
||||
/*
|
||||
* @brief
|
||||
* @brief a parser type used inside of the parser data create function
|
||||
*
|
||||
* @note there are no public creation and destruction functions for this type as it is only ment to be used within the creation callback
|
||||
* @note if the parser tag token is a token then tagTokens will be NULL
|
||||
* @note if the parser tag token is a tag then token will be NULL
|
||||
*/
|
||||
typedef struct ARC_ParserTagToken {
|
||||
uint32_t id;
|
||||
|
|
@ -57,6 +46,16 @@ typedef struct ARC_ParserTagToken {
|
|||
*/
|
||||
typedef void (* ARC_Parser_InitLexerRulesFn)(ARC_Lexer *lexer);
|
||||
|
||||
/**
|
||||
* @brief TODO: write this
|
||||
*/
|
||||
typedef void (* ARC_ParserData_CreateFn)(void **data, ARC_ParserTagToken *parsedData, void *userData);
|
||||
|
||||
/**
|
||||
* @brief TODO: write this
|
||||
*/
|
||||
typedef void (* ARC_ParserData_DestroyFn)(void *data);
|
||||
|
||||
/**
|
||||
* @brief creates an ARC_Parser type
|
||||
*
|
||||
|
|
@ -77,7 +76,7 @@ typedef void (* ARC_Parser_InitLexerRulesFn)(ARC_Lexer *lexer);
|
|||
* @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, ARC_ParserData_DestroyFn *destroyDataFn);
|
||||
void ARC_Parser_Create(ARC_Parser **parser, ARC_Array *language, ARC_Parser_InitLexerRulesFn initLexerRulesFn, ARC_ParserData_CreateFn *createDataFn, void *createUserData, ARC_ParserData_DestroyFn *destroyDataFn);
|
||||
|
||||
/**
|
||||
* @brief creates an ARC_Parser type from an arc vector
|
||||
|
|
@ -86,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, ARC_ParserData_DestroyFn *destroyDataFn);
|
||||
void ARC_Parser_CreateFromVector(ARC_Parser **parser, ARC_Vector *language, ARC_Parser_InitLexerRulesFn initLexerRulesFn, ARC_ParserData_CreateFn *createDataFn, void *createUserData, ARC_ParserData_DestroyFn *destroyDataFn);
|
||||
|
||||
/**
|
||||
* @brief creates an ARC_Parser type from a string
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue