Je fais un travail avec la génération de code, et l'une des choses que je dois faire est de créer un appel de fonction où l'un des paramètres est un appel de fonction, comme ceci:N'importe quel moyen d'obtenir TStringList.CommaText pour ne pas échapper les virgules avec des guillemets?
result := Func1(x, y, Func2(a, b, c));
TStringList.CommaText est très utile pour générer des listes de paramètres, mais quand je traverse l'arbre pour construire l'appel de fonction externe, ce que je finis avec ressemble à ceci:
result := Func1(x, y, "Func2(a, b, c)");
il est cité le troisième argument, car il contient des virgules, et produit code invalide. Mais je ne peux pas faire quelque chose de simpliste comme StringReplace toutes les guillemets doubles avec des chaînes vides, car il est tout à fait possible qu'un argument de fonction puisse être une chaîne avec des guillemets à l'intérieur. Y a-t-il un moyen de ne pas échapper aux lignes contenant des virgules?
Vous pouvez analyser avec une expression régulière? – Remko
... et alors j'aurais deux problèmes. : P –
@Remko, il génère du * code *, sans l'analyser. S'il est courant que vous analysiez immédiatement le code que vous venez de générer, vous vous trompez. –