2010-02-24 19 views
1

J'ai ajouté le nouveau jeton RATIONAL qui reconnaît les nombres rationnels sur mon analyseur JavaCC. Comment puis-je mettre à jour la partie de sortie du programme pour imprimer la valeur numérique du nombre rationnel?Comment mettre à jour et imprimer un jeton 'Rational' dans javacc?

Par exemple ('2/5') valeur = 0,4, ('8/2') valeur = 4,0, ('4/0') valeur = infini.

Je serais reconnaissant si quelqu'un pouvait m'aider. Merci.

Répondre

1

Vous devez diviser davantage l'image de votre jeton RATIONAL afin d'avoir les deux nombres disponibles pour le calcul.

Votre question ne précise pas si les parenthèses et les guillemets font partie de la syntaxe définie. Si c'est le cas, vous pouvez facilement les définir comme des délimiteurs pour une expression rationnelle et définir des jetons pour les nombres et la barre oblique. En cas d'ambiguïté avec d'autres endroits où les nombres peuvent apparaître, rappelez-vous que les états lexicaux sont vos amis.

Si une expression rationnelle est simplement composée de deux nombres séparés par une barre oblique, alors je recommanderais de construire un AST et de l'évaluer une fois l'analyse terminée. Vous pouvez l'évaluer alternativement pendant l'analyse, mais la difficulté de ceci dépend du reste de votre grammaire.