J'ai fait de mon mieux pour inclure toutes (et seulement) les informations nécessaires. Faites-moi savoir si voir plus pourrait vous aider à m'aider.erreur logique de flex/C++ regex
J'ai des problèmes avec mon regex. Mon programme imprime dans un fichier .txt lexème - paires de jetons. Tout fonctionne correctement, sauf pour les identificateurs et les entiers. Par exemple, le jeton pour un identifiant est 262.
fichier d'entrée de l'échantillon:
function main a: integer returns integer;
b: integer is a * 2;
Exemple de sortie:
function - 269
maina - 262
integer - 272
returns - 274
integer - 272
; - 59
b - 262
integer - 272
is - 271
a - 262
2 - 263
; - 59
sortie correcte serait:
function - 269
main - 262
a - 262
: - 58
integer - 272
returns - 274
integer - 272
; - 59
b - 262
: - 58
integer - 272
is - 271
a - 262
* - 261
2 - 263
; - 59
Résumer , il combine deux identifiants séparés par un espace blanc, et il supprime également tout jeton après l'identifiant.
Votre commentaire sur la façon de mettre les mots-clés avant l'identificateur a été utile, mais le fait de caler les noms n'a pas changé les problèmes de sortie. –
Peu importe. Je suis revenu à ma vieille fonction en utilisant vos corrections regex et cela a fonctionné. Merci! –