Je suis assez familier avec Antlr 2.X et les cibles Anthar 3.1.X CSharp et python.Quel est l'équivalent d'exécution Antlr3 C de lancer une exception pour le rapport d'erreurs
Cependant, je suis maintenant obligé d'utiliser la cible Antlr 3 C pour un projet.
Mon problème est de savoir comment signaler les erreurs dans ma grammaire ou grammaire d'arborescence. Considérons une règle qui correspond à un jeton et que nous l'avons placée dans une carte. Nous voulons nous assurer que le jeton est unique. Normalement, je lance une exception si le jeton est déjà dans la carte et attrape l'exception en dehors de l'analyseur syntaxique pour signaler l'erreur.
Quel est l'équivalent d'exécution de Antlr C de la règle suivante?
token_match: ID
{
if(mp.find($ID.Text))
throw std::exception("Non unique token found");
}
Merci pour la réponse. Juste une note, mon problème n'est pas de surcharger ces membres, cela a été fait :) Ma question est avec ma propre validation en code natif. Lancer une exception est-il la bonne façon de signaler une erreur? – chollida