Je souhaite extraire toutes les références de nom de colonne trouvées dans une formule JMP dans une liste, identifier spécifiquement ses dépendances de colonne. Les formules JMP peuvent être assez complexes ; par exemple, ils peuvent créer du code JSL comme sortie incluant les noms de colonnes. Je ne suis pas intéressé par ces noms de colonnes car la formule n'en dépend pas. Je ne m'intéresse qu'aux noms de colonnes qu'il utilise pour calculer le résultat. Existe-t-il un moyen simple de procéder sans analyser la formule par programmation ?
Voici un croquis de mon plan initial.
Convertissez la formule en chaîne et recherchez trois éléments : :,
!", \!".
- Supprimez d’abord toutes les citations. Trouvez d'abord \!" sans un : précédent, puis trouvez le \!" correspondant. sans précédent : et sans guillemets à évasions multiples. Reconnaissez ceci comme citation dans la formule et supprimez-le (ou ignorez-le). Puis répétez pour toute la formule
- Recherchez ensuite les noms dans la chaîne
- Si : est trouvé, continuez jusqu'à ce qu'un caractère « de rupture de nom », tel qu'une virgule, soit trouvé. Stocker comme l'un des noms au format chaîne
- Si
!" est trouvé, continuez jusqu'à ce que \!"n soit trouvé. Stockez la chaîne de nom comme l'un des noms
- Enfin, dédupliquez la liste des noms afin qu'ils soient uniques.
Existe-t-il une manière plus élégante de procéder ?
Si ce n’est pas le cas, qu’est-ce qui pourrait mal se passer avec ce qui précède ? Existe-t-il d'autres manières de spécifier un nom de colonne dans une formule ?
Je suis prêt à supposer que la formule a été créée par pointer-cliquer traditionnel dans l'éditeur de formule et n'utilise pas de code JSL. Ainsi, par exemple, le code JSL qui utilise Parse() dans la formule pour résoudre une référence de colonne serait hors de portée. Mais ce serait bien s'il pouvait le faire aussi
.