Salut,
Je suis en train de faire mon traducteur de sources AS => C++ (il est quasiment finit à vrai dire) mais je n'arrive pas à le finaliser à cause d'un petit détails.
J'ai du mal à faire la regex pour récupérer les lignes de déclaration des variables.
Voici quelques exemples de ligne que je dois pouvoir récupérer avec la même regex :
Cliquez pour révéler
Cliquez pour masquer
var _loc2_:uint = 0;
var _loc7_:* = 0;
var _loc2_:uint = param1.readByte();
Voici la regex que j'ai mis en place :
var ([_]?\w+[_]?):(.\S+)=?(.*);
Je veux donc récupérer le nom de la variable, son type et sa valeur.
J'arrive presque à tout bien récupérer sauf sa valeur, en général je récupère un truc du genre " = 0" pour les int ... En gros je récupère la chaine " = " en trop.
Et pour le type "*" je récupère rien de bien ...
J'ai beau essayer je trouve rien de satisfaisant ... (Je suis débutant en regex, je les applique pour la première fois)
Merci !
PS: je partagerai certainement mon traducteur par la suite :)
EDIT:
Solution trouvée grace à l'aide de Labo
pour les variables de classe :
(public|private) var _?([\w\d]+):([\w\d\.<>\*]+)[ = ]*([^;]*);
pour les variables de fonctions/méthodes :
var _?([\w\d]+):([\w\d\.<>\*]+)[ = ]*([^;]*);
Utilisez (en C++) les chaines brutes pour vos regex c'est bien plus simple :
R"((public|private) var _?([\w\d]+):([\w\d\.<>\*]+)[ = ]*([^;]*);)"