Je suis en train de convertir une ligne a, f_1(b, c, f_2(d, e))
à une ligne avec fonction de style Lisp appel a (f_1 b c (f_2 d e))
en utilisant Text::Balanced
sous-routines:Perl: Convertir un appel de fonction à une fonction de style Lisp appel
Un appel de fonction est sous la forme f(arglist)
, arglist peut avoir un ou plusieurs appels de fonction en son sein avec des appels hiérarchiques aussi;
La façon dont j'ai essayé -
my $text = q|a, f_1(a, b, f_2(c, d))|;
my ($match, $remainder) = extract_bracketed($text); # defaults to '()'
# $match is not containing the text i want which is : a, b, f_2(c,d) because "(" is preceded by a string;
my ($d_match, $d_remainder) = extract_delimited($remainder,",");
# $d_match doesnt contain the the first string
# planning to use remainder texts from the bracketed and delimited operations in a loop to translate.
a même essayé le sous extract_tagged avec l'étiquette de départ comme /^[\w_0-9]+\(/
et balise de fin comme /\)/
, mais ne fonctionne pas là-bas aussi. Parse::RecDescent
est difficile à comprendre et à utiliser dans un court laps de temps.
Vous n'avez pas (cité) délimité littéraux. Vous n'avez aucune utilité pour 'extract_delimited'. Vous n'essayez même jamais d'extraire les identifiants ??? Je pense qu'il est temps que tu embauches quelqu'un. Vous n'avez pas le temps de faire notre travail pour écrire votre code. – ikegami