testing some ideas for the parser
This commit is contained in:
parent
d69844dab1
commit
68c2fc7afb
2 changed files with 11 additions and 13 deletions
|
|
@ -37,12 +37,19 @@ typedef struct ARC_ParserTag {
|
|||
uint32_t tagId;
|
||||
|
||||
uint32_t **tokensOrTags;
|
||||
uint32_t tokensOrTagsSize;
|
||||
|
||||
ARC_ParserTag_AddDataFn *addDataFn;
|
||||
void *addUserData;
|
||||
uint32_t tokensOrTagsSize;
|
||||
} 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
|
||||
*
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue