Bonjour,
JJ'ai tester l'API AntLTR 4.7.2 en suivant la documentation --> ca fonctionne bien.
J'écris un compilateur et
j'ai un soucis :
Code :
- CParser::TypeSpecifierContext * et = pp->typeSpecifier();
- CParser::TypeSpecifierContext * lastet = NULL;
- while (et != NULL)
- {
- #ifdef _DEBUG
- sdebug = et->getText();
- #endif
- et = et->typeSpecifier();
- }
|
Code :
- CParser::TranslationUnitContext *uv = ef->translationUnit();
- while (uv != NULL)
- {
- size_t ss = uv->getRuleIndex();
- #ifdef _DEBUG
- dbg = uv->getText();
- #endif
- CParser::ExternalDeclarationContext *dextrnctx = uv->externalDeclaration();
- if (dextrnctx != NULL)
- {
- #ifdef _DEBUG
- dbg = dextrnctx->getText();
- #endif
- CParser::FunctionDefinitionContext *func=dextrnctx->functionDefinition();
- if (func != NULL)
- {
- #ifdef _DEBUG
- dbg = func->getText();
- #endif
- }
- CParser::DeclarationContext *dextrn = dextrnctx->declaration();
- if (dextrn != NULL)
- {
- #ifdef _DEBUG
- dbg = dextrn->getText();
- #endif
- DefTypeFromDecalarationContext(cc, dextrn, &cc->dvarandtyp);
- }
- //cc->HVAR = DefTypeFromDecalarationContextUntilCompoundStatementContext(cc, ef, CN_EXTERNAL_DECLARATION_CONTEXT_VAR_MAIN);
- }
- uv = uv->translationUnit();
- }
- return ret;
|
Ca marche , mais ca retourne à l'envers c'est à dire ca part de la fin vers le début.
Pourquoi ? Est ce normal ? Comment faire ?
Je ne veux pas passer par les visiteurs car c'est un peu trop complexes
Merci.
Message édité par yann58 le 09-03-2021 à 21:36:56