testing some ideas for the parser
This commit is contained in:
parent
d69844dab1
commit
68c2fc7afb
2 changed files with 11 additions and 13 deletions
|
|
@ -38,11 +38,18 @@ typedef struct ARC_ParserTag {
|
||||||
|
|
||||||
uint32_t **tokensOrTags;
|
uint32_t **tokensOrTags;
|
||||||
uint32_t tokensOrTagsSize;
|
uint32_t tokensOrTagsSize;
|
||||||
|
|
||||||
ARC_ParserTag_AddDataFn *addDataFn;
|
|
||||||
void *addUserData;
|
|
||||||
} ARC_ParserTag;
|
} 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
|
* @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){
|
if(foundRule == ARC_True){
|
||||||
*lexerIndex = lexerCheckIndex;
|
*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
|
//free the found tokens vector
|
||||||
ARC_Vector_Destroy(foundTokens);
|
ARC_Vector_Destroy(foundTokens);
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue