testing some ideas for the parser

This commit is contained in:
herbglitch 2024-11-29 13:38:32 -07:00
parent d69844dab1
commit 68c2fc7afb
2 changed files with 11 additions and 13 deletions

View file

@ -38,11 +38,18 @@ typedef struct ARC_ParserTag {
uint32_t **tokensOrTags;
uint32_t tokensOrTagsSize;
ARC_ParserTag_AddDataFn *addDataFn;
void *addUserData;
} ARC_ParserTag;
/*
* @brief
*/
typedef struct ARC_ParserTagToken {
uint32_t id;
ARC_LexerToken *token;
ARC_Vector *tagTokens;
} ARC_ParserTagToken;
/**
* @brief a callback function to initialize the lexer the parser uses with rules
*

View file

@ -220,15 +220,6 @@ ARC_Bool ARC_Parser_ParseTag(ARC_Parser *parser, uint32_t *lexerIndex, uint32_t
if(foundRule == ARC_True){
*lexerIndex = lexerCheckIndex;
//if there is an addDataFunction for the tag, add the tokens
if(tag->addDataFn != NULL){
//iterate through the tokens with the add callback
for(uint32_t index = 0; index < ARC_Vector_GetSize(foundTokens); index++){
ARC_LexerToken *token = (ARC_LexerToken *)ARC_Vector_Get(foundTokens, index);
(*(tag->addDataFn))(&(parser->data), tagId, index, token, tag->addUserData);
}
}
//free the found tokens vector
ARC_Vector_Destroy(foundTokens);