AntLtr parser et probléme étrange

AntLtr parser et probléme étrange - C++ - Programmation

Marsh Posté le 09-03-2021 à 21:35:49    

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 :
  1. CParser::TypeSpecifierContext * et = pp->typeSpecifier();
  2.  CParser::TypeSpecifierContext * lastet = NULL;
  3.  while (et != NULL)
  4.  {
  5. #ifdef _DEBUG
  6.   sdebug = et->getText();
  7. #endif
  8.   et = et->typeSpecifier();
  9.  }


 

Code :
  1. CParser::TranslationUnitContext *uv = ef->translationUnit();
  2. while (uv != NULL)
  3. {
  4.  size_t ss = uv->getRuleIndex();
  5. #ifdef _DEBUG
  6.  dbg = uv->getText();
  7. #endif
  8.  CParser::ExternalDeclarationContext *dextrnctx = uv->externalDeclaration();
  9.  if (dextrnctx != NULL)
  10.  {
  11. #ifdef _DEBUG
  12.   dbg = dextrnctx->getText();
  13. #endif
  14.   CParser::FunctionDefinitionContext *func=dextrnctx->functionDefinition();
  15.   if (func != NULL)
  16.   {
  17. #ifdef _DEBUG
  18.    dbg = func->getText();
  19. #endif
  20.   }
  21.   CParser::DeclarationContext  *dextrn = dextrnctx->declaration();
  22.   if (dextrn != NULL)
  23.   {
  24. #ifdef _DEBUG
  25.    dbg = dextrn->getText();
  26. #endif
  27.     DefTypeFromDecalarationContext(cc, dextrn, &cc->dvarandtyp);
  28.   }
  29.   //cc->HVAR = DefTypeFromDecalarationContextUntilCompoundStatementContext(cc, ef, CN_EXTERNAL_DECLARATION_CONTEXT_VAR_MAIN);
  30.  }
  31.  uv = uv->translationUnit();
  32. }
  33. 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
Reply

Marsh Posté le 09-03-2021 à 21:35:49   

Reply

Marsh Posté le 12-03-2021 à 17:53:22    

Ca dépend de l'implémentation de ta grammaire.


---------------
"I can cry like Roger. It's just a shame I can't play like him" - Andy Murray, 2010
Reply

Marsh Posté le 13-03-2021 à 20:51:16    

ca vient pourtant de la grammaire fournit par Antltr, c'est à dire le fichier c.g4 télégarger dans github AntLtr

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed